.TITLE IOSPP -- CODE FOR MC0511 PPU 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. ;- IOBASE = 160000 ;I/O PAGE BASE 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:: MTPS #PR7 ;RAISE CPU PRIORITY MOV @#4,-(SP) ;;;SAVE VECTOR 4 MOV #10$,@#4 ;;;INTERCEPT FOR TRAPS THROUGH 4 CALL $ISCAN ;;;SCAN I/O PAGE MOV (SP)+,@#4 ;;;RESTORE VECTOR 4 MTPS #PR0 ;;;LOWER CPU PRIORITY CLR R3 ;INITIALIZE ADDRESS RANGE CLR R4 ; MOV #CRLF,R0 ;PRINT CRLF CALL $PRINT ; CALL $IPRNT ;PRINT I/O PAGE MOV #$START,R1 ;FREE MEMORY BLOCK AND EXIT JMP @#176300 ; 10$: 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$: MOV R1,-(SP) ;SAVE R1 MOV R0,R1 ;COPY STRING ADDRESS 20$: MOVB (R1)+,R0 ;GET CHARACTER BEQ 30$ ;IF EQ, END OF STRING EMT 42 ;OUTPUT CHARACTER BR 20$ ;LOOP 30$: MOV (SP)+,R1 ;RESTORE R1 RETURN ;RETURN .PSECT RODATA CRLF:: .ASCIZ ;CRLF .PSECT DATA RANGE:: .BLKB 14. ;ADDRESS RANGE STRING BUFFER IOMAP:: .BLKW -IOBASE/<16.*2> ;I/O PAGE BITMAP .END $START ;THE END