05 *= $3000 ARBITRARY START 10 ;THIS ROUTINE PRINTS A LINE TO THE PRINTER BY CALLING SIO E459 20 SIOV = $E459 ; SIO VECTOR 30 CR = $9B ; EOL 40 PRNTID = $40 ; PRINTER SERIAL BUS ID 45 MODE = $4E ; NORMAL MODE 50 PTIMOT = $001C ; TIMEOUT LOCATION 60 DDEVIC = $300 ; DEVICE SERIAL BUS ID 70 DUNIT = $301 ; SERIAL UNIT NUMBER 80 DCOMND = $302 ; SIO COMMAND 90 DSTATS = $303 ; SIO DATA DIRECTION 0100 DBUFLO = $304 ; BUFFER LOW ADDRESS 0110 DBUFHI = $305 ; BUFFER HIGH ADDRESS 0120 DTIMLO = $306 ; SIO TIMEOUT 0130 DTIMHI = $307 0140 DBYTLO = $308 ; BUFFER LENGTH 0150 DBYTHI = $309 0160 DAUX1 = $30A ; AUXILARY BYTE---PRINTER MODE 0170 DAUX2 = $30B ; AUXILARY BYTE---NOT USED 0180 ; 0190 MESS .BYTE "EXAMPLE 12",CR 0200 ; 0220 LDA #PRNTID ; SET BUS ID 0230 STA DDEVIC 0240 LDA #1 ; SET UNIT NUMBER 0250 STA DUNIT 0260 LDA #MODE 0270 STA DAUX1 ; PRINTER MODE NORMAL 0275 LDA #1 0280 STA DAUX2 ; UNUSED 0290 STA DTIMHI ; TIMEOUT<256 SECS 0300 LDA PTIMOT ; SET SIO TIMEOUT FOR PRINTER 0310 STA DTIMLO 0320 LDA #MESS&255 0330 STA DBUFLO ; SET MESS AS BUFFER 0340 LDA #MESS/256 0350 STA DBUFHI 0360 LDA #$80 ; SET SIO DATA DIRECTION FOR 0370 STA DSTATS ; PERIPHERAL TO RECEIVE 0380 LDA #'W ; SIO COMMAND WRITE 0390 STA DCOMND 0410 JSR SIOV ; CALL SIO 0420 BMI ERROR 0430 GOOD BRK 0440 ERROR BRK
Back to previous page