Home » Personal collection » Acorn hard disk » files » BEEB » DiscROM

DiscROM

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Personal collection » Acorn hard disk » files » BEEB
Filename: DiscROM
Read OK:
File size: 0F2C bytes
Load address: 0000
Exec address: 0000
File contents
   10REM
   20REM
   30REM
   40REM
   50REM
   60:
   70A%=0:X%=1:os=(USR &FFF4 AND &FF00)/256
   80:
   90:
  100IF os=3 THEN PROCmaster
  110status=wd1770:track=wd1770+1
  120sector=wd1770+2:data=wd1770+3
  130DIM code 1000
  140FOR pass=0 TO 3 STEP 3
  150P%=&8000:O%=code
  160[OPT pass+4
  170EQUB  0:EQUB 0:EQUB  0
  180JMP service
  190EQUB &82
  200EQUB copy AND &FF:EQUB 1
  210EQUS "Disc Access ROM"
  220.copy EQUB 0
  230EQUS "(C) BEEBUG 1989":EQUB 0
  240:
  250.service
  260CMP  #8:BEQ osword:RTS
  270.osword LDA &EF:CMP #116
  280BEQ osword2 LDA #8:RTS
  290.osword2 TYA:PHA:PHP
  300CLI:JSR discop:PLP
  310PLA:TAY:LDX &F4:LDA #0:RTS
  320:
  330.discop LDA  &F0:STA &BE
  340LDA &F1:STA &BF:LDY #10
  350.discop2 LDA (&F0),Y:STA &B0,Y
  360DEY:BPL discop2
  370LDA &B0:JSR setnmi
  380TSX:STX &A4
  390LDA &B5:JSR set1770
  400JSR seek
  410LDA &B0:JSR transfer
  420LDA &BA:LDY #10:STA (&BE),Y
  430JMP nmioff
  440:
  450.seek
  460LDA &BA:CMP #&FF:BNE seek2
  470LDA &B9:AND #3
  480JSR command:LDA #0:STA &BA
  490.seek2 LDA &BA:STA track
  500LDA &B6:STA data
  510LDA &B7:STA sector
  520LDA &B9:AND #3:ORA #16
  530JSR command:LDA track
  540STA &BA:RTS
  550:
  560.transfer
  570LDA #&80:LDX &B0:CPX #0:BEQ read
  580LDA #&A0:CPX #1:BEQ write:LDA #&F0
  590.write LDY track:CPY #60:BCS read
  600ORA #2
  610.read CPX #3:BCS done
  620PHA:LDA &B7:STA sector:PLA
  630JSR comm:DEC &B8
  640BEQ done:LDA &B0:CMP #2:BEQ done
  650INC &B7:LDA &B5:LDX #10
  660CMP #8:BCS ss:LDX #16
  670.ss CPX &B7:BNE transfer
  680LDA #0:STA &B7
  690INC &B6:JSR seek:JMP transfer
  700.done RTS
  710:
  720.set1770
  730LDX &B5:LDA ctab,X:STA control
  740LDA status:AND #1:BEQ set17702
  750LDA #&D0:STA status
  760.set17702 RTS
  770:
  780.command
  790PHA:LDA #0
  800STA &A1:STA &A2
  805LDA #17:STA &A0
  810.command2 LDA status:AND #1
  820BNE command2:PLA:STA status
  825CMP #&F0:BCS ffcomm
  830.command3 BIT &FF:BMI error3
  840LDA &A2:BEQ command3
  850RTS
  851.ffcomm LDA status:ROR A
  852BCC ffcomm
  853.ffcomm2 BIT &FF:BMI error3
  854LDA status:ROR A:BCS ffcomm2
  855RTS
  860:
  870.comm
  880PHA:LDA #6:STA &A3
  890.comm2 PLA:PHA:JSR command
  900LDA &A1:BNE error:PLA:RTS
  910.error LDA &A0:AND #&40:BNE error3
  920LDA &A0:AND #&10
  930BEQ error2:LDA #&FF:STA &BA
  940JSR seek
  950.error2 DEC &A3:BNE  comm2
  960.error3 LDX &A4:TXS
  970LDA #&FF:LDY #0:STA (&BE),Y
  980LDA &A0:INY:STA (&BE),Y
  990JMP nmioff
 1000:
 1010.nmicode
 1020PHA:LDA status:AND #&1F:CMP #3
 1030BNE notdata
 1040LDA data:.nbase STA &FFFF
 1050INC nbase-nmicode+&D01
 1060BNE nohigh
 1070INC nbase-nmicode+&D02
 1080.nohigh PLA:RTI
 1090.notdata AND #&58:BEQ noerr
 1100STA &A0:LDA #1:STA &A1
 1110.noerr  LDA #1:STA &A2:PLA:RTI
 1120:
 1130.nmicode2
 1140LDA &FFFF:STA data
 1150INC nbase-nmicode+&CFE
 1160BNE nohigh2
 1170INC nbase-nmicode+&CFF
 1180.nohigh2
 1190:
 1200.setnmi
 1210PHA:LDA #143:LDX #12
 1220JSR &FFF4:STY &A7
 1230LDX #nmicode2-nmicode-1
 1240.setnmi2 LDA nmicode,X
 1250STA &D00,X:DEX:BPL setnmi2
 1260PLA:BEQ setnmi4
 1270LDX #nohigh2-nmicode2-1
 1280.setnmi3  LDA nmicode2,X
 1290STA &D0A,X:DEX:BPL setnmi3
 1300LDA #&5F:STA &D05
 1310LDA &B1:STA &D0B
 1320LDA &B2:STA &D0C:RTS
 1330.setnmi4 LDA &B1:STA &D0E
 1340LDA &B2:STA &D0F:RTS
 1350:
 1360.nmioff
 1370LDA #&40:STA &D00:LDA #143
 1380LDX #11:LDY &A7:JMP &FFF4
 1390:
 1400.ctab EQUB line1:EQUB line1+1
 1410EQUB line1:EQUB line1+1
 1420EQUB line2:EQUB line2+1
 1430EQUB line2:EQUB line2+1
 1440EQUB line3:EQUB line3+1
 1450EQUB line3:EQUB line3+1
 1460EQUB line4:EQUB line4+1
 1470EQUB line4:EQUB line4+1
 1480]NEXT
 1490OSCLI ("SAVE DiscROM "+STR$~code+"  "+STR$~O%)
 1500END
 1510:
 1520:
 1530:
 1540:
 1550:
 1560:
 1570:
 1580:
 1590:
 1600:
 1610:
 1620:
 1630:
 1640DEF PROCmaster
 1650control=&FE24
 1660wd1770=&FE28
 1670line1=5:line2=&15:line3=&25:line4=&35
 1680ENDPROC
