XEQ START START ORG 0FE10H PUSH PSW ;SAVE REGISTERS PUSH H PUSH D PUSH B MVI A,01H STA OPORT ;SET OUTPUT TO SERIAL PORT LXI H,0CC00H ;SCREEN MEM ADDR LDA BOTL ;TEXT LINE OFFSET CPI 00H JZ CONT LXI D,0040H ;PUT CHAR/LINE IN D&E CONT DAD D ;ADD TO H&L DECR A JZ CONT ;START OF TEXT IN H&L JMP CONT1 ;CONTINUE IF NOT CONT LXI D,4011H ;CHARS & LINES IN D&E NXTLN CALL CRLF ;GET CRET & LF MOV A,H CPI 0D0H ;STILL WITHIN SCR MEM? CZ RESET ;RESET H&L IF NOT DCR E ;DECR LINE COUNT JZ CLOSE ;DONE MVI D,040H ;RESET CHAR COUNT CONT2 MOV B,M ;GET CHAR CALL WRITE ;AND OUTPUT IT INX H ;INCR MEM POINTER DCR D ;DECR CHAR POINTER JZ NXTLN ;START NEW LN IF DONE JMP CONT2 ;OTHERWISE NEXT CHAR RESET LXI H,0CC00H ;RESTORE H&L TO START OF SCR MEM RET . * CLOSE MVI ;A,00H STA OPORT POP B ;RESTORE REGISTERS POP D POP H POP PSW RET . ;RET TO CALLING PROGRAM * * I/O UTILITIES * CRLF EQU 0C2F9H OPORT EQU OC807H ;01 IS PRINTER WRITE EQU 0C019H ;SOUT IN SOLOS BOTL EQU 08C8H ;LINE # BEGINNING OF TEXT * BOTL EQU 0C80AH FOR SOLOS VIDEO DRIVER * 08C8H FOR BASIC INTERNAL DRIVER