.TITLE IOSST -- CODE FOR STANDALONE I/O PAGE SCANNER .IDENT /V04.00/ ;+ ; Copyright (c) 2012, 2014 Oleg Safiullin ; ; Permission to use, copy, modify, and distribute this software for any ; purpose with or without fee is hereby granted, provided that the above ; copyright notice and this permission notice appear in all copies. ; ; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ; WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ; MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ; ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ; WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ; ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ; OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ;- TPS == 177564 ;TERMINAL PRINTER STATUS REGISTER CR = 15 ;CARRIAGE RETURN LF = 12 ;LINE FEED .PSECT CODE,GBL,I,RO .PSECT RODATA,GBL,D,RO .PSECT DATA,GBL,D,RW .PSECT CODE $START:: MOV (PC)+,R5 ;SET PRINTER CSR $TTPS:: .WORD TPS ; MOV #$START,SP ;INITIALIZE STACK POINTER MOV #10$,@#20 ;SWITCH TO SYSTEM STATE MOV #PR7,@#22 ;AND SCAN I/O PAGE IOT ; 10$: MOV #30$,@#4 ;;;INTERCEPT FOR TRAPS THROUGH 4 CALL $ISCAN ;;;SCAN I/O PAGE CLR R3 ;;;INITIALIZE ADDRESS RANGE CLR R4 ;;; MOV #CRLF,R0 ;;;PRINT CRLF CALL $PRINT ;;; CALL $IPRNT ;;;PRINT I/O PAGE 20$: HALT ;;;HALT PROCESSOR BR 20$ ;;;LOOP 30$: BIS #1,2(SP) ;;;SET CARRY RTI ;;;RETURN FROM ITERRUPT ;+ ;$PRINT -- PRINT ASCIZ STRING ; ;INPUT: ; R0 - STRING ADDRESS ; ;OUTPUT: ; NONE ;- $PRINT:: CALL 10$ ;PRINT STRING MOV #CRLF,R0 ;PRINT CRLF 10$: TSTB @R5 ;PRINTER READY? BPL 10$ ;IF PL, NO MOVB (R0)+,2(R5) ;PRINT CHARACTER BNE 10$ ;IF NE, WE HAVE MORE CHARS TO PRINT RETURN ;RETURN .PSECT RODATA CRLF:: .ASCIZ ;CRLF .PSECT DATA RANGE == . ;ADDRESS RANGE STRING BUFFER IOMAP == RANGE+14. ;I/O PAGE BITMAP .END $START ;THE END