0100 .OPT NUM 0110 .TITLE "Null Device Handler" 7/31/86 0120 ; 0130 ; 0140 ; 0150 ; (C) 1986 by Paul B. Loux 0160 ; 0170 ; Permission is granted to 0180 ; distribute on a non-profit 0190 ; basis provided that this 0200 ; header remains. 0210 ; 0220 ; 0230 ; Null Device handler, installs 0240 ; a device "N:" into the device 0250 ; handler table. The null device 0260 ; is a no-op handler useful for 0270 ; for debugging I/O routines. 0280 ; It always returns a status 0290 ; of "1" (no error), and the 0300 ; Accumulator is loaded with 0310 ; $9B (return) to facilitate 0320 ; record I/O through CIO. The 0330 ; handler supports all CIO and 0340 ; XIO command types, and 0350 ; occupies only 82 bytes. It 0360 ; protects itself from RESET. 0370 ; 0380 ; 0390 ; 0400 ; System Equates 0410 ; ______________ 0420 ; 0430 DOSVEC = $0A 0440 DOSINI = $0C 0450 SPBYT1 = $CB 0460 SPBYT2 = $CC 0470 RUNAD = $02E0 0480 INITAD = $02E2 0490 SAFETY = $02F5 0500 MEMLO = $02E7 0510 HATABS = $031A 0520 COLDSV = $E477 0530 ; 0540 ; 0550 ; Re-install Code 0560 ; _______________ 0570 ; 0580 ; (keep RESET-proof) 0590 ; 0600 *= $1EA1 0610 START 0620 JSR $FFFF 0630 SETVEX 0640 LDA # MEMADJ 0670 STA MEMLO+1 0680 LDA #$FF 0690 STA SAFETY 0700 ; 0710 ; 0720 ; Vector setup 0730 ; ____________ 0740 ; 0750 NSETUP 0760 LDA #'N 0770 STA TEMP 0780 LDX #$00 0790 SERCH 0800 LDA HATABS,X 0810 CMP TEMP 0820 BEQ FOUND 0830 CMP #$00 0840 BEQ FOUND 0850 INX 0860 INX 0870 INX 0880 BNE SERCH 0890 RTS ; Error 0900 FOUND 0910 LDA #'N 0920 STA HATABS,X 0930 LDA # NDRIVER+1 0960 STA HATABS+2,X 0970 RTS 0980 ; 0990 ; N: Vector Table 1000 ; _______________ 1010 ; 1020 NDRIVER 1030 .WORD NOPEN-1 ; Open 1040 .WORD NCLOS-1 ; Close 1050 .WORD NGETC-1 ; Read 1060 .WORD NPUTC-1 ; Write 1070 .WORD NSTAT-1 ; Status 1080 .WORD NSPEC-1 ; Special 1090 .BYTE $4C 1100 .WORD NINIT ; Init 1110 ; 1120 NOPEN ; All no-ops 1130 NCLOS 1140 NGETC 1150 NPUTC 1160 NSTAT 1170 NSPEC 1180 NINIT 1190 LDA #$9B ; EOL 1200 LDY #$01 ; Success flag 1210 RTS 1220 ; 1230 ; Working variables 1240 ; _________________ 1250 ; 1260 TEMP .BYTE 0 1270 INIDOS .WORD 0 1280 ; 1290 ; 1300 MEMADJ = * ; Re-set Memlo pointer 1310 ; 1320 ; Install Code 1330 ; ____________ 1340 ; 1350 LOAD 1360 LDA DOSINI 1370 STA START+1 1380 STA INIDOS 1390 LDA DOSINI+1 1400 STA START+2 1410 STA INIDOS+1 1420 LDA # START 1450 STA DOSINI+1 1460 RTS 1470 ; 1480 ; Set Load-n-Go 1490 ; _____________ 1500 ; 1510 *= INITAD 1520 .WORD LOAD 1530 *= RUNAD 1540 .WORD SETVEX 1550 ; 1560 ; 1570 ; End 1580 ; ___ 1590 .END >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>