.TITLE IOSRT -- CODE FOR RT-11 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. ;- $USRRB = 53 ;USER ERROR BYTE FATAL$ = 10 ;FATAL ERROR STATUS $SYPTR = 54 ;POINTER TO RMON $CNFG1 = 300 ;SYSTEM CONFIGURATION WORD FJOB$ = 200 ;FOREGROUND LOADED BIT $SYSGE = 372 ;SYSGEN FEATURE WORD RTEM$ = 10 ;RTEM-11 SYSTEM $JSX = 4 ;EXTENDED JOB STATUS WORD NOVBG$ = 100 ;DISABLE VBGEXE BIT IOBASE = 160000 ;I/O PAGE BASE ADDRESS .MCALL .EXIT,.PRINT ;SYSTEM MACRO CALLS .PSECT CODE,GBL,I,RO .PSECT RODATA,GBL,D,RO .PSECT DATA,GBL,D,RW .ASECT .=$JSX .WORD NOVBG$ ;DISABLE VBGEXE .PSECT CODE $START:: MOV @#$SYPTR,R0 ;GET RMON BASE ADDRESS BIT #RTEM$,$SYSGE(R0) ;RTEM-11 SYSTEM? BEQ 20$ ;IF EQ, NO .PRINT #ERTEM ;PRINT ERROR MESSAGE 10$: BISB #FATAL$,@#$USRRB ;SET FATAL ERROR STATUS CLR R0 ;FORCE HARD RESET .EXIT ;EXIT 20$: TSTB $CNFG1(R0) ;FOREGROUND LOADED? BPL 30$ ;IF PL, NO .PRINT #EFJOB ;PRINT ERROR MESSAGE BR 10$ ;EXIT WITH FATAL ERROR STATUS 30$: MOV #40$,@#20 ;SWITCH TO SYSTEM STATE MOV #PR7,@#22 ;AND SCAN I/O PAGE IOT ; CLR R3 ;INITIALIZE ADDRESS RANGE CLR R4 ; .PRINT #CRLF ;PRINT CRLF CALL $IPRNT ;PRINT I/O PAGE .EXIT ;EXIT 40$: MOV @#4,-(SP) ;;;SAVE VECTOR 4 MOV #50$,@#4 ;;;INTERCEPT FOR TRAPS THROUGH 4 CALL $ISCAN ;;;SCAN I/O PAGE MOV (SP)+,@#4 ;;;RESTORE VECTOR 4 RTI ;;;RETURN TO USER STATE 50$: BIS #1,2(SP) ;;;SET CARRY RTI ;;;RETURN FROM ITERRUPT ;+ ;$PRINT -- PRINT ASCIZ STRING ; ;INPUT: ; R0 - STRING ADDRESS ; ;OUTPUT: ; NONE ;- $PRINT:: .PRINT ;PRINT ASCIZ STRING RETURN ;RETURN .PSECT RODATA ERTEM:: .ASCIZ /?IOSCAN-F-Emulated RT-11 system/ EFJOB:: .ASCII /?IOSCAN-F-Foreground loaded/ CRLF:: .BYTE 0 .PSECT DATA RANGE:: .BLKW 14. ;ADDRESS RANGE STRING BUFFER IOMAP:: .BLKW -IOBASE/<16.*2> ;I/O PAGE BITMAP .END $START ;THE END