lunedì 12 marzo 2018

Programmare HP 95LX

In questo post avevo mostrato un esempio di retrocomputing, un HP 95 LX pocket computer MS-DOS 8088 compatibile.


In questa foto si vede il programma funzionare ma per un errore sul puntatore di fine stringa viene mostrato anche il contenuto della memoria....una cosa che succedeva in ASM su MS-DOS 


Come indicato nella memoria e' disponibile solo COMMAND.COM e non ci sono comandi MS-DOS esterni quindi nemmeno EDLIN od altri editor piu' complessi e non era disponibile nemmeno un compilatore (tipo GW-Basic).....il problema e' che volevo provare a farci girare un mio programma.

Il problema di non avere un editor e' stato risolto con il comando interno DOS

COPY CON nome_file

Dopo aver dato invio tutti gli input da tastiera vengono inviati al file. Per terminare CTRL+Z ed Invio

Per creare un programma eseguibile si puo' usare COPY CON ed inputare codici in linguaggio macchina. Per esempio si prende un semplice programma Assembler

     org  0x100        ; .com files always start 256 bytes into the segment

    ; int 21h is going to want...

    mov  dx, msg      ; the address of or message in dx
    mov  ah, 9        ; ah=9 - "print string" sub-function
    int  0x21         ; call dos services

    mov  dl, 0x0d     ; put CR into dl
    mov  ah, 2        ; ah=2 - "print character" sub-function
    int  0x21         ; call dos services

    mov  dl, 0x0     ; put LF into dl
    mov  ah, 2        ; ah=2 - "print character" sub-function
    int  0x21         ; call dos services

    mov  ah, 0x4c     ; "terminate program" sub-function
    int  0x21         ; call dos services

Lo si compila su una macchina ospite e con un editor esadecimale si legge il risultato che e' qualcosa del tipo

Fino a qui la cosa potrebbe anche funzionare ma ci si ferma subito perche' si vede che alcuni codici non sono presenti sulla tastiera...come fare l'input di tali codici?? Mi sono ricordato che ai tempi del Turbo Pascal 5.0 su M24 per fare le parentesi graffe (non presenti sulla tastiera italiana) all'epoca usavo la conbinazione ALT+123. 

Cosi convertendo in decimale l'output esadecimale del compilatore e digitando ognuno dei numeri seguenti preceduti da ALT ed usando COPY CON si puo' creare un file .COM eseguibile

--------------------------------------------------------
186
23
1
180
9
205
33
178
13
180
2
205
33
178
5
180

2
205
33
180
76
205
33
76
117
99
97
36
--------------------------------------------------------

complicato ma funzionante


Nessun commento:

Posta un commento