00000000  20 20 20 31 30 52 45 4d  0d 20 20 20 32 30 52 45  |   10REM.   20RE|
00000010  4d 0d 20 20 20 33 30 52  45 4d 0d 20 20 20 34 30  |M.   30REM.   40|
00000020  52 45 4d 0d 20 20 20 35  30 52 45 4d 0d 20 20 20  |REM.   50REM.   |
00000030  36 30 3a 0d 20 20 20 37  30 41 25 3d 30 3a 58 25  |60:.   70A%=0:X%|
00000040  3d 31 3a 6f 73 3d 28 55  53 52 20 26 46 46 46 34  |=1:os=(USR &FFF4|
00000050  20 41 4e 44 20 26 46 46  30 30 29 2f 32 35 36 0d  | AND &FF00)/256.|
00000060  20 20 20 38 30 3a 0d 20  20 20 39 30 3a 0d 20 20  |   80:.   90:.  |
00000070  31 30 30 49 46 20 6f 73  3d 33 20 54 48 45 4e 20  |100IF os=3 THEN |
00000080  50 52 4f 43 6d 61 73 74  65 72 0d 20 20 31 31 30  |PROCmaster.  110|
00000090  73 74 61 74 75 73 3d 77  64 31 37 37 30 3a 74 72  |status=wd1770:tr|
000000a0  61 63 6b 3d 77 64 31 37  37 30 2b 31 0d 20 20 31  |ack=wd1770+1.  1|
000000b0  32 30 73 65 63 74 6f 72  3d 77 64 31 37 37 30 2b  |20sector=wd1770+|
000000c0  32 3a 64 61 74 61 3d 77  64 31 37 37 30 2b 33 0d  |2:data=wd1770+3.|
000000d0  20 20 31 33 30 44 49 4d  20 63 6f 64 65 20 31 30  |  130DIM code 10|
000000e0  30 30 0d 20 20 31 34 30  46 4f 52 20 70 61 73 73  |00.  140FOR pass|
000000f0  3d 30 20 54 4f 20 33 20  53 54 45 50 20 33 0d 20  |=0 TO 3 STEP 3. |
00000100  20 31 35 30 50 25 3d 26  38 30 30 30 3a 4f 25 3d  | 150P%=&8000:O%=|
00000110  63 6f 64 65 0d 20 20 31  36 30 5b 4f 50 54 20 70  |code.  160[OPT p|
00000120  61 73 73 2b 34 0d 20 20  31 37 30 45 51 55 42 20  |ass+4.  170EQUB |
00000130  20 30 3a 45 51 55 42 20  30 3a 45 51 55 42 20 20  | 0:EQUB 0:EQUB  |
00000140  30 0d 20 20 31 38 30 4a  4d 50 20 73 65 72 76 69  |0.  180JMP servi|
00000150  63 65 0d 20 20 31 39 30  45 51 55 42 20 26 38 32  |ce.  190EQUB &82|
00000160  0d 20 20 32 30 30 45 51  55 42 20 63 6f 70 79 20  |.  200EQUB copy |
00000170  41 4e 44 20 26 46 46 3a  45 51 55 42 20 31 0d 20  |AND &FF:EQUB 1. |
00000180  20 32 31 30 45 51 55 53  20 22 44 69 73 63 20 41  | 210EQUS "Disc A|
00000190  63 63 65 73 73 20 52 4f  4d 22 0d 20 20 32 32 30  |ccess ROM".  220|
000001a0  2e 63 6f 70 79 20 45 51  55 42 20 30 0d 20 20 32  |.copy EQUB 0.  2|
000001b0  33 30 45 51 55 53 20 22  28 43 29 20 42 45 45 42  |30EQUS "(C) BEEB|
000001c0  55 47 20 31 39 38 39 22  3a 45 51 55 42 20 30 0d  |UG 1989":EQUB 0.|
000001d0  20 20 32 34 30 3a 0d 20  20 32 35 30 2e 73 65 72  |  240:.  250.ser|
000001e0  76 69 63 65 0d 20 20 32  36 30 43 4d 50 20 20 23  |vice.  260CMP  #|
000001f0  38 3a 42 45 51 20 6f 73  77 6f 72 64 3a 52 54 53  |8:BEQ osword:RTS|
00000200  0d 20 20 32 37 30 2e 6f  73 77 6f 72 64 20 4c 44  |.  270.osword LD|
00000210  41 20 26 45 46 3a 43 4d  50 20 23 31 31 36 0d 20  |A &EF:CMP #116. |
00000220  20 32 38 30 42 45 51 20  6f 73 77 6f 72 64 32 20  | 280BEQ osword2 |
00000230  4c 44 41 20 23 38 3a 52  54 53 0d 20 20 32 39 30  |LDA #8:RTS.  290|
00000240  2e 6f 73 77 6f 72 64 32  20 54 59 41 3a 50 48 41  |.osword2 TYA:PHA|
00000250  3a 50 48 50 0d 20 20 33  30 30 43 4c 49 3a 4a 53  |:PHP.  300CLI:JS|
00000260  52 20 64 69 73 63 6f 70  3a 50 4c 50 0d 20 20 33  |R discop:PLP.  3|
00000270  31 30 50 4c 41 3a 54 41  59 3a 4c 44 58 20 26 46  |10PLA:TAY:LDX &F|
00000280  34 3a 4c 44 41 20 23 30  3a 52 54 53 0d 20 20 33  |4:LDA #0:RTS.  3|
00000290  32 30 3a 0d 20 20 33 33  30 2e 64 69 73 63 6f 70  |20:.  330.discop|
000002a0  20 4c 44 41 20 20 26 46  30 3a 53 54 41 20 26 42  | LDA  &F0:STA &B|
000002b0  45 0d 20 20 33 34 30 4c  44 41 20 26 46 31 3a 53  |E.  340LDA &F1:S|
000002c0  54 41 20 26 42 46 3a 4c  44 59 20 23 31 30 0d 20  |TA &BF:LDY #10. |
000002d0  20 33 35 30 2e 64 69 73  63 6f 70 32 20 4c 44 41  | 350.discop2 LDA|
000002e0  20 28 26 46 30 29 2c 59  3a 53 54 41 20 26 42 30  | (&F0),Y:STA &B0|
000002f0  2c 59 0d 20 20 33 36 30  44 45 59 3a 42 50 4c 20  |,Y.  360DEY:BPL |
00000300  64 69 73 63 6f 70 32 0d  20 20 33 37 30 4c 44 41  |discop2.  370LDA|
00000310  20 26 42 30 3a 4a 53 52  20 73 65 74 6e 6d 69 0d  | &B0:JSR setnmi.|
00000320  20 20 33 38 30 54 53 58  3a 53 54 58 20 26 41 34  |  380TSX:STX &A4|
00000330  0d 20 20 33 39 30 4c 44  41 20 26 42 35 3a 4a 53  |.  390LDA &B5:JS|
00000340  52 20 73 65 74 31 37 37  30 0d 20 20 34 30 30 4a  |R set1770.  400J|
00000350  53 52 20 73 65 65 6b 0d  20 20 34 31 30 4c 44 41  |SR seek.  410LDA|
00000360  20 26 42 30 3a 4a 53 52  20 74 72 61 6e 73 66 65  | &B0:JSR transfe|
00000370  72 0d 20 20 34 32 30 4c  44 41 20 26 42 41 3a 4c  |r.  420LDA &BA:L|
00000380  44 59 20 23 31 30 3a 53  54 41 20 28 26 42 45 29  |DY #10:STA (&BE)|
00000390  2c 59 0d 20 20 34 33 30  4a 4d 50 20 6e 6d 69 6f  |,Y.  430JMP nmio|
000003a0  66 66 0d 20 20 34 34 30  3a 0d 20 20 34 35 30 2e  |ff.  440:.  450.|
000003b0  73 65 65 6b 0d 20 20 34  36 30 4c 44 41 20 26 42  |seek.  460LDA &B|
000003c0  41 3a 43 4d 50 20 23 26  46 46 3a 42 4e 45 20 73  |A:CMP #&FF:BNE s|
000003d0  65 65 6b 32 0d 20 20 34  37 30 4c 44 41 20 26 42  |eek2.  470LDA &B|
000003e0  39 3a 41 4e 44 20 23 33  0d 20 20 34 38 30 4a 53  |9:AND #3.  480JS|
000003f0  52 20 63 6f 6d 6d 61 6e  64 3a 4c 44 41 20 23 30  |R command:LDA #0|
00000400  3a 53 54 41 20 26 42 41  0d 20 20 34 39 30 2e 73  |:STA &BA.  490.s|
00000410  65 65 6b 32 20 4c 44 41  20 26 42 41 3a 53 54 41  |eek2 LDA &BA:STA|
00000420  20 74 72 61 63 6b 0d 20  20 35 30 30 4c 44 41 20  | track.  500LDA |
00000430  26 42 36 3a 53 54 41 20  64 61 74 61 0d 20 20 35  |&B6:STA data.  5|
00000440  31 30 4c 44 41 20 26 42  37 3a 53 54 41 20 73 65  |10LDA &B7:STA se|
00000450  63 74 6f 72 0d 20 20 35  32 30 4c 44 41 20 26 42  |ctor.  520LDA &B|
00000460  39 3a 41 4e 44 20 23 33  3a 4f 52 41 20 23 31 36  |9:AND #3:ORA #16|
00000470  0d 20 20 35 33 30 4a 53  52 20 63 6f 6d 6d 61 6e  |.  530JSR comman|
00000480  64 3a 4c 44 41 20 74 72  61 63 6b 0d 20 20 35 34  |d:LDA track.  54|
00000490  30 53 54 41 20 26 42 41  3a 52 54 53 0d 20 20 35  |0STA &BA:RTS.  5|
000004a0  35 30 3a 0d 20 20 35 36  30 2e 74 72 61 6e 73 66  |50:.  560.transf|
000004b0  65 72 0d 20 20 35 37 30  4c 44 41 20 23 26 38 30  |er.  570LDA #&80|
000004c0  3a 4c 44 58 20 26 42 30  3a 43 50 58 20 23 30 3a  |:LDX &B0:CPX #0:|
000004d0  42 45 51 20 72 65 61 64  0d 20 20 35 38 30 4c 44  |BEQ read.  580LD|
000004e0  41 20 23 26 41 30 3a 43  50 58 20 23 31 3a 42 45  |A #&A0:CPX #1:BE|
000004f0  51 20 77 72 69 74 65 3a  4c 44 41 20 23 26 46 30  |Q write:LDA #&F0|
00000500  0d 20 20 35 39 30 2e 77  72 69 74 65 20 4c 44 59  |.  590.write LDY|
00000510  20 74 72 61 63 6b 3a 43  50 59 20 23 36 30 3a 42  | track:CPY #60:B|
00000520  43 53 20 72 65 61 64 0d  20 20 36 30 30 4f 52 41  |CS read.  600ORA|
00000530  20 23 32 0d 20 20 36 31  30 2e 72 65 61 64 20 43  | #2.  610.read C|
00000540  50 58 20 23 33 3a 42 43  53 20 64 6f 6e 65 0d 20  |PX #3:BCS done. |
00000550  20 36 32 30 50 48 41 3a  4c 44 41 20 26 42 37 3a  | 620PHA:LDA &B7:|
00000560  53 54 41 20 73 65 63 74  6f 72 3a 50 4c 41 0d 20  |STA sector:PLA. |
00000570  20 36 33 30 4a 53 52 20  63 6f 6d 6d 3a 44 45 43  | 630JSR comm:DEC|
00000580  20 26 42 38 0d 20 20 36  34 30 42 45 51 20 64 6f  | &B8.  640BEQ do|
00000590  6e 65 3a 4c 44 41 20 26  42 30 3a 43 4d 50 20 23  |ne:LDA &B0:CMP #|
000005a0  32 3a 42 45 51 20 64 6f  6e 65 0d 20 20 36 35 30  |2:BEQ done.  650|
000005b0  49 4e 43 20 26 42 37 3a  4c 44 41 20 26 42 35 3a  |INC &B7:LDA &B5:|
000005c0  4c 44 58 20 23 31 30 0d  20 20 36 36 30 43 4d 50  |LDX #10.  660CMP|
000005d0  20 23 38 3a 42 43 53 20  73 73 3a 4c 44 58 20 23  | #8:BCS ss:LDX #|
000005e0  31 36 0d 20 20 36 37 30  2e 73 73 20 43 50 58 20  |16.  670.ss CPX |
000005f0  26 42 37 3a 42 4e 45 20  74 72 61 6e 73 66 65 72  |&B7:BNE transfer|
00000600  0d 20 20 36 38 30 4c 44  41 20 23 30 3a 53 54 41  |.  680LDA #0:STA|
00000610  20 26 42 37 0d 20 20 36  39 30 49 4e 43 20 26 42  | &B7.  690INC &B|
00000620  36 3a 4a 53 52 20 73 65  65 6b 3a 4a 4d 50 20 74  |6:JSR seek:JMP t|
00000630  72 61 6e 73 66 65 72 0d  20 20 37 30 30 2e 64 6f  |ransfer.  700.do|
00000640  6e 65 20 52 54 53 0d 20  20 37 31 30 3a 0d 20 20  |ne RTS.  710:.  |
00000650  37 32 30 2e 73 65 74 31  37 37 30 0d 20 20 37 33  |720.set1770.  73|
00000660  30 4c 44 58 20 26 42 35  3a 4c 44 41 20 63 74 61  |0LDX &B5:LDA cta|
00000670  62 2c 58 3a 53 54 41 20  63 6f 6e 74 72 6f 6c 0d  |b,X:STA control.|
00000680  20 20 37 34 30 4c 44 41  20 73 74 61 74 75 73 3a  |  740LDA status:|
00000690  41 4e 44 20 23 31 3a 42  45 51 20 73 65 74 31 37  |AND #1:BEQ set17|
000006a0  37 30 32 0d 20 20 37 35  30 4c 44 41 20 23 26 44  |702.  750LDA #&D|
000006b0  30 3a 53 54 41 20 73 74  61 74 75 73 0d 20 20 37  |0:STA status.  7|
000006c0  36 30 2e 73 65 74 31 37  37 30 32 20 52 54 53 0d  |60.set17702 RTS.|
000006d0  20 20 37 37 30 3a 0d 20  20 37 38 30 2e 63 6f 6d  |  770:.  780.com|
000006e0  6d 61 6e 64 0d 20 20 37  39 30 50 48 41 3a 4c 44  |mand.  790PHA:LD|
000006f0  41 20 23 30 0d 20 20 38  30 30 53 54 41 20 26 41  |A #0.  800STA &A|
00000700  31 3a 53 54 41 20 26 41  32 0d 20 20 38 30 35 4c  |1:STA &A2.  805L|
00000710  44 41 20 23 31 37 3a 53  54 41 20 26 41 30 0d 20  |DA #17:STA &A0. |
00000720  20 38 31 30 2e 63 6f 6d  6d 61 6e 64 32 20 4c 44  | 810.command2 LD|
00000730  41 20 73 74 61 74 75 73  3a 41 4e 44 20 23 31 0d  |A status:AND #1.|
00000740  20 20 38 32 30 42 4e 45  20 63 6f 6d 6d 61 6e 64  |  820BNE command|
00000750  32 3a 50 4c 41 3a 53 54  41 20 73 74 61 74 75 73  |2:PLA:STA status|
00000760  0d 20 20 38 32 35 43 4d  50 20 23 26 46 30 3a 42  |.  825CMP #&F0:B|
00000770  43 53 20 66 66 63 6f 6d  6d 0d 20 20 38 33 30 2e  |CS ffcomm.  830.|
00000780  63 6f 6d 6d 61 6e 64 33  20 42 49 54 20 26 46 46  |command3 BIT &FF|
00000790  3a 42 4d 49 20 65 72 72  6f 72 33 0d 20 20 38 34  |:BMI error3.  84|
000007a0  30 4c 44 41 20 26 41 32  3a 42 45 51 20 63 6f 6d  |0LDA &A2:BEQ com|
000007b0  6d 61 6e 64 33 0d 20 20  38 35 30 52 54 53 0d 20  |mand3.  850RTS. |
000007c0  20 38 35 31 2e 66 66 63  6f 6d 6d 20 4c 44 41 20  | 851.ffcomm LDA |
000007d0  73 74 61 74 75 73 3a 52  4f 52 20 41 0d 20 20 38  |status:ROR A.  8|
000007e0  35 32 42 43 43 20 66 66  63 6f 6d 6d 0d 20 20 38  |52BCC ffcomm.  8|
000007f0  35 33 2e 66 66 63 6f 6d  6d 32 20 42 49 54 20 26  |53.ffcomm2 BIT &|
00000800  46 46 3a 42 4d 49 20 65  72 72 6f 72 33 0d 20 20  |FF:BMI error3.  |
00000810  38 35 34 4c 44 41 20 73  74 61 74 75 73 3a 52 4f  |854LDA status:RO|
00000820  52 20 41 3a 42 43 53 20  66 66 63 6f 6d 6d 32 0d  |R A:BCS ffcomm2.|
00000830  20 20 38 35 35 52 54 53  0d 20 20 38 36 30 3a 0d  |  855RTS.  860:.|
00000840  20 20 38 37 30 2e 63 6f  6d 6d 0d 20 20 38 38 30  |  870.comm.  880|
00000850  50 48 41 3a 4c 44 41 20  23 36 3a 53 54 41 20 26  |PHA:LDA #6:STA &|
00000860  41 33 0d 20 20 38 39 30  2e 63 6f 6d 6d 32 20 50  |A3.  890.comm2 P|
00000870  4c 41 3a 50 48 41 3a 4a  53 52 20 63 6f 6d 6d 61  |LA:PHA:JSR comma|
00000880  6e 64 0d 20 20 39 30 30  4c 44 41 20 26 41 31 3a  |nd.  900LDA &A1:|
00000890  42 4e 45 20 65 72 72 6f  72 3a 50 4c 41 3a 52 54  |BNE error:PLA:RT|
000008a0  53 0d 20 20 39 31 30 2e  65 72 72 6f 72 20 4c 44  |S.  910.error LD|
000008b0  41 20 26 41 30 3a 41 4e  44 20 23 26 34 30 3a 42  |A &A0:AND #&40:B|
000008c0  4e 45 20 65 72 72 6f 72  33 0d 20 20 39 32 30 4c  |NE error3.  920L|
000008d0  44 41 20 26 41 30 3a 41  4e 44 20 23 26 31 30 0d  |DA &A0:AND #&10.|
000008e0  20 20 39 33 30 42 45 51  20 65 72 72 6f 72 32 3a  |  930BEQ error2:|
000008f0  4c 44 41 20 23 26 46 46  3a 53 54 41 20 26 42 41  |LDA #&FF:STA &BA|
00000900  0d 20 20 39 34 30 4a 53  52 20 73 65 65 6b 0d 20  |.  940JSR seek. |
00000910  20 39 35 30 2e 65 72 72  6f 72 32 20 44 45 43 20  | 950.error2 DEC |
00000920  26 41 33 3a 42 4e 45 20  20 63 6f 6d 6d 32 0d 20  |&A3:BNE  comm2. |
00000930  20 39 36 30 2e 65 72 72  6f 72 33 20 4c 44 58 20  | 960.error3 LDX |
00000940  26 41 34 3a 54 58 53 0d  20 20 39 37 30 4c 44 41  |&A4:TXS.  970LDA|
00000950  20 23 26 46 46 3a 4c 44  59 20 23 30 3a 53 54 41  | #&FF:LDY #0:STA|
00000960  20 28 26 42 45 29 2c 59  0d 20 20 39 38 30 4c 44  | (&BE),Y.  980LD|
00000970  41 20 26 41 30 3a 49 4e  59 3a 53 54 41 20 28 26  |A &A0:INY:STA (&|
00000980  42 45 29 2c 59 0d 20 20  39 39 30 4a 4d 50 20 6e  |BE),Y.  990JMP n|
00000990  6d 69 6f 66 66 0d 20 31  30 30 30 3a 0d 20 31 30  |mioff. 1000:. 10|
000009a0  31 30 2e 6e 6d 69 63 6f  64 65 0d 20 31 30 32 30  |10.nmicode. 1020|
000009b0  50 48 41 3a 4c 44 41 20  73 74 61 74 75 73 3a 41  |PHA:LDA status:A|
000009c0  4e 44 20 23 26 31 46 3a  43 4d 50 20 23 33 0d 20  |ND #&1F:CMP #3. |
000009d0  31 30 33 30 42 4e 45 20  6e 6f 74 64 61 74 61 0d  |1030BNE notdata.|
000009e0  20 31 30 34 30 4c 44 41  20 64 61 74 61 3a 2e 6e  | 1040LDA data:.n|
000009f0  62 61 73 65 20 53 54 41  20 26 46 46 46 46 0d 20  |base STA &FFFF. |
00000a00  31 30 35 30 49 4e 43 20  6e 62 61 73 65 2d 6e 6d  |1050INC nbase-nm|
00000a10  69 63 6f 64 65 2b 26 44  30 31 0d 20 31 30 36 30  |icode+&D01. 1060|
00000a20  42 4e 45 20 6e 6f 68 69  67 68 0d 20 31 30 37 30  |BNE nohigh. 1070|
00000a30  49 4e 43 20 6e 62 61 73  65 2d 6e 6d 69 63 6f 64  |INC nbase-nmicod|
00000a40  65 2b 26 44 30 32 0d 20  31 30 38 30 2e 6e 6f 68  |e+&D02. 1080.noh|
00000a50  69 67 68 20 50 4c 41 3a  52 54 49 0d 20 31 30 39  |igh PLA:RTI. 109|
00000a60  30 2e 6e 6f 74 64 61 74  61 20 41 4e 44 20 23 26  |0.notdata AND #&|
00000a70  35 38 3a 42 45 51 20 6e  6f 65 72 72 0d 20 31 31  |58:BEQ noerr. 11|
00000a80  30 30 53 54 41 20 26 41  30 3a 4c 44 41 20 23 31  |00STA &A0:LDA #1|
00000a90  3a 53 54 41 20 26 41 31  0d 20 31 31 31 30 2e 6e  |:STA &A1. 1110.n|
00000aa0  6f 65 72 72 20 20 4c 44  41 20 23 31 3a 53 54 41  |oerr  LDA #1:STA|
00000ab0  20 26 41 32 3a 50 4c 41  3a 52 54 49 0d 20 31 31  | &A2:PLA:RTI. 11|
00000ac0  32 30 3a 0d 20 31 31 33  30 2e 6e 6d 69 63 6f 64  |20:. 1130.nmicod|
00000ad0  65 32 0d 20 31 31 34 30  4c 44 41 20 26 46 46 46  |e2. 1140LDA &FFF|
00000ae0  46 3a 53 54 41 20 64 61  74 61 0d 20 31 31 35 30  |F:STA data. 1150|
00000af0  49 4e 43 20 6e 62 61 73  65 2d 6e 6d 69 63 6f 64  |INC nbase-nmicod|
00000b00  65 2b 26 43 46 45 0d 20  31 31 36 30 42 4e 45 20  |e+&CFE. 1160BNE |
00000b10  6e 6f 68 69 67 68 32 0d  20 31 31 37 30 49 4e 43  |nohigh2. 1170INC|
00000b20  20 6e 62 61 73 65 2d 6e  6d 69 63 6f 64 65 2b 26  | nbase-nmicode+&|
00000b30  43 46 46 0d 20 31 31 38  30 2e 6e 6f 68 69 67 68  |CFF. 1180.nohigh|
00000b40  32 0d 20 31 31 39 30 3a  0d 20 31 32 30 30 2e 73  |2. 1190:. 1200.s|
00000b50  65 74 6e 6d 69 0d 20 31  32 31 30 50 48 41 3a 4c  |etnmi. 1210PHA:L|
00000b60  44 41 20 23 31 34 33 3a  4c 44 58 20 23 31 32 0d  |DA #143:LDX #12.|
00000b70  20 31 32 32 30 4a 53 52  20 26 46 46 46 34 3a 53  | 1220JSR &FFF4:S|
00000b80  54 59 20 26 41 37 0d 20  31 32 33 30 4c 44 58 20  |TY &A7. 1230LDX |
00000b90  23 6e 6d 69 63 6f 64 65  32 2d 6e 6d 69 63 6f 64  |#nmicode2-nmicod|
00000ba0  65 2d 31 0d 20 31 32 34  30 2e 73 65 74 6e 6d 69  |e-1. 1240.setnmi|
00000bb0  32 20 4c 44 41 20 6e 6d  69 63 6f 64 65 2c 58 0d  |2 LDA nmicode,X.|
00000bc0  20 31 32 35 30 53 54 41  20 26 44 30 30 2c 58 3a  | 1250STA &D00,X:|
00000bd0  44 45 58 3a 42 50 4c 20  73 65 74 6e 6d 69 32 0d  |DEX:BPL setnmi2.|
00000be0  20 31 32 36 30 50 4c 41  3a 42 45 51 20 73 65 74  | 1260PLA:BEQ set|
00000bf0  6e 6d 69 34 0d 20 31 32  37 30 4c 44 58 20 23 6e  |nmi4. 1270LDX #n|
00000c00  6f 68 69 67 68 32 2d 6e  6d 69 63 6f 64 65 32 2d  |ohigh2-nmicode2-|
00000c10  31 0d 20 31 32 38 30 2e  73 65 74 6e 6d 69 33 20  |1. 1280.setnmi3 |
00000c20  20 4c 44 41 20 6e 6d 69  63 6f 64 65 32 2c 58 0d  | LDA nmicode2,X.|
00000c30  20 31 32 39 30 53 54 41  20 26 44 30 41 2c 58 3a  | 1290STA &D0A,X:|
00000c40  44 45 58 3a 42 50 4c 20  73 65 74 6e 6d 69 33 0d  |DEX:BPL setnmi3.|
00000c50  20 31 33 30 30 4c 44 41  20 23 26 35 46 3a 53 54  | 1300LDA #&5F:ST|
00000c60  41 20 26 44 30 35 0d 20  31 33 31 30 4c 44 41 20  |A &D05. 1310LDA |
00000c70  26 42 31 3a 53 54 41 20  26 44 30 42 0d 20 31 33  |&B1:STA &D0B. 13|
00000c80  32 30 4c 44 41 20 26 42  32 3a 53 54 41 20 26 44  |20LDA &B2:STA &D|
00000c90  30 43 3a 52 54 53 0d 20  31 33 33 30 2e 73 65 74  |0C:RTS. 1330.set|
00000ca0  6e 6d 69 34 20 4c 44 41  20 26 42 31 3a 53 54 41  |nmi4 LDA &B1:STA|
00000cb0  20 26 44 30 45 0d 20 31  33 34 30 4c 44 41 20 26  | &D0E. 1340LDA &|
00000cc0  42 32 3a 53 54 41 20 26  44 30 46 3a 52 54 53 0d  |B2:STA &D0F:RTS.|
00000cd0  20 31 33 35 30 3a 0d 20  31 33 36 30 2e 6e 6d 69  | 1350:. 1360.nmi|
00000ce0  6f 66 66 0d 20 31 33 37  30 4c 44 41 20 23 26 34  |off. 1370LDA #&4|
00000cf0  30 3a 53 54 41 20 26 44  30 30 3a 4c 44 41 20 23  |0:STA &D00:LDA #|
00000d00  31 34 33 0d 20 31 33 38  30 4c 44 58 20 23 31 31  |143. 1380LDX #11|
00000d10  3a 4c 44 59 20 26 41 37  3a 4a 4d 50 20 26 46 46  |:LDY &A7:JMP &FF|
00000d20  46 34 0d 20 31 33 39 30  3a 0d 20 31 34 30 30 2e  |F4. 1390:. 1400.|
00000d30  63 74 61 62 20 45 51 55  42 20 6c 69 6e 65 31 3a  |ctab EQUB line1:|
00000d40  45 51 55 42 20 6c 69 6e  65 31 2b 31 0d 20 31 34  |EQUB line1+1. 14|
00000d50  31 30 45 51 55 42 20 6c  69 6e 65 31 3a 45 51 55  |10EQUB line1:EQU|
00000d60  42 20 6c 69 6e 65 31 2b  31 0d 20 31 34 32 30 45  |B line1+1. 1420E|
00000d70  51 55 42 20 6c 69 6e 65  32 3a 45 51 55 42 20 6c  |QUB line2:EQUB l|
00000d80  69 6e 65 32 2b 31 0d 20  31 34 33 30 45 51 55 42  |ine2+1. 1430EQUB|
00000d90  20 6c 69 6e 65 32 3a 45  51 55 42 20 6c 69 6e 65  | line2:EQUB line|
00000da0  32 2b 31 0d 20 31 34 34  30 45 51 55 42 20 6c 69  |2+1. 1440EQUB li|
00000db0  6e 65 33 3a 45 51 55 42  20 6c 69 6e 65 33 2b 31  |ne3:EQUB line3+1|
00000dc0  0d 20 31 34 35 30 45 51  55 42 20 6c 69 6e 65 33  |. 1450EQUB line3|
00000dd0  3a 45 51 55 42 20 6c 69  6e 65 33 2b 31 0d 20 31  |:EQUB line3+1. 1|
00000de0  34 36 30 45 51 55 42 20  6c 69 6e 65 34 3a 45 51  |460EQUB line4:EQ|
00000df0  55 42 20 6c 69 6e 65 34  2b 31 0d 20 31 34 37 30  |UB line4+1. 1470|
00000e00  45 51 55 42 20 6c 69 6e  65 34 3a 45 51 55 42 20  |EQUB line4:EQUB |
00000e10  6c 69 6e 65 34 2b 31 0d  20 31 34 38 30 5d 4e 45  |line4+1. 1480]NE|
00000e20  58 54 0d 20 31 34 39 30  4f 53 43 4c 49 20 28 22  |XT. 1490OSCLI ("|
00000e30  53 41 56 45 20 44 69 73  63 52 4f 4d 20 22 2b 53  |SAVE DiscROM "+S|
00000e40  54 52 24 7e 63 6f 64 65  2b 22 20 20 22 2b 53 54  |TR$~code+"  "+ST|
00000e50  52 24 7e 4f 25 29 0d 20  31 35 30 30 45 4e 44 0d  |R$~O%). 1500END.|
00000e60  20 31 35 31 30 3a 0d 20  31 35 32 30 3a 0d 20 31  | 1510:. 1520:. 1|
00000e70  35 33 30 3a 0d 20 31 35  34 30 3a 0d 20 31 35 35  |530:. 1540:. 155|
00000e80  30 3a 0d 20 31 35 36 30  3a 0d 20 31 35 37 30 3a  |0:. 1560:. 1570:|
00000e90  0d 20 31 35 38 30 3a 0d  20 31 35 39 30 3a 0d 20  |. 1580:. 1590:. |
00000ea0  31 36 30 30 3a 0d 20 31  36 31 30 3a 0d 20 31 36  |1600:. 1610:. 16|
00000eb0  32 30 3a 0d 20 31 36 33  30 3a 0d 20 31 36 34 30  |20:. 1630:. 1640|
00000ec0  44 45 46 20 50 52 4f 43  6d 61 73 74 65 72 0d 20  |DEF PROCmaster. |
00000ed0  31 36 35 30 63 6f 6e 74  72 6f 6c 3d 26 46 45 32  |1650control=&FE2|
00000ee0  34 0d 20 31 36 36 30 77  64 31 37 37 30 3d 26 46  |4. 1660wd1770=&F|
00000ef0  45 32 38 0d 20 31 36 37  30 6c 69 6e 65 31 3d 35  |E28. 1670line1=5|
00000f00  3a 6c 69 6e 65 32 3d 26  31 35 3a 6c 69 6e 65 33  |:line2=&15:line3|
00000f10  3d 26 32 35 3a 6c 69 6e  65 34 3d 26 33 35 0d 20  |=&25:line4=&35. |
00000f20  31 36 38 30 45 4e 44 50  52 4f 43 0d              |1680ENDPROC.|
00000f2c