
Utilizzando i nuovi comandi per il NE-DOS appositamente creati, è possibile cancellare il file
corrente (comando PRNRESET/CMD
3
) e anche importare il file NEZ80_PRN all’interno di
un disco NE-DOS per leggerlo senza dover usare un PC esterno (comando SDCOPY/CMD
4
).
La decodifica della porta 0x03 avviene in lettura (STATUS) e scrittura (DATI) tramite la
CPLD e il firmware sulla ESP32 sarà attivato per simulare le operazioni di stampa. Quando
viene inviato un byte sulla porta 0x03 e il bit7 è settato ad 1, il carattere (a 7 bit) viene aggiunto
al file della stampante come se fosse stato inviato su carta. Se la stessa porta viene letta, questa
indicherà se la stampante è pronta ad accettare altri dati o è occupata; nel nostro caso sarà
sempre pronta (non esistono parti meccaniche in movimento e le operazioni sono sincronizzate
con la WAIT) e quindi sarà possibile accettare un altro carattere immediatamente.
Dato che viene unicamente utilizzata la porta 0x03 per la stampa, questa operazione è del tutto
trasparente rispetto al comando o software utilizzato. Ad esempio, il comando LLIST del
BASIC invierà il listato del programma BASIC in memoria alla porta 0x03 e quindi al file su
SDCARD senza altri accorgimenti; anche il comando DISKTEST/CMD del NE-DOS, ad
esempio, potrà inviare l’output alla stampante accodandolo al file su SDCARD.
Nel dettaglio, se viene rilevato un interrupt in lettura da porta 0x03 (cpuAddr = 0x03), viene
memorizzata una richiesta di lettura dello STATUS e, durante la gestione della richiesta, viene
restituito alla CPU il contenuto della variabile associata il cui bit0 (BUSY) è sempre resettato,
indicando che la stampante è pronta a stampare (assunzione di default)
cpuData = regPRN[RGPR_STATUS]; // Vale sempre 0
Il BASIC 16 K per la stampa di un carattere, ad esempio, entra in questo loop
WRCHLP
CALL PRRDIN
JR NZ,WRCHLP
...
PRRDIN IN A,PORT_PRINT
AND 0x01