Home » Personal collection » Acorn ADFS disks » Electron_User_Group » EUG_17.ADF » PROGS/ROMTXT2

PROGS/ROMTXT2

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 ADFS disks » Electron_User_Group » EUG_17.ADF
Filename: PROGS/ROMTXT2
Read OK:
File size: 1489 bytes
Load address: 52204556
Exec address: 58544D4F
File contents
Because the Electron handles its ROMs slightly differently than the BBC and 
Master computers the file created by the program on the Electron will not 
work on the BBC/Master and vice versa.  If you wish to use the command on 
both machines just RUN it on that particular machine and save the file 
created for use on that machine. 

   10REM *ROMS by D. Walker (c) Oct.1994  
   20REM Compatible with E/B/B+/M/C  
   30A=INKEY(-256)                                   \ decide which computer 
   40IF A=1 THEN computer=&FE05 ELSE computer=&FE30  \ program is running on 
   50PROCass                       \ assemble program 
   60CALL&900                      \ test assembled program 
   70*SAVE DROMS 900 A2B           \ save the assembled program 
   80END  
   90DEFPROCass  
  100FORI%=0TO2STEP2  
  110P%=&900                       \ assemble for use at this memory location 
  120[OPTI%  
  130LDA&F4:STA&8D                 \ save the current ROM 
  140LDA#&0C:STA&F4:STAcomputer    \ patch for the Electron # see note 1 
  150LDY#00:LDX#00                 \ initialise registers   # see note 2 
  160LDA#&30:STA&8F                \ store ascii value for 0 # see note 3 
  170JSR&FFE7                      \ new line at start of command 
  180.count  
  190STY&F4:STYcomputer            \ set up ROM for reading 
  200INY                           \ increment ROM count 
  210CPY#17                        \ check if they have all been read 
  220BNEreadwrite 
  230JSR&FFE7                      \ new line at end of command 
  240JMPexit  
  250.readwrite  
  260LDA&8000:STA&8E               \ 
  270LDA#&FF:STA&8000              \ 
  280LDA&8000:CMP#&FF              \ 
  290BNErom                        \ RAM test 
  300LDA#&00:STA&8000              \ test for &FF and &00 
  310LDA&8000:CMP#&00              \ 
  320BNErom                        \ 
  330LDA&8E:STA&8000:JMPram        \ 
  340.rom  
  350JSRromnumber                  \ jump to print ROM number on screen 
  360LDA#&3C:JSR&FFEE              \ print "<" 
  370LDA#&20:JSR&FFEE              \ print " " 
  380JMPtype                       \ to type test 
  390.ram  
  400JSRromnumber                  \ jump to print ROM number on screen 
  410LDA#&3C:JSR&FFEE              \ print "<" 
  420LDA#&52:JSR&FFEE              \ print "R" 
  430JMPtype                       \ to type test 
  440.type  
  450LDA&8006                      \ read type byte 
  460CMP#&C2:BEQlangserv           \  
  470CMP#&C0:BEQlangserv           \ look up table 
  480CMP#&82:BEQservice            \ 
  490CMP#&60:BEQlang               \ 
  5000LDA#&20:JSR&FFEE:JSR&FFEE:LDA#&3E:JSR&FFEE    \ empty ROM print "  >" 
  510JSR&FFE7                      \ new line for next entry 
  520BNEcount                      \ look for next entry 
  530.langserv  
  540LDA#&53:JSR&FFEE              \ print "S" 
  550LDA#&4C:JSR&FFEE              \ print "L" 
  560LDA#&3E:JSR&FFEE:LDA#&20:JSR&FFEE        \ print "> " 
  570JMPread  
  580.lang  
  590LDA#&20:JSR&FFEE              \ print " " 
  600LDA#&4C:JSR&FFEE              \ print "L" 
  610LDA#&3E:JSR&FFEE:LDA#&20:JSR&FFEE        \ print "> " 
  620JMPread  
  630.service  
  640LDA#&53:JSR&FFEE              \ print "S" 
  650LDA#&20:JSR&FFEE              \ print " " 
  660LDA#&3E:JSR&FFEE:LDA#&20:JSR&FFEE        \ print "> " 
  670JMPread  
  680.gap  
  690LDA#&20:JMPtest1              \ insert space 
  700.ignorelf  
  710LDA#&00:JMPtest2              \ insert null 
  720.ignorecr  
  730LDA#&00:JMPtest3              \ insert null 
  740.read  
  750LDA &8009,X                   \ load first and successive characters 
  760.test1  
  770CMP#&00:BEQgap                \ if null insert space 
  780.test3  
  790CMP#&0D:BEQignorecr           \ if CR insert null 
  800.test2  
  810CMP#&0A:BEQignorelf           \ if LF insert null 
  820CMP#&28                       \ check for end of title string 
  830BEQnewline                    \ to new line 
  840JSR&FFEE                      \ print title string character to screen 
  850INX                           \ increment title string address 
  860JMPread                       \ get next character 
  870.newline  
  880JSR&FFE7                      \ new line for next entry 
  890LDX#00                        \ reset title string address register 
  900JMPcount                      \ go to next entry 
  910.romnumber  
  920LDA&8F:CMP#&3A:BEQpokea:JSR&FFEE    \ print ROM number, No. > than 9? 
  930LDA#&29:JSR&FFEE              \ print ")" 
  940LDA#&20:JSR&FFEE              \ print " " 
  950INC&8F:RTS                    \ increment ROM number 
  960.pokea  
  970LDA#&41:STA&8F:JMPromnumber   \ poke in A into ROM number store 
  980.exit  
  990LDA&8D:STA&F4:STAcomputer     \ restore computer to current ROM 
 1000RTS                           \ exit 
 1010]  
 1020NEXT  
 1030ENDPROC  
 
 Note 1 : For the Electron to access ROMs lower than BASIC, a ROM higher than 
          BASIC has to be selected first. 
 
 Note 2 : Y register holds the ROM count, X register holds the Title string   
          character address. 
 
 Note 3 : Memory allocation - &8D current ROM number, &8E store for RAM byte  
          during test, &8F ascii code for displayed ROM numbers. 
00000000  42 65 63 61 75 73 65 20  74 68 65 20 45 6c 65 63  |Because the Elec|
00000010  74 72 6f 6e 20 68 61 6e  64 6c 65 73 20 69 74 73  |tron handles its|
00000020  20 52 4f 4d 73 20 73 6c  69 67 68 74 6c 79 20 64  | ROMs slightly d|
00000030  69 66 66 65 72 65 6e 74  6c 79 20 74 68 61 6e 20  |ifferently than |
00000040  74 68 65 20 42 42 43 20  61 6e 64 20 0d 4d 61 73  |the BBC and .Mas|
00000050  74 65 72 20 63 6f 6d 70  75 74 65 72 73 20 74 68  |ter computers th|
00000060  65 20 66 69 6c 65 20 63  72 65 61 74 65 64 20 62  |e file created b|
00000070  79 20 74 68 65 20 70 72  6f 67 72 61 6d 20 6f 6e  |y the program on|
00000080  20 74 68 65 20 45 6c 65  63 74 72 6f 6e 20 77 69  | the Electron wi|
00000090  6c 6c 20 6e 6f 74 20 0d  77 6f 72 6b 20 6f 6e 20  |ll not .work on |
000000a0  74 68 65 20 42 42 43 2f  4d 61 73 74 65 72 20 61  |the BBC/Master a|
000000b0  6e 64 20 76 69 63 65 20  76 65 72 73 61 2e 20 20  |nd vice versa.  |
000000c0  49 66 20 79 6f 75 20 77  69 73 68 20 74 6f 20 75  |If you wish to u|
000000d0  73 65 20 74 68 65 20 63  6f 6d 6d 61 6e 64 20 6f  |se the command o|
000000e0  6e 20 0d 62 6f 74 68 20  6d 61 63 68 69 6e 65 73  |n .both machines|
000000f0  20 6a 75 73 74 20 52 55  4e 20 69 74 20 6f 6e 20  | just RUN it on |
00000100  74 68 61 74 20 70 61 72  74 69 63 75 6c 61 72 20  |that particular |
00000110  6d 61 63 68 69 6e 65 20  61 6e 64 20 73 61 76 65  |machine and save|
00000120  20 74 68 65 20 66 69 6c  65 20 0d 63 72 65 61 74  | the file .creat|
00000130  65 64 20 66 6f 72 20 75  73 65 20 6f 6e 20 74 68  |ed for use on th|
00000140  61 74 20 6d 61 63 68 69  6e 65 2e 20 0d 0d 20 20  |at machine. ..  |
00000150  20 31 30 52 45 4d 20 2a  52 4f 4d 53 20 62 79 20  | 10REM *ROMS by |
00000160  44 2e 20 57 61 6c 6b 65  72 20 28 63 29 20 4f 63  |D. Walker (c) Oc|
00000170  74 2e 31 39 39 34 20 20  0d 20 20 20 32 30 52 45  |t.1994  .   20RE|
00000180  4d 20 43 6f 6d 70 61 74  69 62 6c 65 20 77 69 74  |M Compatible wit|
00000190  68 20 45 2f 42 2f 42 2b  2f 4d 2f 43 20 20 0d 20  |h E/B/B+/M/C  . |
000001a0  20 20 33 30 41 3d 49 4e  4b 45 59 28 2d 32 35 36  |  30A=INKEY(-256|
000001b0  29 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |)               |
000001c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000001d0  20 20 20 20 5c 20 64 65  63 69 64 65 20 77 68 69  |    \ decide whi|
000001e0  63 68 20 63 6f 6d 70 75  74 65 72 20 0d 20 20 20  |ch computer .   |
000001f0  34 30 49 46 20 41 3d 31  20 54 48 45 4e 20 63 6f  |40IF A=1 THEN co|
00000200  6d 70 75 74 65 72 3d 26  46 45 30 35 20 45 4c 53  |mputer=&FE05 ELS|
00000210  45 20 63 6f 6d 70 75 74  65 72 3d 26 46 45 33 30  |E computer=&FE30|
00000220  20 20 5c 20 70 72 6f 67  72 61 6d 20 69 73 20 72  |  \ program is r|
00000230  75 6e 6e 69 6e 67 20 6f  6e 20 0d 20 20 20 35 30  |unning on .   50|
00000240  50 52 4f 43 61 73 73 20  20 20 20 20 20 20 20 20  |PROCass         |
00000250  20 20 20 20 20 20 20 20  20 20 20 20 20 20 5c 20  |              \ |
00000260  61 73 73 65 6d 62 6c 65  20 70 72 6f 67 72 61 6d  |assemble program|
00000270  20 0d 20 20 20 36 30 43  41 4c 4c 26 39 30 30 20  | .   60CALL&900 |
00000280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000290  20 20 20 20 20 5c 20 74  65 73 74 20 61 73 73 65  |     \ test asse|
000002a0  6d 62 6c 65 64 20 70 72  6f 67 72 61 6d 20 0d 20  |mbled program . |
000002b0  20 20 37 30 2a 53 41 56  45 20 44 52 4f 4d 53 20  |  70*SAVE DROMS |
000002c0  39 30 30 20 41 32 42 20  20 20 20 20 20 20 20 20  |900 A2B         |
000002d0  20 20 5c 20 73 61 76 65  20 74 68 65 20 61 73 73  |  \ save the ass|
000002e0  65 6d 62 6c 65 64 20 70  72 6f 67 72 61 6d 20 0d  |embled program .|
000002f0  20 20 20 38 30 45 4e 44  20 20 0d 20 20 20 39 30  |   80END  .   90|
00000300  44 45 46 50 52 4f 43 61  73 73 20 20 0d 20 20 31  |DEFPROCass  .  1|
00000310  30 30 46 4f 52 49 25 3d  30 54 4f 32 53 54 45 50  |00FORI%=0TO2STEP|
00000320  32 20 20 0d 20 20 31 31  30 50 25 3d 26 39 30 30  |2  .  110P%=&900|
00000330  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000340  20 20 20 20 20 20 20 5c  20 61 73 73 65 6d 62 6c  |       \ assembl|
00000350  65 20 66 6f 72 20 75 73  65 20 61 74 20 74 68 69  |e for use at thi|
00000360  73 20 6d 65 6d 6f 72 79  20 6c 6f 63 61 74 69 6f  |s memory locatio|
00000370  6e 20 0d 20 20 31 32 30  5b 4f 50 54 49 25 20 20  |n .  120[OPTI%  |
00000380  0d 20 20 31 33 30 4c 44  41 26 46 34 3a 53 54 41  |.  130LDA&F4:STA|
00000390  26 38 44 20 20 20 20 20  20 20 20 20 20 20 20 20  |&8D             |
000003a0  20 20 20 20 5c 20 73 61  76 65 20 74 68 65 20 63  |    \ save the c|
000003b0  75 72 72 65 6e 74 20 52  4f 4d 20 0d 20 20 31 34  |urrent ROM .  14|
000003c0  30 4c 44 41 23 26 30 43  3a 53 54 41 26 46 34 3a  |0LDA#&0C:STA&F4:|
000003d0  53 54 41 63 6f 6d 70 75  74 65 72 20 20 20 20 5c  |STAcomputer    \|
000003e0  20 70 61 74 63 68 20 66  6f 72 20 74 68 65 20 45  | patch for the E|
000003f0  6c 65 63 74 72 6f 6e 20  23 20 73 65 65 20 6e 6f  |lectron # see no|
00000400  74 65 20 31 20 0d 20 20  31 35 30 4c 44 59 23 30  |te 1 .  150LDY#0|
00000410  30 3a 4c 44 58 23 30 30  20 20 20 20 20 20 20 20  |0:LDX#00        |
00000420  20 20 20 20 20 20 20 20  20 5c 20 69 6e 69 74 69  |         \ initi|
00000430  61 6c 69 73 65 20 72 65  67 69 73 74 65 72 73 20  |alise registers |
00000440  20 20 23 20 73 65 65 20  6e 6f 74 65 20 32 20 0d  |  # see note 2 .|
00000450  20 20 31 36 30 4c 44 41  23 26 33 30 3a 53 54 41  |  160LDA#&30:STA|
00000460  26 38 46 20 20 20 20 20  20 20 20 20 20 20 20 20  |&8F             |
00000470  20 20 20 5c 20 73 74 6f  72 65 20 61 73 63 69 69  |   \ store ascii|
00000480  20 76 61 6c 75 65 20 66  6f 72 20 30 20 23 20 73  | value for 0 # s|
00000490  65 65 20 6e 6f 74 65 20  33 20 0d 20 20 31 37 30  |ee note 3 .  170|
000004a0  4a 53 52 26 46 46 45 37  20 20 20 20 20 20 20 20  |JSR&FFE7        |
000004b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 5c 20  |              \ |
000004c0  6e 65 77 20 6c 69 6e 65  20 61 74 20 73 74 61 72  |new line at star|
000004d0  74 20 6f 66 20 63 6f 6d  6d 61 6e 64 20 0d 20 20  |t of command .  |
000004e0  31 38 30 2e 63 6f 75 6e  74 20 20 0d 20 20 31 39  |180.count  .  19|
000004f0  30 53 54 59 26 46 34 3a  53 54 59 63 6f 6d 70 75  |0STY&F4:STYcompu|
00000500  74 65 72 20 20 20 20 20  20 20 20 20 20 20 20 5c  |ter            \|
00000510  20 73 65 74 20 75 70 20  52 4f 4d 20 66 6f 72 20  | set up ROM for |
00000520  72 65 61 64 69 6e 67 20  0d 20 20 32 30 30 49 4e  |reading .  200IN|
00000530  59 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |Y               |
00000540  20 20 20 20 20 20 20 20  20 20 20 20 5c 20 69 6e  |            \ in|
00000550  63 72 65 6d 65 6e 74 20  52 4f 4d 20 63 6f 75 6e  |crement ROM coun|
00000560  74 20 0d 20 20 32 31 30  43 50 59 23 31 37 20 20  |t .  210CPY#17  |
00000570  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000580  20 20 20 20 20 20 5c 20  63 68 65 63 6b 20 69 66  |      \ check if|
00000590  20 74 68 65 79 20 68 61  76 65 20 61 6c 6c 20 62  | they have all b|
000005a0  65 65 6e 20 72 65 61 64  20 0d 20 20 32 32 30 42  |een read .  220B|
000005b0  4e 45 72 65 61 64 77 72  69 74 65 20 0d 20 20 32  |NEreadwrite .  2|
000005c0  33 30 4a 53 52 26 46 46  45 37 20 20 20 20 20 20  |30JSR&FFE7      |
000005d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000005e0  5c 20 6e 65 77 20 6c 69  6e 65 20 61 74 20 65 6e  |\ new line at en|
000005f0  64 20 6f 66 20 63 6f 6d  6d 61 6e 64 20 0d 20 20  |d of command .  |
00000600  32 34 30 4a 4d 50 65 78  69 74 20 20 0d 20 20 32  |240JMPexit  .  2|
00000610  35 30 2e 72 65 61 64 77  72 69 74 65 20 20 0d 20  |50.readwrite  . |
00000620  20 32 36 30 4c 44 41 26  38 30 30 30 3a 53 54 41  | 260LDA&8000:STA|
00000630  26 38 45 20 20 20 20 20  20 20 20 20 20 20 20 20  |&8E             |
00000640  20 20 5c 20 0d 20 20 32  37 30 4c 44 41 23 26 46  |  \ .  270LDA#&F|
00000650  46 3a 53 54 41 26 38 30  30 30 20 20 20 20 20 20  |F:STA&8000      |
00000660  20 20 20 20 20 20 20 20  5c 20 0d 20 20 32 38 30  |        \ .  280|
00000670  4c 44 41 26 38 30 30 30  3a 43 4d 50 23 26 46 46  |LDA&8000:CMP#&FF|
00000680  20 20 20 20 20 20 20 20  20 20 20 20 20 20 5c 20  |              \ |
00000690  0d 20 20 32 39 30 42 4e  45 72 6f 6d 20 20 20 20  |.  290BNErom    |
000006a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000006b0  20 20 20 20 5c 20 52 41  4d 20 74 65 73 74 20 0d  |    \ RAM test .|
000006c0  20 20 33 30 30 4c 44 41  23 26 30 30 3a 53 54 41  |  300LDA#&00:STA|
000006d0  26 38 30 30 30 20 20 20  20 20 20 20 20 20 20 20  |&8000           |
000006e0  20 20 20 5c 20 74 65 73  74 20 66 6f 72 20 26 46  |   \ test for &F|
000006f0  46 20 61 6e 64 20 26 30  30 20 0d 20 20 33 31 30  |F and &00 .  310|
00000700  4c 44 41 26 38 30 30 30  3a 43 4d 50 23 26 30 30  |LDA&8000:CMP#&00|
00000710  20 20 20 20 20 20 20 20  20 20 20 20 20 20 5c 20  |              \ |
00000720  0d 20 20 33 32 30 42 4e  45 72 6f 6d 20 20 20 20  |.  320BNErom    |
00000730  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000740  20 20 20 20 5c 20 0d 20  20 33 33 30 4c 44 41 26  |    \ .  330LDA&|
00000750  38 45 3a 53 54 41 26 38  30 30 30 3a 4a 4d 50 72  |8E:STA&8000:JMPr|
00000760  61 6d 20 20 20 20 20 20  20 20 5c 20 0d 20 20 33  |am        \ .  3|
00000770  34 30 2e 72 6f 6d 20 20  0d 20 20 33 35 30 4a 53  |40.rom  .  350JS|
00000780  52 72 6f 6d 6e 75 6d 62  65 72 20 20 20 20 20 20  |Rromnumber      |
00000790  20 20 20 20 20 20 20 20  20 20 20 20 5c 20 6a 75  |            \ ju|
000007a0  6d 70 20 74 6f 20 70 72  69 6e 74 20 52 4f 4d 20  |mp to print ROM |
000007b0  6e 75 6d 62 65 72 20 6f  6e 20 73 63 72 65 65 6e  |number on screen|
000007c0  20 0d 20 20 33 36 30 4c  44 41 23 26 33 43 3a 4a  | .  360LDA#&3C:J|
000007d0  53 52 26 46 46 45 45 20  20 20 20 20 20 20 20 20  |SR&FFEE         |
000007e0  20 20 20 20 20 5c 20 70  72 69 6e 74 20 22 3c 22  |     \ print "<"|
000007f0  20 0d 20 20 33 37 30 4c  44 41 23 26 32 30 3a 4a  | .  370LDA#&20:J|
00000800  53 52 26 46 46 45 45 20  20 20 20 20 20 20 20 20  |SR&FFEE         |
00000810  20 20 20 20 20 5c 20 70  72 69 6e 74 20 22 20 22  |     \ print " "|
00000820  20 0d 20 20 33 38 30 4a  4d 50 74 79 70 65 20 20  | .  380JMPtype  |
00000830  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000840  20 20 20 20 20 5c 20 74  6f 20 74 79 70 65 20 74  |     \ to type t|
00000850  65 73 74 20 0d 20 20 33  39 30 2e 72 61 6d 20 20  |est .  390.ram  |
00000860  0d 20 20 34 30 30 4a 53  52 72 6f 6d 6e 75 6d 62  |.  400JSRromnumb|
00000870  65 72 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |er              |
00000880  20 20 20 20 5c 20 6a 75  6d 70 20 74 6f 20 70 72  |    \ jump to pr|
00000890  69 6e 74 20 52 4f 4d 20  6e 75 6d 62 65 72 20 6f  |int ROM number o|
000008a0  6e 20 73 63 72 65 65 6e  20 0d 20 20 34 31 30 4c  |n screen .  410L|
000008b0  44 41 23 26 33 43 3a 4a  53 52 26 46 46 45 45 20  |DA#&3C:JSR&FFEE |
000008c0  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 70  |             \ p|
000008d0  72 69 6e 74 20 22 3c 22  20 0d 20 20 34 32 30 4c  |rint "<" .  420L|
000008e0  44 41 23 26 35 32 3a 4a  53 52 26 46 46 45 45 20  |DA#&52:JSR&FFEE |
000008f0  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 70  |             \ p|
00000900  72 69 6e 74 20 22 52 22  20 0d 20 20 34 33 30 4a  |rint "R" .  430J|
00000910  4d 50 74 79 70 65 20 20  20 20 20 20 20 20 20 20  |MPtype          |
00000920  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 74  |             \ t|
00000930  6f 20 74 79 70 65 20 74  65 73 74 20 0d 20 20 34  |o type test .  4|
00000940  34 30 2e 74 79 70 65 20  20 0d 20 20 34 35 30 4c  |40.type  .  450L|
00000950  44 41 26 38 30 30 36 20  20 20 20 20 20 20 20 20  |DA&8006         |
00000960  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 72  |             \ r|
00000970  65 61 64 20 74 79 70 65  20 62 79 74 65 20 0d 20  |ead type byte . |
00000980  20 34 36 30 43 4d 50 23  26 43 32 3a 42 45 51 6c  | 460CMP#&C2:BEQl|
00000990  61 6e 67 73 65 72 76 20  20 20 20 20 20 20 20 20  |angserv         |
000009a0  20 20 5c 20 20 0d 20 20  34 37 30 43 4d 50 23 26  |  \  .  470CMP#&|
000009b0  43 30 3a 42 45 51 6c 61  6e 67 73 65 72 76 20 20  |C0:BEQlangserv  |
000009c0  20 20 20 20 20 20 20 20  20 5c 20 6c 6f 6f 6b 20  |         \ look |
000009d0  75 70 20 74 61 62 6c 65  20 0d 20 20 34 38 30 43  |up table .  480C|
000009e0  4d 50 23 26 38 32 3a 42  45 51 73 65 72 76 69 63  |MP#&82:BEQservic|
000009f0  65 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 0d  |e            \ .|
00000a00  20 20 34 39 30 43 4d 50  23 26 36 30 3a 42 45 51  |  490CMP#&60:BEQ|
00000a10  6c 61 6e 67 20 20 20 20  20 20 20 20 20 20 20 20  |lang            |
00000a20  20 20 20 5c 20 0d 20 20  35 30 30 30 4c 44 41 23  |   \ .  5000LDA#|
00000a30  26 32 30 3a 4a 53 52 26  46 46 45 45 3a 4a 53 52  |&20:JSR&FFEE:JSR|
00000a40  26 46 46 45 45 3a 4c 44  41 23 26 33 45 3a 4a 53  |&FFEE:LDA#&3E:JS|
00000a50  52 26 46 46 45 45 20 20  20 20 5c 20 65 6d 70 74  |R&FFEE    \ empt|
00000a60  79 20 52 4f 4d 20 70 72  69 6e 74 20 22 20 20 3e  |y ROM print "  >|
00000a70  22 20 0d 20 20 35 31 30  4a 53 52 26 46 46 45 37  |" .  510JSR&FFE7|
00000a80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000a90  20 20 20 20 20 20 5c 20  6e 65 77 20 6c 69 6e 65  |      \ new line|
00000aa0  20 66 6f 72 20 6e 65 78  74 20 65 6e 74 72 79 20  | for next entry |
00000ab0  0d 20 20 35 32 30 42 4e  45 63 6f 75 6e 74 20 20  |.  520BNEcount  |
00000ac0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000ad0  20 20 20 20 5c 20 6c 6f  6f 6b 20 66 6f 72 20 6e  |    \ look for n|
00000ae0  65 78 74 20 65 6e 74 72  79 20 0d 20 20 35 33 30  |ext entry .  530|
00000af0  2e 6c 61 6e 67 73 65 72  76 20 20 0d 20 20 35 34  |.langserv  .  54|
00000b00  30 4c 44 41 23 26 35 33  3a 4a 53 52 26 46 46 45  |0LDA#&53:JSR&FFE|
00000b10  45 20 20 20 20 20 20 20  20 20 20 20 20 20 20 5c  |E              \|
00000b20  20 70 72 69 6e 74 20 22  53 22 20 0d 20 20 35 35  | print "S" .  55|
00000b30  30 4c 44 41 23 26 34 43  3a 4a 53 52 26 46 46 45  |0LDA#&4C:JSR&FFE|
00000b40  45 20 20 20 20 20 20 20  20 20 20 20 20 20 20 5c  |E              \|
00000b50  20 70 72 69 6e 74 20 22  4c 22 20 0d 20 20 35 36  | print "L" .  56|
00000b60  30 4c 44 41 23 26 33 45  3a 4a 53 52 26 46 46 45  |0LDA#&3E:JSR&FFE|
00000b70  45 3a 4c 44 41 23 26 32  30 3a 4a 53 52 26 46 46  |E:LDA#&20:JSR&FF|
00000b80  45 45 20 20 20 20 20 20  20 20 5c 20 70 72 69 6e  |EE        \ prin|
00000b90  74 20 22 3e 20 22 20 0d  20 20 35 37 30 4a 4d 50  |t "> " .  570JMP|
00000ba0  72 65 61 64 20 20 0d 20  20 35 38 30 2e 6c 61 6e  |read  .  580.lan|
00000bb0  67 20 20 0d 20 20 35 39  30 4c 44 41 23 26 32 30  |g  .  590LDA#&20|
00000bc0  3a 4a 53 52 26 46 46 45  45 20 20 20 20 20 20 20  |:JSR&FFEE       |
00000bd0  20 20 20 20 20 20 20 5c  20 70 72 69 6e 74 20 22  |       \ print "|
00000be0  20 22 20 0d 20 20 36 30  30 4c 44 41 23 26 34 43  | " .  600LDA#&4C|
00000bf0  3a 4a 53 52 26 46 46 45  45 20 20 20 20 20 20 20  |:JSR&FFEE       |
00000c00  20 20 20 20 20 20 20 5c  20 70 72 69 6e 74 20 22  |       \ print "|
00000c10  4c 22 20 0d 20 20 36 31  30 4c 44 41 23 26 33 45  |L" .  610LDA#&3E|
00000c20  3a 4a 53 52 26 46 46 45  45 3a 4c 44 41 23 26 32  |:JSR&FFEE:LDA#&2|
00000c30  30 3a 4a 53 52 26 46 46  45 45 20 20 20 20 20 20  |0:JSR&FFEE      |
00000c40  20 20 5c 20 70 72 69 6e  74 20 22 3e 20 22 20 0d  |  \ print "> " .|
00000c50  20 20 36 32 30 4a 4d 50  72 65 61 64 20 20 0d 20  |  620JMPread  . |
00000c60  20 36 33 30 2e 73 65 72  76 69 63 65 20 20 0d 20  | 630.service  . |
00000c70  20 36 34 30 4c 44 41 23  26 35 33 3a 4a 53 52 26  | 640LDA#&53:JSR&|
00000c80  46 46 45 45 20 20 20 20  20 20 20 20 20 20 20 20  |FFEE            |
00000c90  20 20 5c 20 70 72 69 6e  74 20 22 53 22 20 0d 20  |  \ print "S" . |
00000ca0  20 36 35 30 4c 44 41 23  26 32 30 3a 4a 53 52 26  | 650LDA#&20:JSR&|
00000cb0  46 46 45 45 20 20 20 20  20 20 20 20 20 20 20 20  |FFEE            |
00000cc0  20 20 5c 20 70 72 69 6e  74 20 22 20 22 20 0d 20  |  \ print " " . |
00000cd0  20 36 36 30 4c 44 41 23  26 33 45 3a 4a 53 52 26  | 660LDA#&3E:JSR&|
00000ce0  46 46 45 45 3a 4c 44 41  23 26 32 30 3a 4a 53 52  |FFEE:LDA#&20:JSR|
00000cf0  26 46 46 45 45 20 20 20  20 20 20 20 20 5c 20 70  |&FFEE        \ p|
00000d00  72 69 6e 74 20 22 3e 20  22 20 0d 20 20 36 37 30  |rint "> " .  670|
00000d10  4a 4d 50 72 65 61 64 20  20 0d 20 20 36 38 30 2e  |JMPread  .  680.|
00000d20  67 61 70 20 20 0d 20 20  36 39 30 4c 44 41 23 26  |gap  .  690LDA#&|
00000d30  32 30 3a 4a 4d 50 74 65  73 74 31 20 20 20 20 20  |20:JMPtest1     |
00000d40  20 20 20 20 20 20 20 20  20 5c 20 69 6e 73 65 72  |         \ inser|
00000d50  74 20 73 70 61 63 65 20  0d 20 20 37 30 30 2e 69  |t space .  700.i|
00000d60  67 6e 6f 72 65 6c 66 20  20 0d 20 20 37 31 30 4c  |gnorelf  .  710L|
00000d70  44 41 23 26 30 30 3a 4a  4d 50 74 65 73 74 32 20  |DA#&00:JMPtest2 |
00000d80  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 69  |             \ i|
00000d90  6e 73 65 72 74 20 6e 75  6c 6c 20 0d 20 20 37 32  |nsert null .  72|
00000da0  30 2e 69 67 6e 6f 72 65  63 72 20 20 0d 20 20 37  |0.ignorecr  .  7|
00000db0  33 30 4c 44 41 23 26 30  30 3a 4a 4d 50 74 65 73  |30LDA#&00:JMPtes|
00000dc0  74 33 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |t3              |
00000dd0  5c 20 69 6e 73 65 72 74  20 6e 75 6c 6c 20 0d 20  |\ insert null . |
00000de0  20 37 34 30 2e 72 65 61  64 20 20 0d 20 20 37 35  | 740.read  .  75|
00000df0  30 4c 44 41 20 26 38 30  30 39 2c 58 20 20 20 20  |0LDA &8009,X    |
00000e00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 5c  |               \|
00000e10  20 6c 6f 61 64 20 66 69  72 73 74 20 61 6e 64 20  | load first and |
00000e20  73 75 63 63 65 73 73 69  76 65 20 63 68 61 72 61  |successive chara|
00000e30  63 74 65 72 73 20 0d 20  20 37 36 30 2e 74 65 73  |cters .  760.tes|
00000e40  74 31 20 20 0d 20 20 37  37 30 43 4d 50 23 26 30  |t1  .  770CMP#&0|
00000e50  30 3a 42 45 51 67 61 70  20 20 20 20 20 20 20 20  |0:BEQgap        |
00000e60  20 20 20 20 20 20 20 20  5c 20 69 66 20 6e 75 6c  |        \ if nul|
00000e70  6c 20 69 6e 73 65 72 74  20 73 70 61 63 65 20 0d  |l insert space .|
00000e80  20 20 37 38 30 2e 74 65  73 74 33 20 20 0d 20 20  |  780.test3  .  |
00000e90  37 39 30 43 4d 50 23 26  30 44 3a 42 45 51 69 67  |790CMP#&0D:BEQig|
00000ea0  6e 6f 72 65 63 72 20 20  20 20 20 20 20 20 20 20  |norecr          |
00000eb0  20 5c 20 69 66 20 43 52  20 69 6e 73 65 72 74 20  | \ if CR insert |
00000ec0  6e 75 6c 6c 20 0d 20 20  38 30 30 2e 74 65 73 74  |null .  800.test|
00000ed0  32 20 20 0d 20 20 38 31  30 43 4d 50 23 26 30 41  |2  .  810CMP#&0A|
00000ee0  3a 42 45 51 69 67 6e 6f  72 65 6c 66 20 20 20 20  |:BEQignorelf    |
00000ef0  20 20 20 20 20 20 20 5c  20 69 66 20 4c 46 20 69  |       \ if LF i|
00000f00  6e 73 65 72 74 20 6e 75  6c 6c 20 0d 20 20 38 32  |nsert null .  82|
00000f10  30 43 4d 50 23 26 32 38  20 20 20 20 20 20 20 20  |0CMP#&28        |
00000f20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 5c  |               \|
00000f30  20 63 68 65 63 6b 20 66  6f 72 20 65 6e 64 20 6f  | check for end o|
00000f40  66 20 74 69 74 6c 65 20  73 74 72 69 6e 67 20 0d  |f title string .|
00000f50  20 20 38 33 30 42 45 51  6e 65 77 6c 69 6e 65 20  |  830BEQnewline |
00000f60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000f70  20 20 20 5c 20 74 6f 20  6e 65 77 20 6c 69 6e 65  |   \ to new line|
00000f80  20 0d 20 20 38 34 30 4a  53 52 26 46 46 45 45 20  | .  840JSR&FFEE |
00000f90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000fa0  20 20 20 20 20 5c 20 70  72 69 6e 74 20 74 69 74  |     \ print tit|
00000fb0  6c 65 20 73 74 72 69 6e  67 20 63 68 61 72 61 63  |le string charac|
00000fc0  74 65 72 20 74 6f 20 73  63 72 65 65 6e 20 0d 20  |ter to screen . |
00000fd0  20 38 35 30 49 4e 58 20  20 20 20 20 20 20 20 20  | 850INX         |
00000fe0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000ff0  20 20 5c 20 69 6e 63 72  65 6d 65 6e 74 20 74 69  |  \ increment ti|
00001000  74 6c 65 20 73 74 72 69  6e 67 20 61 64 64 72 65  |tle string addre|
00001010  73 73 20 0d 20 20 38 36  30 4a 4d 50 72 65 61 64  |ss .  860JMPread|
00001020  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001030  20 20 20 20 20 20 20 5c  20 67 65 74 20 6e 65 78  |       \ get nex|
00001040  74 20 63 68 61 72 61 63  74 65 72 20 0d 20 20 38  |t character .  8|
00001050  37 30 2e 6e 65 77 6c 69  6e 65 20 20 0d 20 20 38  |70.newline  .  8|
00001060  38 30 4a 53 52 26 46 46  45 37 20 20 20 20 20 20  |80JSR&FFE7      |
00001070  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001080  5c 20 6e 65 77 20 6c 69  6e 65 20 66 6f 72 20 6e  |\ new line for n|
00001090  65 78 74 20 65 6e 74 72  79 20 0d 20 20 38 39 30  |ext entry .  890|
000010a0  4c 44 58 23 30 30 20 20  20 20 20 20 20 20 20 20  |LDX#00          |
000010b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 5c 20  |              \ |
000010c0  72 65 73 65 74 20 74 69  74 6c 65 20 73 74 72 69  |reset title stri|
000010d0  6e 67 20 61 64 64 72 65  73 73 20 72 65 67 69 73  |ng address regis|
000010e0  74 65 72 20 0d 20 20 39  30 30 4a 4d 50 63 6f 75  |ter .  900JMPcou|
000010f0  6e 74 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |nt              |
00001100  20 20 20 20 20 20 20 20  5c 20 67 6f 20 74 6f 20  |        \ go to |
00001110  6e 65 78 74 20 65 6e 74  72 79 20 0d 20 20 39 31  |next entry .  91|
00001120  30 2e 72 6f 6d 6e 75 6d  62 65 72 20 20 0d 20 20  |0.romnumber  .  |
00001130  39 32 30 4c 44 41 26 38  46 3a 43 4d 50 23 26 33  |920LDA&8F:CMP#&3|
00001140  41 3a 42 45 51 70 6f 6b  65 61 3a 4a 53 52 26 46  |A:BEQpokea:JSR&F|
00001150  46 45 45 20 20 20 20 5c  20 70 72 69 6e 74 20 52  |FEE    \ print R|
00001160  4f 4d 20 6e 75 6d 62 65  72 2c 20 4e 6f 2e 20 3e  |OM number, No. >|
00001170  20 74 68 61 6e 20 39 3f  20 0d 20 20 39 33 30 4c  | than 9? .  930L|
00001180  44 41 23 26 32 39 3a 4a  53 52 26 46 46 45 45 20  |DA#&29:JSR&FFEE |
00001190  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 70  |             \ p|
000011a0  72 69 6e 74 20 22 29 22  20 0d 20 20 39 34 30 4c  |rint ")" .  940L|
000011b0  44 41 23 26 32 30 3a 4a  53 52 26 46 46 45 45 20  |DA#&20:JSR&FFEE |
000011c0  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 70  |             \ p|
000011d0  72 69 6e 74 20 22 20 22  20 0d 20 20 39 35 30 49  |rint " " .  950I|
000011e0  4e 43 26 38 46 3a 52 54  53 20 20 20 20 20 20 20  |NC&8F:RTS       |
000011f0  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 69  |             \ i|
00001200  6e 63 72 65 6d 65 6e 74  20 52 4f 4d 20 6e 75 6d  |ncrement ROM num|
00001210  62 65 72 20 0d 20 20 39  36 30 2e 70 6f 6b 65 61  |ber .  960.pokea|
00001220  20 20 0d 20 20 39 37 30  4c 44 41 23 26 34 31 3a  |  .  970LDA#&41:|
00001230  53 54 41 26 38 46 3a 4a  4d 50 72 6f 6d 6e 75 6d  |STA&8F:JMPromnum|
00001240  62 65 72 20 20 20 5c 20  70 6f 6b 65 20 69 6e 20  |ber   \ poke in |
00001250  41 20 69 6e 74 6f 20 52  4f 4d 20 6e 75 6d 62 65  |A into ROM numbe|
00001260  72 20 73 74 6f 72 65 20  0d 20 20 39 38 30 2e 65  |r store .  980.e|
00001270  78 69 74 20 20 0d 20 20  39 39 30 4c 44 41 26 38  |xit  .  990LDA&8|
00001280  44 3a 53 54 41 26 46 34  3a 53 54 41 63 6f 6d 70  |D:STA&F4:STAcomp|
00001290  75 74 65 72 20 20 20 20  20 5c 20 72 65 73 74 6f  |uter     \ resto|
000012a0  72 65 20 63 6f 6d 70 75  74 65 72 20 74 6f 20 63  |re computer to c|
000012b0  75 72 72 65 6e 74 20 52  4f 4d 20 0d 20 31 30 30  |urrent ROM . 100|
000012c0  30 52 54 53 20 20 20 20  20 20 20 20 20 20 20 20  |0RTS            |
000012d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 5c  |               \|
000012e0  20 65 78 69 74 20 0d 20  31 30 31 30 5d 20 20 0d  | exit . 1010]  .|
000012f0  20 31 30 32 30 4e 45 58  54 20 20 0d 20 31 30 33  | 1020NEXT  . 103|
00001300  30 45 4e 44 50 52 4f 43  20 20 0d 20 0d 20 4e 6f  |0ENDPROC  . . No|
00001310  74 65 20 31 20 3a 20 46  6f 72 20 74 68 65 20 45  |te 1 : For the E|
00001320  6c 65 63 74 72 6f 6e 20  74 6f 20 61 63 63 65 73  |lectron to acces|
00001330  73 20 52 4f 4d 73 20 6c  6f 77 65 72 20 74 68 61  |s ROMs lower tha|
00001340  6e 20 42 41 53 49 43 2c  20 61 20 52 4f 4d 20 68  |n BASIC, a ROM h|
00001350  69 67 68 65 72 20 74 68  61 6e 20 0d 20 20 20 20  |igher than .    |
00001360  20 20 20 20 20 20 42 41  53 49 43 20 68 61 73 20  |      BASIC has |
00001370  74 6f 20 62 65 20 73 65  6c 65 63 74 65 64 20 66  |to be selected f|
00001380  69 72 73 74 2e 20 0d 20  0d 20 4e 6f 74 65 20 32  |irst. . . Note 2|
00001390  20 3a 20 59 20 72 65 67  69 73 74 65 72 20 68 6f  | : Y register ho|
000013a0  6c 64 73 20 74 68 65 20  52 4f 4d 20 63 6f 75 6e  |lds the ROM coun|
000013b0  74 2c 20 58 20 72 65 67  69 73 74 65 72 20 68 6f  |t, X register ho|
000013c0  6c 64 73 20 74 68 65 20  54 69 74 6c 65 20 73 74  |lds the Title st|
000013d0  72 69 6e 67 20 20 20 0d  20 20 20 20 20 20 20 20  |ring   .        |
000013e0  20 20 63 68 61 72 61 63  74 65 72 20 61 64 64 72  |  character addr|
000013f0  65 73 73 2e 20 0d 20 0d  20 4e 6f 74 65 20 33 20  |ess. . . Note 3 |
00001400  3a 20 4d 65 6d 6f 72 79  20 61 6c 6c 6f 63 61 74  |: Memory allocat|
00001410  69 6f 6e 20 2d 20 26 38  44 20 63 75 72 72 65 6e  |ion - &8D curren|
00001420  74 20 52 4f 4d 20 6e 75  6d 62 65 72 2c 20 26 38  |t ROM number, &8|
00001430  45 20 73 74 6f 72 65 20  66 6f 72 20 52 41 4d 20  |E store for RAM |
00001440  62 79 74 65 20 20 0d 20  20 20 20 20 20 20 20 20  |byte  .         |
00001450  20 64 75 72 69 6e 67 20  74 65 73 74 2c 20 26 38  | during test, &8|
00001460  46 20 61 73 63 69 69 20  63 6f 64 65 20 66 6f 72  |F ascii code for|
00001470  20 64 69 73 70 6c 61 79  65 64 20 52 4f 4d 20 6e  | displayed ROM n|
00001480  75 6d 62 65 72 73 2e 20  0d                       |umbers. .|
00001489
PROGS/ROMTXT2.m0
PROGS/ROMTXT2.m1
PROGS/ROMTXT2.m2
PROGS/ROMTXT2.m4
PROGS/ROMTXT2.m5