Home » CEEFAX disks » telesoftware1.adl » Roms/PROMPRG

Roms/PROMPRG

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 » CEEFAX disks » telesoftware1.adl
Filename: Roms/PROMPRG
Read OK:
File size: 1D19 bytes
Load address: FFFF3000
Exec address: FFFF8023
File contents
   10REM Softlife Eprom programming software 15/2/84
   20MODE7
   30PROCINITGLOBALS
   40ON ERROR PROCRESET:PRINT:REPORT:PRINT:IF ERR=17 THEN END ELSE PROCPROMPT
   50REPEAT
   60CLS
   70PRINT''CHR$(141);"   Softlife ";EPROMTYPE;" Eprom Programmer"'CHR$(141);"   Softlife ";EPROMTYPE;" Eprom Programmer"
   80PRINT''"    P(rogram Eprom from file"'"    W(rite Eprom to a file"'"    V(erify Eprom against file"'"    T(est Eprom is blank"
   90PRINT"    C(hecksum Eprom"'"    S(elect Eprom"'"    R(om Format"'"    M(os call"
  100PRINT''"    Make a selection - ";
  110ON INSTR("PWVTCSMRpwvtcsmr",GET$) GOSUB 140,310,370,470,500,530,580,620,  140,310,370,470,500,530,580,620 ELSE
  120UNTIL DOOMSDAY
  130END
  140PRINT"Program Eprom"
  150PROCLOADFILE(BUFF%)
  160FOR MEM%=BUFF% TO BUFFEND%-1 STEP EPROMSIZE
  170 REPEAT
  180  PROCPUTINROM
  190  IF FNNOTBLANK THEN GOTO 240
  200  IF BUFFEND%-MEM%>EPROMSIZE THEN MEMEND%=MEM%+EPROMSIZE-1 ELSE MEMEND%=BUFFEND%-1
  210  PROCBLOWROM(MEM%,MEMEND%)
  220  PROCVERIFYROM(MEM%,MEMEND%)
  230  PROCCRC
  240  PROCTAKEOUTROM
  250  PRINT'"    Repeat this Eprom Y/N - ";
  260  A$=GET$
  270  IF A$="Y" OR A$="y" THEN PRINT"Yes"
  280 UNTIL A$<>"Y" AND A$<>"y"
  290NEXT MEM%
  300RETURN
  310PRINT"Write Eprom"
  320PROCPUTINROM
  330PROCREADPROM(BUFF%)
  340PROCSAVEPROM(BUFF%)
  350PROCTAKEOUTROM
  360RETURN
  370PRINT"Verify Eprom"
  380PROCLOADFILE(BUFF%)
  390FOR MEM%=BUFF% TO BUFFEND%-1 STEP EPROMSIZE
  400 PROCPUTINROM
  410 IF BUFFEND%-MEM%>EPROMSIZE THEN MEMEND%=MEM%+EPROMSIZE-1 ELSE MEMEND%=BUFFEND%-1
  420 PROCVERIFYROM(MEM%,MEMEND%)
  430 PROCCRC
  440 PROCTAKEOUTROM
  450NEXT MEM%
  460RETURN
  470PRINT"Test Eprom blank"
  480PROCPUTINROM:X%=FNNOTBLANK:PROCTAKEOUTROM
  490RETURN
  500PRINT"Checksum Eprom"
  510PROCPUTINROM:PROCCRC:PROCTAKEOUTROM
  520RETURN
  530PRINT"Select Eprom"
  540INPUT"    Type new Eprom   - "X
  550IF X=2764 OR X=27128 THEN EPROMTYPE=X:EPROMSIZE=&2000*(1-(X=27128)) ELSE PRINT"    Unknown Eprom type"
  560PROCPROMPT
  570RETURN
  580INPUT'"    *" $OSLINE
  590X%=OSLINE:Y%=OSLINE DIV 256:CALL &FFF7
  600PROCPROMPT
  610RETURN
  620PRINT"Rom Format"
  630PRINT"    Files to format"
  640PROCHEADER(BUFF%)
  650REPEAT
  660 INPUT"    Type file name   - " $FILENAME%
  670 IF $FILENAME%<>"" THEN IF FNFILEINFOK THEN PROCFORMATFILE
  680UNTIL $FILENAME%=""
  690?BUFMARK%=ASC("+"):BUFFEND%=BUFMARK%+1
  700GOTO160
  710 
  720DEF FNNOTBLANK
  730LOCAL I%,NTBLANK%
  740?&81=EPROMSIZE DIV 256
  750NTBLANK%=(USR(BLANK) AND &FF)<>&FF
  760PROCRESET
  770IF NTBLANK% THEN PRINT"    Eprom not blank" ELSE PRINT"    Eprom is blank"
  780=NTBLANK%
  790DEF PROCBLOWROM(START%,FINISH%)
  800LOCAL I%
  810PRINT"    Programming time :     secs";
  820?DATDIR=OUT:REM DATADIR=O/P
  830CALL TURNON21
  840FOR I%=1 TO 1600:NEXT I%:REM LET 21V SETTLE
  850 T%=(FINISH%-START%+1)*50E-3 +1
  860 FOR I%=START% TO FINISH%
  870  A%=?I%:CALL PGM
  880  IF((I%-START%) MOD 20)=0 THEN PRINTTAB(23,VPOS);T%;" ";:T%=T%-1
  890NEXT I%
  900PROCRESET:REM DATADIR=I/P RESET COUNTERS
  910PRINTTAB(16,VPOS);"Complete         "
  920FORI%=1 TO 1600:NEXTI%:REM LET 21V GO OFF
  930ENDPROC
  940DEF PROCVERIFYROM(START%,FINISH%)
  950LOCAL I%,VER%
  960?&80=FINISH%+1
  970Y%=(START%-FINISH%-1) AND &FF
  980?&81=(START%-Y%) DIV 256
  990?&82=(FINISH%-START%) DIV 256+1
 1000VER%=USR(VERFY) AND &FF00
 1010PROCRESET
 1020IF VER% THEN PRINT"    Eprom verified OK" ELSE PRINT"    Eprom verify failed"
 1030ENDPROC
 1040DEF PROCINITGLOBALS
 1050LOCAL I%
 1060CTRL%=&FE6C:DAT%=&FE60:DATDIR=&FE62:INP=0:OUT=&FF:SEL=&CF:UNSEL=&FF:ACR=&FE6B:SR=&FE6A:PCR=&FE6C
 1070EPROMTYPE=2764:EPROMSIZE=&2000
 1080DIM BUFF% &4000,CB% 20,FILENAME% 20,CODE% 250,OSLINE 30
 1090?DAT%=&FF:?DATDIR=INP
 1100DOOMSDAY=FALSE
 1110PROCRESET
 1120FORI%=0 TO 2 STEP 2
 1130P%=CODE%
 1140[
 1150 OPT I%
 1160.BLANK
 1170LDA #0:STA &80:LDA #&FF:LDY #SEL:LDX #UNSEL
 1180.LOOP
 1190STY CTRL%:AND DAT%:STX CTRL%:DEC &80:BNE LOOP:DEC &81:BNE LOOP
 1200RTS
 1210.CRC
 1220LDA #0
 1230STA &80 \COUNTER
 1240STA &82
 1250STA &83 \CRC
 1260.OUTLOOP
 1270LDY#SEL:STY CTRL%:LDA DAT%:LDY #UNSEL:STY CTRL%:LDX #&8
 1280.INLOOP
 1290LSR A:ROL &82:ROL &83:BCC SKIP:TAY:LDA &82:EOR #&2D:STA &82:TYA
 1300.SKIP 
 1310DEX:BNE INLOOP:DEC &80:BNE OUTLOOP:DEC &81:BNE OUTLOOP
 1320LDA &82:LDX &83
 1330RTS
 1340.VERFY
 1350LDX #&FF \VERIFY FLAG  
 1360.VERLOOP
 1370LDA #SEL:STA CTRL%:LDA DAT%:CMP (&80),Y
 1380BEQ VEROK
 1390LDX #&00 \VERIFY FAIL
 1400.VEROK
 1410LDA #UNSEL
 1420STA CTRL%
 1430INY
 1440BNE VERLOOP
 1450INC &81 \INCR COUNT
 1460DEC &82 \DEC NO PAGES
 1470BNE VERLOOP
 1480RTS
 1490.TURNON21
 1500LDY #0:LDA #&40:STA &80
 1510.PULSE
 1520LDA #SEL:STA CTRL%:LDA #UNSEL:STA CTRL%:DEY:BNE PULSE:DEC &80:BNE PULSE
 1530 RTS
 1540.PGM
 1550LDY #0:STY &80:LDY #49:STY &81:STA DAT%:PHP:SEI:LDY #SEL:STY CTRL%
 1560CMP #&FF:BEQ NODEL
 1570.WAIT \MUST NOT CROSS PAGE
 1580DEC &80:BNE WAIT:DEC &81:BNE WAIT
 1590.NODEL
 1600LDY #UNSEL:STY CTRL%:PLP
 1610RTS
 1620.REED
 1630LDX #SEL:STX CTRL%:LDA DAT%:LDX #UNSEL:STX CTRL%:STA (&80),Y:INY
 1640BNE REED
 1650INC &81
 1660DEC &82
 1670BNE REED
 1680RTS
 1690.TAPECRC
 1700LDA #0
 1710STA &82 \CRC
 1720STA &83
 1730TAY
 1740.NBYT LDA &82
 1750EOR (&80),Y
 1760STA &82
 1770LDX #8
 1780.LOOP LDA &82
 1790ROL A:BCC B7Z:LDA &82:EOR #8:STA &82:LDA &83:EOR #&10:STA &83
 1800.B7Z ROL &83
 1810ROL &82
 1820DEX
 1830BNE LOOP
 1840INY
 1850CPY &84
 1860BNE NBYT
 1870RTS
 1880.CODEEND
 1890]
 1900NEXTI%
 1910ENDPROC
 1920DEF PROCLOADFILE(START%)
 1930LOCAL I%
 1940INPUT"    Type file name   - "$FILENAME%
 1950!CB%=FILENAME%
 1960CB%!2=START%
 1970CB%!6=0
 1975A%=0:Y%=0:IF(USR&FFDA AND &FF)<4 THEN *OPT1,2
 1980A%=&FF:X%=CB%:Y%=CB% DIV 256:CALL&FFDD:REM OSFILE
 1990BUFFEND%=BUFF%+CB%!&A
 2000ENDPROC
 2010 
 2020DEF PROCCRC
 2030LOCAL I%
 2040PRINT"    Eprom checksum is ";
 2050?&81=(EPROMSIZE-1) DIV 256 +1
 2060I%=(USR(CRC) AND &FFFF)
 2070PRINT;~I%
 2080PROCRESET
 2090ENDPROC
 2100DEF PROCREADPROM(START%)
 2110LOCAL I%
 2120?&80=START%:?&81=START% DIV 256
 2130?&82=(EPROMSIZE-1)DIV 256 +1:Y%=0
 2140CALL REED
 2150PROCRESET
 2160PRINT"    Eprom read"
 2170ENDPROC
 2180DEF PROCPUTINROM
 2190PRINT"    Insert Eprom and press any key ";:X%=GET:PRINT
 2200PROCRESET
 2210ENDPROC
 2220DEF PROCTAKEOUTROM
 2230PROCRESET:REM TURN OFF 21 VOLTS
 2240PRINT"    Remove Eprom and press any key ";:X%=GET
 2250ENDPROC
 2260DEF PROCSAVEPROM(START%)
 2270LOCAL I%
 2280INPUT"    File to save as - "$FILENAME%
 2290!CB%=FILENAME%
 2300CB%!2=START%:CB%!6=START%:CB%!&A=START%:CB%!&E=START%+EPROMSIZE
 2310A%=0:X%=CB%:Y%=CB% DIV 256:CALL &FFDD:REM OS FILE
 2320ENDPROC
 2330DEF PROCRESET
 2340?ACR=&18:?SR=&FF:?ACR=&00:REM RESET COUNTERS
 2350?CTRL%=UNSEL:REM UNSELECT EPROM
 2360?DATDIR=INP
 2370ENDPROC
 2380DEF PROCPROMPT
 2390PRINT"    Press any key to continue ";:X%=GET
 2400ENDPROC
 2410DEF PROCHEADER(START%)
 2420LOCAL I%
 2430FORI%=0 TO &48 STEP 4
 2440  READ START%!I%
 2450NEXTI%
 2460RESTORE
 2470BUFMARK%=START%+&4B
 2480DATA &4C000000,&B818010,&4C5300,&294328,&1BD00DC9,&F499848,&1190F4C5,&F6854BA9,&F78580A9,&F49F4A5
 2490DATA &474CF585,&C9606880,&48FBD00E,&F49F5A5,&F1D0F4C5,&F6B100A0,&D0F6E6A8,&68F7E602,&6000A9
 2500ENDPROC
 2510DEF PROCFORMATFILE  
 2520 LOCAL BLKNO%
 2530BLKNO%=0
 2540IF LEFTDATA%>256 THEN PROCHEAD(BUFMARK%,FILENAME%,LLOADADDR%,EXECADDR%,BLKNO%,0,&100):IF LEFTDATA%>256 THEN REPEAT:PROCHASHHEAD:UNTIL LEFTDATA%<=256
 2550 PROCHEAD(BUFMARK%,FILENAME%,LLOADADDR%,EXECADDR%,BLKNO%,&80,LEFTDATA%)
 2560CLOSE#CHAN%
 2570ENDPROC
 2580DEF FNFILEINFOK
 2590LOCAL L$,TAPE
 2600A%=0:Y%=0:TAPE=(USR&FFDA AND &FF)<4
 2610CHAN%=OPENUP($FILENAME%)
 2620IF TAPE THEN LLOADADDR%=!&3BE:EXECADDR%=!&3C2:INPUT'"    Type file length - &" L$ :LEFTDATA%=EVAL("&"+L$) ELSE!CB%=FILENAME%:A%=5:X%=CB% MOD 256:Y%=CB% DIV 256:CALL &FFDD:LLOADADDR%=CB%!2:EXECADDR%=CB%!6:LEFTDATA%=CB%!10
 2630NXTPOINT%=&8000+BUFMARK%-BUFF%+(LEN($FILENAME%)+23)-(LEN($FILENAME%)+23)*(LEFTDATA%>256)-3*(LEFTDATA%>512)*(((LEFTDATA%-1) DIV 256)-1)+LEFTDATA%
 2640INFGOOD=(NXTPOINT%<&8000+EPROMSIZE-1)AND (CHAN%<>0)
 2650IF NOT INFGOOD THEN PRINT"    File not found or too big for ";EPROMTYPE :CLOSE#CHAN%
 2660=INFGOOD
 2670DEF PROCHEAD(POINTER%,FILEPOINT%,LADDR%,EXADDR%,BLOCKNO%,FLAG%,SIZE%)
 2680LOCAL I%
 2690?POINTER%=ASC("*")
 2700POINTER%=POINTER%+1
 2710$POINTER%=$FILEPOINT%
 2720I%=LEN($FILEPOINT%)+POINTER%
 2730?I%=0
 2740I%!1=LADDR%
 2750I%!5=EXADDR%
 2760I%!9=BLOCKNO%
 2770I%!11=SIZE%
 2780I%?13=FLAG%
 2790I%!14=NXTPOINT%
 2800!&80=POINTER%:?&84=I%-POINTER%+18:CALL TAPECRC
 2810I%!18=!&82
 2820BUFMARK%=I%+20
 2830PROCDATA(SIZE%)
 2840BLKNO%=BLKNO%+1
 2850ENDPROC
 2860DEF PROCDATA(SIZE%)
 2870LOCAL I%
 2880FORI%=0 TO SIZE%-1
 2890 BUFMARK%?I%=BGET#CHAN%
 2900NEXTI%
 2910!&80=BUFMARK%:?&84=SIZE%:CALL TAPECRC
 2920BUFMARK%!SIZE%=!&82
 2930LEFTDATA%=LEFTDATA%-SIZE%
 2940BUFMARK%=BUFMARK%+SIZE%+2
 2950ENDPROC
 2960DEF PROCHASHHEAD
 2970?BUFMARK%=ASC("#")
 2980BUFMARK%=BUFMARK%+1
 2990PROCDATA(&100)
 3000BLKNO%=BLKNO%+1
 3010ENDPROC

1� Softlife Eprom programming software 15/2/84
�7
�INITGLOBALS
()� � �RESET:�:�:�:� �=17 � � � �PROMPT
2�
<�
Fn�''�(141);"   Softlife ";EPROMTYPE;" Eprom Programmer"'�(141);"   Softlife ";EPROMTYPE;" Eprom Programmer"
P~�''"    P(rogram Eprom from file"'"    W(rite Eprom to a file"'"    V(erify Eprom against file"'"    T(est Eprom is blank"
ZP�"    C(hecksum Eprom"'"    S(elect Eprom"'"    R(om Format"'"    M(os call"
d!�''"    Make a selection - ";
nr� �"PWVTCSMRpwvtcsmr",�) � �tL@,�TvA,�DrA,�dVA,�dtA,�TRB,�DDB,�DlB,  �tL@,�TvA,�DrA,�dVA,�dtA,�TRB,�DDB,�DlB �
x� DOOMSDAY
��
��"Program Eprom"
��LOADFILE(BUFF%)
�)� MEM%=BUFF% � BUFFEND%-1 � EPROMSIZE
� �
�  �PUTINROM
�  � �NOTBLANK � � �dp@
�O  � BUFFEND%-MEM%>EPROMSIZE � MEMEND%=MEM%+EPROMSIZE-1 � MEMEND%=BUFFEND%-1
�  �BLOWROM(MEM%,MEMEND%)
�  �VERIFYROM(MEM%,MEMEND%)
�
  �CRC
�  �TAKEOUTROM
�'  �'"    Repeat this Eprom Y/N - ";

  A$=�
   � A$="Y" � A$="y" � �"Yes"
 � A$<>"Y" � A$<>"y"
"
� MEM%
,�
6�"Write Eprom"
@
�PUTINROM
J�READPROM(BUFF%)
T�SAVEPROM(BUFF%)
^�TAKEOUTROM
h�
r�"Verify Eprom"
|�LOADFILE(BUFF%)
�)� MEM%=BUFF% � BUFFEND%-1 � EPROMSIZE
� �PUTINROM
�N � BUFFEND%-MEM%>EPROMSIZE � MEMEND%=MEM%+EPROMSIZE-1 � MEMEND%=BUFFEND%-1
� �VERIFYROM(MEM%,MEMEND%)
�	 �CRC
� �TAKEOUTROM
�
� MEM%
��
��"Test Eprom blank"
�&�PUTINROM:X%=�NOTBLANK:�TAKEOUTROM
��
��"Checksum Eprom"
��PUTINROM:�CRC:�TAKEOUTROM
�
�"Select Eprom"
�"    Type new Eprom   - "X
&^� X=2764 � X=27128 � EPROMTYPE=X:EPROMSIZE=&2000*(1-(X=27128)) � �"    Unknown Eprom type"
0�PROMPT
:�
D�'"    *" $OSLINE
N%X%=OSLINE:Y%=OSLINE � 256:� &FFF7
X�PROMPT
b�
l�"Rom Format"
v�"    Files to format"
��HEADER(BUFF%)
��
�* �"    Type file name   - " $FILENAME%
�2 � $FILENAME%<>"" � � �FILEINFOK � �FORMATFILE
�� $FILENAME%=""
�(?BUFMARK%=�("+"):BUFFEND%=BUFMARK%+1
�	�t`@
� 
�� �NOTBLANK
�� I%,NTBLANK%
�?&81=EPROMSIZE � 256
�"NTBLANK%=(�(BLANK) � &FF)<>&FF
�
�RESET
?� NTBLANK% � �"    Eprom not blank" � �"    Eprom is blank"

=NTBLANK%
� �BLOWROM(START%,FINISH%)
 � I%
*'�"    Programming time :     secs";
4?DATDIR=OUT:� DATADIR=O/P
>� TURNON21
H'� I%=1 � 1600:� I%:� LET 21V SETTLE
R# T%=(FINISH%-START%+1)*50E-3 +1
\ � I%=START% � FINISH%
f  A%=?I%:� PGM
p5  �((I%-START%) � 20)=0 � �23,�);T%;" ";:T%=T%-1
z� I%
�'�RESET:� DATADIR=I/P RESET COUNTERS
��16,�);"Complete         "
�%�I%=1 � 1600:�I%:� LET 21V GO OFF
��
� � �VERIFYROM(START%,FINISH%)
�
� I%,VER%
�?&80=FINISH%+1
�Y%=(START%-FINISH%-1) � &FF
�?&81=(START%-Y%) � 256
�!?&82=(FINISH%-START%) � 256+1
�VER%=�(VERFY) � &FF00
�
�RESET
�B� VER% � �"    Eprom verified OK" � �"    Eprom verify failed"
�
� �INITGLOBALS
� I%
$dCTRL%=&FE6C:DAT%=&FE60:DATDIR=&FE62:INP=0:OUT=&FF:SEL=&CF:UNSEL=&FF:ACR=&FE6B:SR=&FE6A:PCR=&FE6C
."EPROMTYPE=2764:EPROMSIZE=&2000
89� BUFF% &4000,CB% 20,FILENAME% 20,CODE% 250,OSLINE 30
B?DAT%=&FF:?DATDIR=INP
LDOOMSDAY=�
V
�RESET
`�I%=0 � 2 � 2
jP%=CODE%
t[
~ OPT I%
�
.BLANK
�/LDA #0:STA &80:LDA #&FF:LDY #SEL:LDX #UNSEL
�	.LOOP
�@STY CTRL%:� DAT%:STX CTRL%:DEC &80:BNE LOOP:DEC &81:BNE LOOP
�RTS
�.CRC
�
LDA #0
�STA &80 \COUNTER
�STA &82
�STA &83 \CRC
�.OUTLOOP
�;LDY#SEL:STY CTRL%:LDA DAT%:LDY #UNSEL:STY CTRL%:LDX #&8
.INLOOP

ALSR A:ROL &82:ROL &83:BCC SKIP:TAY:LDA &82:� #&2D:STA &82:TYA

.SKIP 
:DEX:BNE INLOOP:DEC &80:BNE OUTLOOP:DEC &81:BNE OUTLOOP
(LDA &82:LDX &83
2RTS
<
.VERFY
FLDX #&FF \VERIFY FLAG  
P.VERLOOP
Z+LDA #SEL:STA CTRL%:LDA DAT%:CMP (&80),Y
d
BEQ VEROK
nLDX #&00 \VERIFY FAIL
x
.VEROK
�LDA #UNSEL
�
STA CTRL%
�INY
�BNE VERLOOP
�INC &81 \INCR �
�DEC &82 \DEC NO PAGES
�BNE VERLOOP
�RTS
�
.TURNON21
�LDY #0:LDA #&40:STA &80
�
.PULSE
�KLDA #SEL:STA CTRL%:LDA #UNSEL:STA CTRL%:DEY:BNE PULSE:DEC &80:BNE PULSE
� RTS
.PGM
FLDY #0:STY &80:LDY #49:STY &81:STA DAT%:PHP:SEI:LDY #SEL:STY CTRL%
CMP #&FF:BEQ NODEL
".WAIT \MUST � CROSS �
,%DEC &80:BNE WAIT:DEC &81:BNE WAIT
6
.NODEL
@LDY #UNSEL:STY CTRL%:PLP
JRTS
T	.REED
^DLDX #SEL:STX CTRL%:LDA DAT%:LDX #UNSEL:STX CTRL%:STA (&80),Y:INY
hBNE REED
rINC &81
|DEC &82
�BNE REED
�RTS
�.TAPECRC
�
LDA #0
�STA &82 \CRC
�STA &83
�TAY
�.NBYT LDA &82
�
� (&80),Y
�STA &82
�
LDX #8
�.LOOP LDA &82
�=ROL A:BCC B7Z:LDA &82:� #8:STA &82:LDA &83:� #&10:STA &83
.B7Z ROL &83
ROL &82
DEX
&BNE LOOP
0INY
:CPY &84
DBNE NBYT
NRTS
X.CODEEND
b]
l�I%
v�
�� �LOADFILE(START%)
�� I%
�(�"    Type file name   - "$FILENAME%
�!CB%=FILENAME%
�CB%!2=START%
�CB%!6=0
�)A%=0:Y%=0:�(�&FFDA � &FF)<4 � *OPT1,2
�.A%=&FF:X%=CB%:Y%=CB% � 256:�&FFDD:� OSFILE
�BUFFEND%=BUFF%+CB%!&A
��
� 
�
� �CRC
�� I%
��"    Eprom checksum is ";
?&81=(EPROMSIZE-1) � 256 +1
I%=(�(CRC) � &FFFF)
	�;~I%
 
�RESET
*�
4� �READPROM(START%)
>� I%
H!?&80=START%:?&81=START% � 256
R#?&82=(EPROMSIZE-1)� 256 +1:Y%=0
\
� REED
f
�RESET
p�"    Eprom read"
z�
�� �PUTINROM
�2�"    Insert Eprom and press any key ";:X%=�:�
�
�RESET
��
�� �TAKEOUTROM
��RESET:� TURN OFF 21 VOLTS
�0�"    Remove Eprom and press any key ";:X%=�
��
�� �SAVEPROM(START%)
�� I%
�'�"    File to save as - "$FILENAME%
�!CB%=FILENAME%
�CCB%!2=START%:CB%!6=START%:CB%!&A=START%:CB%!&E=START%+EPROMSIZE
	.A%=0:X%=CB%:Y%=CB% � 256:� &FFDD:� OS FILE
	�
	� �RESET
	$.?ACR=&18:?SR=&FF:?ACR=&00:� RESET COUNTERS
	.!?CTRL%=UNSEL:� UNSELECT EPROM
	8?DATDIR=INP
	B�
	L
� �PROMPT
	V+�"    Press any key to continue ";:X%=�
	`�
	j� �HEADER(START%)
	t� I%
	~�I%=0 � &48 � 4
	�  � START%!I%
	��I%
	��
	�BUFMARK%=START%+&4B
	�b� &4C000000,&B818010,&4C5300,&294328,&1BD00DC9,&F499848,&1190F4C5,&F6854BA9,&F78580A9,&F49F4A5
	�\� &474CF585,&C9606880,&48FBD00E,&F49F5A5,&F1D0F4C5,&F6B100A0,&D0F6E6A8,&68F7E602,&6000A9
	��
	�� �FORMATFILE  
	�
 � BLKNO%
	�BLKNO%=0
	�� LEFTDATA%>256 � �HEAD(BUFMARK%,FILENAME%,LLOADADDR%,EXECADDR%,BLKNO%,0,&100):� LEFTDATA%>256 � �:�HASHHEAD:� LEFTDATA%<=256
	�H �HEAD(BUFMARK%,FILENAME%,LLOADADDR%,EXECADDR%,BLKNO%,&80,LEFTDATA%)
�#CHAN%

�
� �FILEINFOK

� L$,TAPE
(#A%=0:Y%=0:TAPE=(�&FFDA � &FF)<4
2CHAN%=�($FILENAME%)
<�� TAPE � LLOADADDR%=!&3BE:EXECADDR%=!&3C2:�'"    Type file length - &" L$ :LEFTDATA%=�("&"+L$) �!CB%=FILENAME%:A%=5:X%=CB% � 256:Y%=CB% � 256:� &FFDD:LLOADADDR%=CB%!2:EXECADDR%=CB%!6:LEFTDATA%=CB%!10
F�NXTPOINT%=&8000+BUFMARK%-BUFF%+(�($FILENAME%)+23)-(�($FILENAME%)+23)*(LEFTDATA%>256)-3*(LEFTDATA%>512)*(((LEFTDATA%-1) � 256)-1)+LEFTDATA%
P5INFGOOD=(NXTPOINT%<&8000+EPROMSIZE-1)� (CHAN%<>0)
ZJ� � INFGOOD � �"    File not found or too big for ";EPROMTYPE :�#CHAN%
d=INFGOOD
nD� �HEAD(POINTER%,FILEPOINT%,LADDR%,EXADDR%,BLOCKNO%,FLAG%,SIZE%)
x� I%
�?POINTER%=�("*")
�POINTER%=POINTER%+1
�$POINTER%=$FILEPOINT%
�I%=�($FILEPOINT%)+POINTER%
�	?I%=0
�I%!1=LADDR%
�I%!5=EXADDR%
�I%!9=BLOCKNO%
�I%!11=SIZE%
�I%?13=FLAG%
�I%!14=NXTPOINT%
�/!&80=POINTER%:?&84=I%-POINTER%+18:� TAPECRC
�I%!18=!&82
BUFMARK%=I%+20
�DATA(SIZE%)
BLKNO%=BLKNO%+1
"�
,� �DATA(SIZE%)
6� I%
@�I%=0 � SIZE%-1
J BUFMARK%?I%=�#CHAN%
T�I%
^&!&80=BUFMARK%:?&84=SIZE%:� TAPECRC
hBUFMARK%!SIZE%=!&82
rLEFTDATA%=LEFTDATA%-SIZE%
|BUFMARK%=BUFMARK%+SIZE%+2
��
�� �HASHHEAD
�?BUFMARK%=�("#")
�BUFMARK%=BUFMARK%+1
��DATA(&100)
�BLKNO%=BLKNO%+1
��
�
00000000  0d 00 0a 31 f4 20 53 6f  66 74 6c 69 66 65 20 45  |...1. Softlife E|
00000010  70 72 6f 6d 20 70 72 6f  67 72 61 6d 6d 69 6e 67  |prom programming|
00000020  20 73 6f 66 74 77 61 72  65 20 31 35 2f 32 2f 38  | software 15/2/8|
00000030  34 0d 00 14 06 eb 37 0d  00 1e 10 f2 49 4e 49 54  |4.....7.....INIT|
00000040  47 4c 4f 42 41 4c 53 0d  00 28 29 ee 20 85 20 f2  |GLOBALS..(). . .|
00000050  52 45 53 45 54 3a f1 3a  f6 3a f1 3a e7 20 9f 3d  |RESET:.:.:.:. .=|
00000060  31 37 20 8c 20 e0 20 8b  20 f2 50 52 4f 4d 50 54  |17 . . . .PROMPT|
00000070  0d 00 32 05 f5 0d 00 3c  05 db 0d 00 46 6e f1 27  |..2....<....Fn.'|
00000080  27 bd 28 31 34 31 29 3b  22 20 20 20 53 6f 66 74  |'.(141);"   Soft|
00000090  6c 69 66 65 20 22 3b 45  50 52 4f 4d 54 59 50 45  |life ";EPROMTYPE|
000000a0  3b 22 20 45 70 72 6f 6d  20 50 72 6f 67 72 61 6d  |;" Eprom Program|
000000b0  6d 65 72 22 27 bd 28 31  34 31 29 3b 22 20 20 20  |mer"'.(141);"   |
000000c0  53 6f 66 74 6c 69 66 65  20 22 3b 45 50 52 4f 4d  |Softlife ";EPROM|
000000d0  54 59 50 45 3b 22 20 45  70 72 6f 6d 20 50 72 6f  |TYPE;" Eprom Pro|
000000e0  67 72 61 6d 6d 65 72 22  0d 00 50 7e f1 27 27 22  |grammer"..P~.''"|
000000f0  20 20 20 20 50 28 72 6f  67 72 61 6d 20 45 70 72  |    P(rogram Epr|
00000100  6f 6d 20 66 72 6f 6d 20  66 69 6c 65 22 27 22 20  |om from file"'" |
00000110  20 20 20 57 28 72 69 74  65 20 45 70 72 6f 6d 20  |   W(rite Eprom |
00000120  74 6f 20 61 20 66 69 6c  65 22 27 22 20 20 20 20  |to a file"'"    |
00000130  56 28 65 72 69 66 79 20  45 70 72 6f 6d 20 61 67  |V(erify Eprom ag|
00000140  61 69 6e 73 74 20 66 69  6c 65 22 27 22 20 20 20  |ainst file"'"   |
00000150  20 54 28 65 73 74 20 45  70 72 6f 6d 20 69 73 20  | T(est Eprom is |
00000160  62 6c 61 6e 6b 22 0d 00  5a 50 f1 22 20 20 20 20  |blank"..ZP."    |
00000170  43 28 68 65 63 6b 73 75  6d 20 45 70 72 6f 6d 22  |C(hecksum Eprom"|
00000180  27 22 20 20 20 20 53 28  65 6c 65 63 74 20 45 70  |'"    S(elect Ep|
00000190  72 6f 6d 22 27 22 20 20  20 20 52 28 6f 6d 20 46  |rom"'"    R(om F|
000001a0  6f 72 6d 61 74 22 27 22  20 20 20 20 4d 28 6f 73  |ormat"'"    M(os|
000001b0  20 63 61 6c 6c 22 0d 00  64 21 f1 27 27 22 20 20  | call"..d!.''"  |
000001c0  20 20 4d 61 6b 65 20 61  20 73 65 6c 65 63 74 69  |  Make a selecti|
000001d0  6f 6e 20 2d 20 22 3b 0d  00 6e 72 ee 20 a7 22 50  |on - ";..nr. ."P|
000001e0  57 56 54 43 53 4d 52 70  77 76 74 63 73 6d 72 22  |WVTCSMRpwvtcsmr"|
000001f0  2c be 29 20 e4 20 8d 74  4c 40 2c 8d 54 76 41 2c  |,.) . .tL@,.TvA,|
00000200  8d 44 72 41 2c 8d 64 56  41 2c 8d 64 74 41 2c 8d  |.DrA,.dVA,.dtA,.|
00000210  54 52 42 2c 8d 44 44 42  2c 8d 44 6c 42 2c 20 20  |TRB,.DDB,.DlB,  |
00000220  8d 74 4c 40 2c 8d 54 76  41 2c 8d 44 72 41 2c 8d  |.tL@,.TvA,.DrA,.|
00000230  64 56 41 2c 8d 64 74 41  2c 8d 54 52 42 2c 8d 44  |dVA,.dtA,.TRB,.D|
00000240  44 42 2c 8d 44 6c 42 20  8b 0d 00 78 0e fd 20 44  |DB,.DlB ...x.. D|
00000250  4f 4f 4d 53 44 41 59 0d  00 82 05 e0 0d 00 8c 14  |OOMSDAY.........|
00000260  f1 22 50 72 6f 67 72 61  6d 20 45 70 72 6f 6d 22  |."Program Eprom"|
00000270  0d 00 96 14 f2 4c 4f 41  44 46 49 4c 45 28 42 55  |.....LOADFILE(BU|
00000280  46 46 25 29 0d 00 a0 29  e3 20 4d 45 4d 25 3d 42  |FF%)...). MEM%=B|
00000290  55 46 46 25 20 b8 20 42  55 46 46 45 4e 44 25 2d  |UFF% . BUFFEND%-|
000002a0  31 20 88 20 45 50 52 4f  4d 53 49 5a 45 0d 00 aa  |1 . EPROMSIZE...|
000002b0  06 20 f5 0d 00 b4 0f 20  20 f2 50 55 54 49 4e 52  |. .....  .PUTINR|
000002c0  4f 4d 0d 00 be 1a 20 20  e7 20 a4 4e 4f 54 42 4c  |OM....  . .NOTBL|
000002d0  41 4e 4b 20 8c 20 e5 20  8d 64 70 40 0d 00 c8 4f  |ANK . . .dp@...O|
000002e0  20 20 e7 20 42 55 46 46  45 4e 44 25 2d 4d 45 4d  |  . BUFFEND%-MEM|
000002f0  25 3e 45 50 52 4f 4d 53  49 5a 45 20 8c 20 4d 45  |%>EPROMSIZE . ME|
00000300  4d 45 4e 44 25 3d 4d 45  4d 25 2b 45 50 52 4f 4d  |MEND%=MEM%+EPROM|
00000310  53 49 5a 45 2d 31 20 8b  20 4d 45 4d 45 4e 44 25  |SIZE-1 . MEMEND%|
00000320  3d 42 55 46 46 45 4e 44  25 2d 31 0d 00 d2 1c 20  |=BUFFEND%-1.... |
00000330  20 f2 42 4c 4f 57 52 4f  4d 28 4d 45 4d 25 2c 4d  | .BLOWROM(MEM%,M|
00000340  45 4d 45 4e 44 25 29 0d  00 dc 1e 20 20 f2 56 45  |EMEND%)....  .VE|
00000350  52 49 46 59 52 4f 4d 28  4d 45 4d 25 2c 4d 45 4d  |RIFYROM(MEM%,MEM|
00000360  45 4e 44 25 29 0d 00 e6  0a 20 20 f2 43 52 43 0d  |END%)....  .CRC.|
00000370  00 f0 11 20 20 f2 54 41  4b 45 4f 55 54 52 4f 4d  |...  .TAKEOUTROM|
00000380  0d 00 fa 27 20 20 f1 27  22 20 20 20 20 52 65 70  |...'  .'"    Rep|
00000390  65 61 74 20 74 68 69 73  20 45 70 72 6f 6d 20 59  |eat this Eprom Y|
000003a0  2f 4e 20 2d 20 22 3b 0d  01 04 0a 20 20 41 24 3d  |/N - ";....  A$=|
000003b0  be 0d 01 0e 20 20 20 e7  20 41 24 3d 22 59 22 20  |....   . A$="Y" |
000003c0  84 20 41 24 3d 22 79 22  20 8c 20 f1 22 59 65 73  |. A$="y" . ."Yes|
000003d0  22 0d 01 18 18 20 fd 20  41 24 3c 3e 22 59 22 20  |".... . A$<>"Y" |
000003e0  80 20 41 24 3c 3e 22 79  22 0d 01 22 0a ed 20 4d  |. A$<>"y"..".. M|
000003f0  45 4d 25 0d 01 2c 05 f8  0d 01 36 12 f1 22 57 72  |EM%..,....6.."Wr|
00000400  69 74 65 20 45 70 72 6f  6d 22 0d 01 40 0d f2 50  |ite Eprom"..@..P|
00000410  55 54 49 4e 52 4f 4d 0d  01 4a 14 f2 52 45 41 44  |UTINROM..J..READ|
00000420  50 52 4f 4d 28 42 55 46  46 25 29 0d 01 54 14 f2  |PROM(BUFF%)..T..|
00000430  53 41 56 45 50 52 4f 4d  28 42 55 46 46 25 29 0d  |SAVEPROM(BUFF%).|
00000440  01 5e 0f f2 54 41 4b 45  4f 55 54 52 4f 4d 0d 01  |.^..TAKEOUTROM..|
00000450  68 05 f8 0d 01 72 13 f1  22 56 65 72 69 66 79 20  |h....r.."Verify |
00000460  45 70 72 6f 6d 22 0d 01  7c 14 f2 4c 4f 41 44 46  |Eprom"..|..LOADF|
00000470  49 4c 45 28 42 55 46 46  25 29 0d 01 86 29 e3 20  |ILE(BUFF%)...). |
00000480  4d 45 4d 25 3d 42 55 46  46 25 20 b8 20 42 55 46  |MEM%=BUFF% . BUF|
00000490  46 45 4e 44 25 2d 31 20  88 20 45 50 52 4f 4d 53  |FEND%-1 . EPROMS|
000004a0  49 5a 45 0d 01 90 0e 20  f2 50 55 54 49 4e 52 4f  |IZE.... .PUTINRO|
000004b0  4d 0d 01 9a 4e 20 e7 20  42 55 46 46 45 4e 44 25  |M...N . BUFFEND%|
000004c0  2d 4d 45 4d 25 3e 45 50  52 4f 4d 53 49 5a 45 20  |-MEM%>EPROMSIZE |
000004d0  8c 20 4d 45 4d 45 4e 44  25 3d 4d 45 4d 25 2b 45  |. MEMEND%=MEM%+E|
000004e0  50 52 4f 4d 53 49 5a 45  2d 31 20 8b 20 4d 45 4d  |PROMSIZE-1 . MEM|
000004f0  45 4e 44 25 3d 42 55 46  46 45 4e 44 25 2d 31 0d  |END%=BUFFEND%-1.|
00000500  01 a4 1d 20 f2 56 45 52  49 46 59 52 4f 4d 28 4d  |... .VERIFYROM(M|
00000510  45 4d 25 2c 4d 45 4d 45  4e 44 25 29 0d 01 ae 09  |EM%,MEMEND%)....|
00000520  20 f2 43 52 43 0d 01 b8  10 20 f2 54 41 4b 45 4f  | .CRC.... .TAKEO|
00000530  55 54 52 4f 4d 0d 01 c2  0a ed 20 4d 45 4d 25 0d  |UTROM..... MEM%.|
00000540  01 cc 05 f8 0d 01 d6 17  f1 22 54 65 73 74 20 45  |........."Test E|
00000550  70 72 6f 6d 20 62 6c 61  6e 6b 22 0d 01 e0 26 f2  |prom blank"...&.|
00000560  50 55 54 49 4e 52 4f 4d  3a 58 25 3d a4 4e 4f 54  |PUTINROM:X%=.NOT|
00000570  42 4c 41 4e 4b 3a f2 54  41 4b 45 4f 55 54 52 4f  |BLANK:.TAKEOUTRO|
00000580  4d 0d 01 ea 05 f8 0d 01  f4 15 f1 22 43 68 65 63  |M.........."Chec|
00000590  6b 73 75 6d 20 45 70 72  6f 6d 22 0d 01 fe 1e f2  |ksum Eprom".....|
000005a0  50 55 54 49 4e 52 4f 4d  3a f2 43 52 43 3a f2 54  |PUTINROM:.CRC:.T|
000005b0  41 4b 45 4f 55 54 52 4f  4d 0d 02 08 05 f8 0d 02  |AKEOUTROM.......|
000005c0  12 13 f1 22 53 65 6c 65  63 74 20 45 70 72 6f 6d  |..."Select Eprom|
000005d0  22 0d 02 1c 1f e8 22 20  20 20 20 54 79 70 65 20  |"....."    Type |
000005e0  6e 65 77 20 45 70 72 6f  6d 20 20 20 2d 20 22 58  |new Eprom   - "X|
000005f0  0d 02 26 5e e7 20 58 3d  32 37 36 34 20 84 20 58  |..&^. X=2764 . X|
00000600  3d 32 37 31 32 38 20 8c  20 45 50 52 4f 4d 54 59  |=27128 . EPROMTY|
00000610  50 45 3d 58 3a 45 50 52  4f 4d 53 49 5a 45 3d 26  |PE=X:EPROMSIZE=&|
00000620  32 30 30 30 2a 28 31 2d  28 58 3d 32 37 31 32 38  |2000*(1-(X=27128|
00000630  29 29 20 8b 20 f1 22 20  20 20 20 55 6e 6b 6e 6f  |)) . ."    Unkno|
00000640  77 6e 20 45 70 72 6f 6d  20 74 79 70 65 22 0d 02  |wn Eprom type"..|
00000650  30 0b f2 50 52 4f 4d 50  54 0d 02 3a 05 f8 0d 02  |0..PROMPT..:....|
00000660  44 15 e8 27 22 20 20 20  20 2a 22 20 24 4f 53 4c  |D..'"    *" $OSL|
00000670  49 4e 45 0d 02 4e 25 58  25 3d 4f 53 4c 49 4e 45  |INE..N%X%=OSLINE|
00000680  3a 59 25 3d 4f 53 4c 49  4e 45 20 81 20 32 35 36  |:Y%=OSLINE . 256|
00000690  3a d6 20 26 46 46 46 37  0d 02 58 0b f2 50 52 4f  |:. &FFF7..X..PRO|
000006a0  4d 50 54 0d 02 62 05 f8  0d 02 6c 11 f1 22 52 6f  |MPT..b....l.."Ro|
000006b0  6d 20 46 6f 72 6d 61 74  22 0d 02 76 1a f1 22 20  |m Format"..v.." |
000006c0  20 20 20 46 69 6c 65 73  20 74 6f 20 66 6f 72 6d  |   Files to form|
000006d0  61 74 22 0d 02 80 12 f2  48 45 41 44 45 52 28 42  |at".....HEADER(B|
000006e0  55 46 46 25 29 0d 02 8a  05 f5 0d 02 94 2a 20 e8  |UFF%)........* .|
000006f0  22 20 20 20 20 54 79 70  65 20 66 69 6c 65 20 6e  |"    Type file n|
00000700  61 6d 65 20 20 20 2d 20  22 20 24 46 49 4c 45 4e  |ame   - " $FILEN|
00000710  41 4d 45 25 0d 02 9e 32  20 e7 20 24 46 49 4c 45  |AME%...2 . $FILE|
00000720  4e 41 4d 45 25 3c 3e 22  22 20 8c 20 e7 20 a4 46  |NAME%<>"" . . .F|
00000730  49 4c 45 49 4e 46 4f 4b  20 8c 20 f2 46 4f 52 4d  |ILEINFOK . .FORM|
00000740  41 54 46 49 4c 45 0d 02  a8 13 fd 20 24 46 49 4c  |ATFILE..... $FIL|
00000750  45 4e 41 4d 45 25 3d 22  22 0d 02 b2 28 3f 42 55  |ENAME%=""...(?BU|
00000760  46 4d 41 52 4b 25 3d 97  28 22 2b 22 29 3a 42 55  |FMARK%=.("+"):BU|
00000770  46 46 45 4e 44 25 3d 42  55 46 4d 41 52 4b 25 2b  |FFEND%=BUFMARK%+|
00000780  31 0d 02 bc 09 e5 8d 74  60 40 0d 02 c6 05 20 0d  |1......t`@.... .|
00000790  02 d0 0f dd 20 a4 4e 4f  54 42 4c 41 4e 4b 0d 02  |.... .NOTBLANK..|
000007a0  da 11 ea 20 49 25 2c 4e  54 42 4c 41 4e 4b 25 0d  |... I%,NTBLANK%.|
000007b0  02 e4 18 3f 26 38 31 3d  45 50 52 4f 4d 53 49 5a  |...?&81=EPROMSIZ|
000007c0  45 20 81 20 32 35 36 0d  02 ee 22 4e 54 42 4c 41  |E . 256..."NTBLA|
000007d0  4e 4b 25 3d 28 ba 28 42  4c 41 4e 4b 29 20 80 20  |NK%=(.(BLANK) . |
000007e0  26 46 46 29 3c 3e 26 46  46 0d 02 f8 0a f2 52 45  |&FF)<>&FF.....RE|
000007f0  53 45 54 0d 03 02 3f e7  20 4e 54 42 4c 41 4e 4b  |SET...?. NTBLANK|
00000800  25 20 8c 20 f1 22 20 20  20 20 45 70 72 6f 6d 20  |% . ."    Eprom |
00000810  6e 6f 74 20 62 6c 61 6e  6b 22 20 8b 20 f1 22 20  |not blank" . ." |
00000820  20 20 20 45 70 72 6f 6d  20 69 73 20 62 6c 61 6e  |   Eprom is blan|
00000830  6b 22 0d 03 0c 0d 3d 4e  54 42 4c 41 4e 4b 25 0d  |k"....=NTBLANK%.|
00000840  03 16 1e dd 20 f2 42 4c  4f 57 52 4f 4d 28 53 54  |.... .BLOWROM(ST|
00000850  41 52 54 25 2c 46 49 4e  49 53 48 25 29 0d 03 20  |ART%,FINISH%).. |
00000860  08 ea 20 49 25 0d 03 2a  27 f1 22 20 20 20 20 50  |.. I%..*'."    P|
00000870  72 6f 67 72 61 6d 6d 69  6e 67 20 74 69 6d 65 20  |rogramming time |
00000880  3a 20 20 20 20 20 73 65  63 73 22 3b 0d 03 34 1d  |:     secs";..4.|
00000890  3f 44 41 54 44 49 52 3d  4f 55 54 3a f4 20 44 41  |?DATDIR=OUT:. DA|
000008a0  54 41 44 49 52 3d 4f 2f  50 0d 03 3e 0e d6 20 54  |TADIR=O/P..>.. T|
000008b0  55 52 4e 4f 4e 32 31 0d  03 48 27 e3 20 49 25 3d  |URNON21..H'. I%=|
000008c0  31 20 b8 20 31 36 30 30  3a ed 20 49 25 3a f4 20  |1 . 1600:. I%:. |
000008d0  4c 45 54 20 32 31 56 20  53 45 54 54 4c 45 0d 03  |LET 21V SETTLE..|
000008e0  52 23 20 54 25 3d 28 46  49 4e 49 53 48 25 2d 53  |R# T%=(FINISH%-S|
000008f0  54 41 52 54 25 2b 31 29  2a 35 30 45 2d 33 20 2b  |TART%+1)*50E-3 +|
00000900  31 0d 03 5c 1a 20 e3 20  49 25 3d 53 54 41 52 54  |1..\. . I%=START|
00000910  25 20 b8 20 46 49 4e 49  53 48 25 0d 03 66 12 20  |% . FINISH%..f. |
00000920  20 41 25 3d 3f 49 25 3a  d6 20 50 47 4d 0d 03 70  | A%=?I%:. PGM..p|
00000930  35 20 20 e7 28 28 49 25  2d 53 54 41 52 54 25 29  |5  .((I%-START%)|
00000940  20 83 20 32 30 29 3d 30  20 8c 20 f1 8a 32 33 2c  | . 20)=0 . ..23,|
00000950  bc 29 3b 54 25 3b 22 20  22 3b 3a 54 25 3d 54 25  |.);T%;" ";:T%=T%|
00000960  2d 31 0d 03 7a 08 ed 20  49 25 0d 03 84 27 f2 52  |-1..z.. I%...'.R|
00000970  45 53 45 54 3a f4 20 44  41 54 41 44 49 52 3d 49  |ESET:. DATADIR=I|
00000980  2f 50 20 52 45 53 45 54  20 43 4f 55 4e 54 45 52  |/P RESET COUNTER|
00000990  53 0d 03 8e 1f f1 8a 31  36 2c bc 29 3b 22 43 6f  |S......16,.);"Co|
000009a0  6d 70 6c 65 74 65 20 20  20 20 20 20 20 20 20 22  |mplete         "|
000009b0  0d 03 98 25 e3 49 25 3d  31 20 b8 20 31 36 30 30  |...%.I%=1 . 1600|
000009c0  3a ed 49 25 3a f4 20 4c  45 54 20 32 31 56 20 47  |:.I%:. LET 21V G|
000009d0  4f 20 4f 46 46 0d 03 a2  05 e1 0d 03 ac 20 dd 20  |O OFF........ . |
000009e0  f2 56 45 52 49 46 59 52  4f 4d 28 53 54 41 52 54  |.VERIFYROM(START|
000009f0  25 2c 46 49 4e 49 53 48  25 29 0d 03 b6 0d ea 20  |%,FINISH%)..... |
00000a00  49 25 2c 56 45 52 25 0d  03 c0 12 3f 26 38 30 3d  |I%,VER%....?&80=|
00000a10  46 49 4e 49 53 48 25 2b  31 0d 03 ca 1f 59 25 3d  |FINISH%+1....Y%=|
00000a20  28 53 54 41 52 54 25 2d  46 49 4e 49 53 48 25 2d  |(START%-FINISH%-|
00000a30  31 29 20 80 20 26 46 46  0d 03 d4 1a 3f 26 38 31  |1) . &FF....?&81|
00000a40  3d 28 53 54 41 52 54 25  2d 59 25 29 20 81 20 32  |=(START%-Y%) . 2|
00000a50  35 36 0d 03 de 21 3f 26  38 32 3d 28 46 49 4e 49  |56...!?&82=(FINI|
00000a60  53 48 25 2d 53 54 41 52  54 25 29 20 81 20 32 35  |SH%-START%) . 25|
00000a70  36 2b 31 0d 03 e8 19 56  45 52 25 3d ba 28 56 45  |6+1....VER%=.(VE|
00000a80  52 46 59 29 20 80 20 26  46 46 30 30 0d 03 f2 0a  |RFY) . &FF00....|
00000a90  f2 52 45 53 45 54 0d 03  fc 42 e7 20 56 45 52 25  |.RESET...B. VER%|
00000aa0  20 8c 20 f1 22 20 20 20  20 45 70 72 6f 6d 20 76  | . ."    Eprom v|
00000ab0  65 72 69 66 69 65 64 20  4f 4b 22 20 8b 20 f1 22  |erified OK" . ."|
00000ac0  20 20 20 20 45 70 72 6f  6d 20 76 65 72 69 66 79  |    Eprom verify|
00000ad0  20 66 61 69 6c 65 64 22  0d 04 06 05 e1 0d 04 10  | failed"........|
00000ae0  12 dd 20 f2 49 4e 49 54  47 4c 4f 42 41 4c 53 0d  |.. .INITGLOBALS.|
00000af0  04 1a 08 ea 20 49 25 0d  04 24 64 43 54 52 4c 25  |.... I%..$dCTRL%|
00000b00  3d 26 46 45 36 43 3a 44  41 54 25 3d 26 46 45 36  |=&FE6C:DAT%=&FE6|
00000b10  30 3a 44 41 54 44 49 52  3d 26 46 45 36 32 3a 49  |0:DATDIR=&FE62:I|
00000b20  4e 50 3d 30 3a 4f 55 54  3d 26 46 46 3a 53 45 4c  |NP=0:OUT=&FF:SEL|
00000b30  3d 26 43 46 3a 55 4e 53  45 4c 3d 26 46 46 3a 41  |=&CF:UNSEL=&FF:A|
00000b40  43 52 3d 26 46 45 36 42  3a 53 52 3d 26 46 45 36  |CR=&FE6B:SR=&FE6|
00000b50  41 3a 50 43 52 3d 26 46  45 36 43 0d 04 2e 22 45  |A:PCR=&FE6C..."E|
00000b60  50 52 4f 4d 54 59 50 45  3d 32 37 36 34 3a 45 50  |PROMTYPE=2764:EP|
00000b70  52 4f 4d 53 49 5a 45 3d  26 32 30 30 30 0d 04 38  |ROMSIZE=&2000..8|
00000b80  39 de 20 42 55 46 46 25  20 26 34 30 30 30 2c 43  |9. BUFF% &4000,C|
00000b90  42 25 20 32 30 2c 46 49  4c 45 4e 41 4d 45 25 20  |B% 20,FILENAME% |
00000ba0  32 30 2c 43 4f 44 45 25  20 32 35 30 2c 4f 53 4c  |20,CODE% 250,OSL|
00000bb0  49 4e 45 20 33 30 0d 04  42 19 3f 44 41 54 25 3d  |INE 30..B.?DAT%=|
00000bc0  26 46 46 3a 3f 44 41 54  44 49 52 3d 49 4e 50 0d  |&FF:?DATDIR=INP.|
00000bd0  04 4c 0e 44 4f 4f 4d 53  44 41 59 3d a3 0d 04 56  |.L.DOOMSDAY=...V|
00000be0  0a f2 52 45 53 45 54 0d  04 60 11 e3 49 25 3d 30  |..RESET..`..I%=0|
00000bf0  20 b8 20 32 20 88 20 32  0d 04 6a 0c 50 25 3d 43  | . 2 . 2..j.P%=C|
00000c00  4f 44 45 25 0d 04 74 05  5b 0d 04 7e 0b 20 4f 50  |ODE%..t.[..~. OP|
00000c10  54 20 49 25 0d 04 88 0a  2e 42 4c 41 4e 4b 0d 04  |T I%.....BLANK..|
00000c20  92 2f 4c 44 41 20 23 30  3a 53 54 41 20 26 38 30  |./LDA #0:STA &80|
00000c30  3a 4c 44 41 20 23 26 46  46 3a 4c 44 59 20 23 53  |:LDA #&FF:LDY #S|
00000c40  45 4c 3a 4c 44 58 20 23  55 4e 53 45 4c 0d 04 9c  |EL:LDX #UNSEL...|
00000c50  09 2e 4c 4f 4f 50 0d 04  a6 40 53 54 59 20 43 54  |..LOOP...@STY CT|
00000c60  52 4c 25 3a 80 20 44 41  54 25 3a 53 54 58 20 43  |RL%:. DAT%:STX C|
00000c70  54 52 4c 25 3a 44 45 43  20 26 38 30 3a 42 4e 45  |TRL%:DEC &80:BNE|
00000c80  20 4c 4f 4f 50 3a 44 45  43 20 26 38 31 3a 42 4e  | LOOP:DEC &81:BN|
00000c90  45 20 4c 4f 4f 50 0d 04  b0 07 52 54 53 0d 04 ba  |E LOOP....RTS...|
00000ca0  08 2e 43 52 43 0d 04 c4  0a 4c 44 41 20 23 30 0d  |..CRC....LDA #0.|
00000cb0  04 ce 14 53 54 41 20 26  38 30 20 5c 43 4f 55 4e  |...STA &80 \COUN|
00000cc0  54 45 52 0d 04 d8 0b 53  54 41 20 26 38 32 0d 04  |TER....STA &82..|
00000cd0  e2 10 53 54 41 20 26 38  33 20 5c 43 52 43 0d 04  |..STA &83 \CRC..|
00000ce0  ec 0c 2e 4f 55 54 4c 4f  4f 50 0d 04 f6 3b 4c 44  |...OUTLOOP...;LD|
00000cf0  59 23 53 45 4c 3a 53 54  59 20 43 54 52 4c 25 3a  |Y#SEL:STY CTRL%:|
00000d00  4c 44 41 20 44 41 54 25  3a 4c 44 59 20 23 55 4e  |LDA DAT%:LDY #UN|
00000d10  53 45 4c 3a 53 54 59 20  43 54 52 4c 25 3a 4c 44  |SEL:STY CTRL%:LD|
00000d20  58 20 23 26 38 0d 05 00  0b 2e 49 4e 4c 4f 4f 50  |X #&8.....INLOOP|
00000d30  0d 05 0a 41 4c 53 52 20  41 3a 52 4f 4c 20 26 38  |...ALSR A:ROL &8|
00000d40  32 3a 52 4f 4c 20 26 38  33 3a 42 43 43 20 53 4b  |2:ROL &83:BCC SK|
00000d50  49 50 3a 54 41 59 3a 4c  44 41 20 26 38 32 3a 82  |IP:TAY:LDA &82:.|
00000d60  20 23 26 32 44 3a 53 54  41 20 26 38 32 3a 54 59  | #&2D:STA &82:TY|
00000d70  41 0d 05 14 0a 2e 53 4b  49 50 20 0d 05 1e 3a 44  |A.....SKIP ...:D|
00000d80  45 58 3a 42 4e 45 20 49  4e 4c 4f 4f 50 3a 44 45  |EX:BNE INLOOP:DE|
00000d90  43 20 26 38 30 3a 42 4e  45 20 4f 55 54 4c 4f 4f  |C &80:BNE OUTLOO|
00000da0  50 3a 44 45 43 20 26 38  31 3a 42 4e 45 20 4f 55  |P:DEC &81:BNE OU|
00000db0  54 4c 4f 4f 50 0d 05 28  13 4c 44 41 20 26 38 32  |TLOOP..(.LDA &82|
00000dc0  3a 4c 44 58 20 26 38 33  0d 05 32 07 52 54 53 0d  |:LDX &83..2.RTS.|
00000dd0  05 3c 0a 2e 56 45 52 46  59 0d 05 46 1b 4c 44 58  |.<..VERFY..F.LDX|
00000de0  20 23 26 46 46 20 5c 56  45 52 49 46 59 20 46 4c  | #&FF \VERIFY FL|
00000df0  41 47 20 20 0d 05 50 0c  2e 56 45 52 4c 4f 4f 50  |AG  ..P..VERLOOP|
00000e00  0d 05 5a 2b 4c 44 41 20  23 53 45 4c 3a 53 54 41  |..Z+LDA #SEL:STA|
00000e10  20 43 54 52 4c 25 3a 4c  44 41 20 44 41 54 25 3a  | CTRL%:LDA DAT%:|
00000e20  43 4d 50 20 28 26 38 30  29 2c 59 0d 05 64 0d 42  |CMP (&80),Y..d.B|
00000e30  45 51 20 56 45 52 4f 4b  0d 05 6e 19 4c 44 58 20  |EQ VEROK..n.LDX |
00000e40  23 26 30 30 20 5c 56 45  52 49 46 59 20 46 41 49  |#&00 \VERIFY FAI|
00000e50  4c 0d 05 78 0a 2e 56 45  52 4f 4b 0d 05 82 0e 4c  |L..x..VEROK....L|
00000e60  44 41 20 23 55 4e 53 45  4c 0d 05 8c 0d 53 54 41  |DA #UNSEL....STA|
00000e70  20 43 54 52 4c 25 0d 05  96 07 49 4e 59 0d 05 a0  | CTRL%....INY...|
00000e80  0f 42 4e 45 20 56 45 52  4c 4f 4f 50 0d 05 aa 13  |.BNE VERLOOP....|
00000e90  49 4e 43 20 26 38 31 20  5c 49 4e 43 52 20 9c 0d  |INC &81 \INCR ..|
00000ea0  05 b4 19 44 45 43 20 26  38 32 20 5c 44 45 43 20  |...DEC &82 \DEC |
00000eb0  4e 4f 20 50 41 47 45 53  0d 05 be 0f 42 4e 45 20  |NO PAGES....BNE |
00000ec0  56 45 52 4c 4f 4f 50 0d  05 c8 07 52 54 53 0d 05  |VERLOOP....RTS..|
00000ed0  d2 0d 2e 54 55 52 4e 4f  4e 32 31 0d 05 dc 1b 4c  |...TURNON21....L|
00000ee0  44 59 20 23 30 3a 4c 44  41 20 23 26 34 30 3a 53  |DY #0:LDA #&40:S|
00000ef0  54 41 20 26 38 30 0d 05  e6 0a 2e 50 55 4c 53 45  |TA &80.....PULSE|
00000f00  0d 05 f0 4b 4c 44 41 20  23 53 45 4c 3a 53 54 41  |...KLDA #SEL:STA|
00000f10  20 43 54 52 4c 25 3a 4c  44 41 20 23 55 4e 53 45  | CTRL%:LDA #UNSE|
00000f20  4c 3a 53 54 41 20 43 54  52 4c 25 3a 44 45 59 3a  |L:STA CTRL%:DEY:|
00000f30  42 4e 45 20 50 55 4c 53  45 3a 44 45 43 20 26 38  |BNE PULSE:DEC &8|
00000f40  30 3a 42 4e 45 20 50 55  4c 53 45 0d 05 fa 08 20  |0:BNE PULSE.... |
00000f50  52 54 53 0d 06 04 08 2e  50 47 4d 0d 06 0e 46 4c  |RTS.....PGM...FL|
00000f60  44 59 20 23 30 3a 53 54  59 20 26 38 30 3a 4c 44  |DY #0:STY &80:LD|
00000f70  59 20 23 34 39 3a 53 54  59 20 26 38 31 3a 53 54  |Y #49:STY &81:ST|
00000f80  41 20 44 41 54 25 3a 50  48 50 3a 53 45 49 3a 4c  |A DAT%:PHP:SEI:L|
00000f90  44 59 20 23 53 45 4c 3a  53 54 59 20 43 54 52 4c  |DY #SEL:STY CTRL|
00000fa0  25 0d 06 18 16 43 4d 50  20 23 26 46 46 3a 42 45  |%....CMP #&FF:BE|
00000fb0  51 20 4e 4f 44 45 4c 0d  06 22 19 2e 57 41 49 54  |Q NODEL.."..WAIT|
00000fc0  20 5c 4d 55 53 54 20 ac  20 43 52 4f 53 53 20 90  | \MUST . CROSS .|
00000fd0  0d 06 2c 25 44 45 43 20  26 38 30 3a 42 4e 45 20  |..,%DEC &80:BNE |
00000fe0  57 41 49 54 3a 44 45 43  20 26 38 31 3a 42 4e 45  |WAIT:DEC &81:BNE|
00000ff0  20 57 41 49 54 0d 06 36  0a 2e 4e 4f 44 45 4c 0d  | WAIT..6..NODEL.|
00001000  06 40 1c 4c 44 59 20 23  55 4e 53 45 4c 3a 53 54  |.@.LDY #UNSEL:ST|
00001010  59 20 43 54 52 4c 25 3a  50 4c 50 0d 06 4a 07 52  |Y CTRL%:PLP..J.R|
00001020  54 53 0d 06 54 09 2e 52  45 45 44 0d 06 5e 44 4c  |TS..T..REED..^DL|
00001030  44 58 20 23 53 45 4c 3a  53 54 58 20 43 54 52 4c  |DX #SEL:STX CTRL|
00001040  25 3a 4c 44 41 20 44 41  54 25 3a 4c 44 58 20 23  |%:LDA DAT%:LDX #|
00001050  55 4e 53 45 4c 3a 53 54  58 20 43 54 52 4c 25 3a  |UNSEL:STX CTRL%:|
00001060  53 54 41 20 28 26 38 30  29 2c 59 3a 49 4e 59 0d  |STA (&80),Y:INY.|
00001070  06 68 0c 42 4e 45 20 52  45 45 44 0d 06 72 0b 49  |.h.BNE REED..r.I|
00001080  4e 43 20 26 38 31 0d 06  7c 0b 44 45 43 20 26 38  |NC &81..|.DEC &8|
00001090  32 0d 06 86 0c 42 4e 45  20 52 45 45 44 0d 06 90  |2....BNE REED...|
000010a0  07 52 54 53 0d 06 9a 0c  2e 54 41 50 45 43 52 43  |.RTS.....TAPECRC|
000010b0  0d 06 a4 0a 4c 44 41 20  23 30 0d 06 ae 10 53 54  |....LDA #0....ST|
000010c0  41 20 26 38 32 20 5c 43  52 43 0d 06 b8 0b 53 54  |A &82 \CRC....ST|
000010d0  41 20 26 38 33 0d 06 c2  07 54 41 59 0d 06 cc 11  |A &83....TAY....|
000010e0  2e 4e 42 59 54 20 4c 44  41 20 26 38 32 0d 06 d6  |.NBYT LDA &82...|
000010f0  0d 82 20 28 26 38 30 29  2c 59 0d 06 e0 0b 53 54  |.. (&80),Y....ST|
00001100  41 20 26 38 32 0d 06 ea  0a 4c 44 58 20 23 38 0d  |A &82....LDX #8.|
00001110  06 f4 11 2e 4c 4f 4f 50  20 4c 44 41 20 26 38 32  |....LOOP LDA &82|
00001120  0d 06 fe 3d 52 4f 4c 20  41 3a 42 43 43 20 42 37  |...=ROL A:BCC B7|
00001130  5a 3a 4c 44 41 20 26 38  32 3a 82 20 23 38 3a 53  |Z:LDA &82:. #8:S|
00001140  54 41 20 26 38 32 3a 4c  44 41 20 26 38 33 3a 82  |TA &82:LDA &83:.|
00001150  20 23 26 31 30 3a 53 54  41 20 26 38 33 0d 07 08  | #&10:STA &83...|
00001160  10 2e 42 37 5a 20 52 4f  4c 20 26 38 33 0d 07 12  |..B7Z ROL &83...|
00001170  0b 52 4f 4c 20 26 38 32  0d 07 1c 07 44 45 58 0d  |.ROL &82....DEX.|
00001180  07 26 0c 42 4e 45 20 4c  4f 4f 50 0d 07 30 07 49  |.&.BNE LOOP..0.I|
00001190  4e 59 0d 07 3a 0b 43 50  59 20 26 38 34 0d 07 44  |NY..:.CPY &84..D|
000011a0  0c 42 4e 45 20 4e 42 59  54 0d 07 4e 07 52 54 53  |.BNE NBYT..N.RTS|
000011b0  0d 07 58 0c 2e 43 4f 44  45 45 4e 44 0d 07 62 05  |..X..CODEEND..b.|
000011c0  5d 0d 07 6c 07 ed 49 25  0d 07 76 05 e1 0d 07 80  |]..l..I%..v.....|
000011d0  17 dd 20 f2 4c 4f 41 44  46 49 4c 45 28 53 54 41  |.. .LOADFILE(STA|
000011e0  52 54 25 29 0d 07 8a 08  ea 20 49 25 0d 07 94 28  |RT%)..... I%...(|
000011f0  e8 22 20 20 20 20 54 79  70 65 20 66 69 6c 65 20  |."    Type file |
00001200  6e 61 6d 65 20 20 20 2d  20 22 24 46 49 4c 45 4e  |name   - "$FILEN|
00001210  41 4d 45 25 0d 07 9e 12  21 43 42 25 3d 46 49 4c  |AME%....!CB%=FIL|
00001220  45 4e 41 4d 45 25 0d 07  a8 10 43 42 25 21 32 3d  |ENAME%....CB%!2=|
00001230  53 54 41 52 54 25 0d 07  b2 0b 43 42 25 21 36 3d  |START%....CB%!6=|
00001240  30 0d 07 b7 29 41 25 3d  30 3a 59 25 3d 30 3a e7  |0...)A%=0:Y%=0:.|
00001250  28 ba 26 46 46 44 41 20  80 20 26 46 46 29 3c 34  |(.&FFDA . &FF)<4|
00001260  20 8c 20 2a 4f 50 54 31  2c 32 0d 07 bc 2e 41 25  | . *OPT1,2....A%|
00001270  3d 26 46 46 3a 58 25 3d  43 42 25 3a 59 25 3d 43  |=&FF:X%=CB%:Y%=C|
00001280  42 25 20 81 20 32 35 36  3a d6 26 46 46 44 44 3a  |B% . 256:.&FFDD:|
00001290  f4 20 4f 53 46 49 4c 45  0d 07 c6 19 42 55 46 46  |. OSFILE....BUFF|
000012a0  45 4e 44 25 3d 42 55 46  46 25 2b 43 42 25 21 26  |END%=BUFF%+CB%!&|
000012b0  41 0d 07 d0 05 e1 0d 07  da 05 20 0d 07 e4 0a dd  |A......... .....|
000012c0  20 f2 43 52 43 0d 07 ee  08 ea 20 49 25 0d 07 f8  | .CRC..... I%...|
000012d0  1e f1 22 20 20 20 20 45  70 72 6f 6d 20 63 68 65  |.."    Eprom che|
000012e0  63 6b 73 75 6d 20 69 73  20 22 3b 0d 08 02 1f 3f  |cksum is ";....?|
000012f0  26 38 31 3d 28 45 50 52  4f 4d 53 49 5a 45 2d 31  |&81=(EPROMSIZE-1|
00001300  29 20 81 20 32 35 36 20  2b 31 0d 08 0c 17 49 25  |) . 256 +1....I%|
00001310  3d 28 ba 28 43 52 43 29  20 80 20 26 46 46 46 46  |=(.(CRC) . &FFFF|
00001320  29 0d 08 16 09 f1 3b 7e  49 25 0d 08 20 0a f2 52  |).....;~I%.. ..R|
00001330  45 53 45 54 0d 08 2a 05  e1 0d 08 34 17 dd 20 f2  |ESET..*....4.. .|
00001340  52 45 41 44 50 52 4f 4d  28 53 54 41 52 54 25 29  |READPROM(START%)|
00001350  0d 08 3e 08 ea 20 49 25  0d 08 48 21 3f 26 38 30  |..>.. I%..H!?&80|
00001360  3d 53 54 41 52 54 25 3a  3f 26 38 31 3d 53 54 41  |=START%:?&81=STA|
00001370  52 54 25 20 81 20 32 35  36 0d 08 52 23 3f 26 38  |RT% . 256..R#?&8|
00001380  32 3d 28 45 50 52 4f 4d  53 49 5a 45 2d 31 29 81  |2=(EPROMSIZE-1).|
00001390  20 32 35 36 20 2b 31 3a  59 25 3d 30 0d 08 5c 0a  | 256 +1:Y%=0..\.|
000013a0  d6 20 52 45 45 44 0d 08  66 0a f2 52 45 53 45 54  |. REED..f..RESET|
000013b0  0d 08 70 15 f1 22 20 20  20 20 45 70 72 6f 6d 20  |..p.."    Eprom |
000013c0  72 65 61 64 22 0d 08 7a  05 e1 0d 08 84 0f dd 20  |read"..z....... |
000013d0  f2 50 55 54 49 4e 52 4f  4d 0d 08 8e 32 f1 22 20  |.PUTINROM...2." |
000013e0  20 20 20 49 6e 73 65 72  74 20 45 70 72 6f 6d 20  |   Insert Eprom |
000013f0  61 6e 64 20 70 72 65 73  73 20 61 6e 79 20 6b 65  |and press any ke|
00001400  79 20 22 3b 3a 58 25 3d  a5 3a f1 0d 08 98 0a f2  |y ";:X%=.:......|
00001410  52 45 53 45 54 0d 08 a2  05 e1 0d 08 ac 11 dd 20  |RESET.......... |
00001420  f2 54 41 4b 45 4f 55 54  52 4f 4d 0d 08 b6 1e f2  |.TAKEOUTROM.....|
00001430  52 45 53 45 54 3a f4 20  54 55 52 4e 20 4f 46 46  |RESET:. TURN OFF|
00001440  20 32 31 20 56 4f 4c 54  53 0d 08 c0 30 f1 22 20  | 21 VOLTS...0." |
00001450  20 20 20 52 65 6d 6f 76  65 20 45 70 72 6f 6d 20  |   Remove Eprom |
00001460  61 6e 64 20 70 72 65 73  73 20 61 6e 79 20 6b 65  |and press any ke|
00001470  79 20 22 3b 3a 58 25 3d  a5 0d 08 ca 05 e1 0d 08  |y ";:X%=........|
00001480  d4 17 dd 20 f2 53 41 56  45 50 52 4f 4d 28 53 54  |... .SAVEPROM(ST|
00001490  41 52 54 25 29 0d 08 de  08 ea 20 49 25 0d 08 e8  |ART%)..... I%...|
000014a0  27 e8 22 20 20 20 20 46  69 6c 65 20 74 6f 20 73  |'."    File to s|
000014b0  61 76 65 20 61 73 20 2d  20 22 24 46 49 4c 45 4e  |ave as - "$FILEN|
000014c0  41 4d 45 25 0d 08 f2 12  21 43 42 25 3d 46 49 4c  |AME%....!CB%=FIL|
000014d0  45 4e 41 4d 45 25 0d 08  fc 43 43 42 25 21 32 3d  |ENAME%...CCB%!2=|
000014e0  53 54 41 52 54 25 3a 43  42 25 21 36 3d 53 54 41  |START%:CB%!6=STA|
000014f0  52 54 25 3a 43 42 25 21  26 41 3d 53 54 41 52 54  |RT%:CB%!&A=START|
00001500  25 3a 43 42 25 21 26 45  3d 53 54 41 52 54 25 2b  |%:CB%!&E=START%+|
00001510  45 50 52 4f 4d 53 49 5a  45 0d 09 06 2e 41 25 3d  |EPROMSIZE....A%=|
00001520  30 3a 58 25 3d 43 42 25  3a 59 25 3d 43 42 25 20  |0:X%=CB%:Y%=CB% |
00001530  81 20 32 35 36 3a d6 20  26 46 46 44 44 3a f4 20  |. 256:. &FFDD:. |
00001540  4f 53 20 46 49 4c 45 0d  09 10 05 e1 0d 09 1a 0c  |OS FILE.........|
00001550  dd 20 f2 52 45 53 45 54  0d 09 24 2e 3f 41 43 52  |. .RESET..$.?ACR|
00001560  3d 26 31 38 3a 3f 53 52  3d 26 46 46 3a 3f 41 43  |=&18:?SR=&FF:?AC|
00001570  52 3d 26 30 30 3a f4 20  52 45 53 45 54 20 43 4f  |R=&00:. RESET CO|
00001580  55 4e 54 45 52 53 0d 09  2e 21 3f 43 54 52 4c 25  |UNTERS...!?CTRL%|
00001590  3d 55 4e 53 45 4c 3a f4  20 55 4e 53 45 4c 45 43  |=UNSEL:. UNSELEC|
000015a0  54 20 45 50 52 4f 4d 0d  09 38 0f 3f 44 41 54 44  |T EPROM..8.?DATD|
000015b0  49 52 3d 49 4e 50 0d 09  42 05 e1 0d 09 4c 0d dd  |IR=INP..B....L..|
000015c0  20 f2 50 52 4f 4d 50 54  0d 09 56 2b f1 22 20 20  | .PROMPT..V+."  |
000015d0  20 20 50 72 65 73 73 20  61 6e 79 20 6b 65 79 20  |  Press any key |
000015e0  74 6f 20 63 6f 6e 74 69  6e 75 65 20 22 3b 3a 58  |to continue ";:X|
000015f0  25 3d a5 0d 09 60 05 e1  0d 09 6a 15 dd 20 f2 48  |%=...`....j.. .H|
00001600  45 41 44 45 52 28 53 54  41 52 54 25 29 0d 09 74  |EADER(START%)..t|
00001610  08 ea 20 49 25 0d 09 7e  13 e3 49 25 3d 30 20 b8  |.. I%..~..I%=0 .|
00001620  20 26 34 38 20 88 20 34  0d 09 88 11 20 20 f3 20  | &48 . 4....  . |
00001630  53 54 41 52 54 25 21 49  25 0d 09 92 07 ed 49 25  |START%!I%.....I%|
00001640  0d 09 9c 05 f7 0d 09 a6  17 42 55 46 4d 41 52 4b  |.........BUFMARK|
00001650  25 3d 53 54 41 52 54 25  2b 26 34 42 0d 09 b0 62  |%=START%+&4B...b|
00001660  dc 20 26 34 43 30 30 30  30 30 30 2c 26 42 38 31  |. &4C000000,&B81|
00001670  38 30 31 30 2c 26 34 43  35 33 30 30 2c 26 32 39  |8010,&4C5300,&29|
00001680  34 33 32 38 2c 26 31 42  44 30 30 44 43 39 2c 26  |4328,&1BD00DC9,&|
00001690  46 34 39 39 38 34 38 2c  26 31 31 39 30 46 34 43  |F499848,&1190F4C|
000016a0  35 2c 26 46 36 38 35 34  42 41 39 2c 26 46 37 38  |5,&F6854BA9,&F78|
000016b0  35 38 30 41 39 2c 26 46  34 39 46 34 41 35 0d 09  |580A9,&F49F4A5..|
000016c0  ba 5c dc 20 26 34 37 34  43 46 35 38 35 2c 26 43  |.\. &474CF585,&C|
000016d0  39 36 30 36 38 38 30 2c  26 34 38 46 42 44 30 30  |9606880,&48FBD00|
000016e0  45 2c 26 46 34 39 46 35  41 35 2c 26 46 31 44 30  |E,&F49F5A5,&F1D0|
000016f0  46 34 43 35 2c 26 46 36  42 31 30 30 41 30 2c 26  |F4C5,&F6B100A0,&|
00001700  44 30 46 36 45 36 41 38  2c 26 36 38 46 37 45 36  |D0F6E6A8,&68F7E6|
00001710  30 32 2c 26 36 30 30 30  41 39 0d 09 c4 05 e1 0d  |02,&6000A9......|
00001720  09 ce 13 dd 20 f2 46 4f  52 4d 41 54 46 49 4c 45  |.... .FORMATFILE|
00001730  20 20 0d 09 d8 0d 20 ea  20 42 4c 4b 4e 4f 25 0d  |  .... . BLKNO%.|
00001740  09 e2 0c 42 4c 4b 4e 4f  25 3d 30 0d 09 ec 81 e7  |...BLKNO%=0.....|
00001750  20 4c 45 46 54 44 41 54  41 25 3e 32 35 36 20 8c  | LEFTDATA%>256 .|
00001760  20 f2 48 45 41 44 28 42  55 46 4d 41 52 4b 25 2c  | .HEAD(BUFMARK%,|
00001770  46 49 4c 45 4e 41 4d 45  25 2c 4c 4c 4f 41 44 41  |FILENAME%,LLOADA|
00001780  44 44 52 25 2c 45 58 45  43 41 44 44 52 25 2c 42  |DDR%,EXECADDR%,B|
00001790  4c 4b 4e 4f 25 2c 30 2c  26 31 30 30 29 3a e7 20  |LKNO%,0,&100):. |
000017a0  4c 45 46 54 44 41 54 41  25 3e 32 35 36 20 8c 20  |LEFTDATA%>256 . |
000017b0  f5 3a f2 48 41 53 48 48  45 41 44 3a fd 20 4c 45  |.:.HASHHEAD:. LE|
000017c0  46 54 44 41 54 41 25 3c  3d 32 35 36 0d 09 f6 48  |FTDATA%<=256...H|
000017d0  20 f2 48 45 41 44 28 42  55 46 4d 41 52 4b 25 2c  | .HEAD(BUFMARK%,|
000017e0  46 49 4c 45 4e 41 4d 45  25 2c 4c 4c 4f 41 44 41  |FILENAME%,LLOADA|
000017f0  44 44 52 25 2c 45 58 45  43 41 44 44 52 25 2c 42  |DDR%,EXECADDR%,B|
00001800  4c 4b 4e 4f 25 2c 26 38  30 2c 4c 45 46 54 44 41  |LKNO%,&80,LEFTDA|
00001810  54 41 25 29 0d 0a 00 0b  d9 23 43 48 41 4e 25 0d  |TA%).....#CHAN%.|
00001820  0a 0a 05 e1 0d 0a 14 10  dd 20 a4 46 49 4c 45 49  |......... .FILEI|
00001830  4e 46 4f 4b 0d 0a 1e 0d  ea 20 4c 24 2c 54 41 50  |NFOK..... L$,TAP|
00001840  45 0d 0a 28 23 41 25 3d  30 3a 59 25 3d 30 3a 54  |E..(#A%=0:Y%=0:T|
00001850  41 50 45 3d 28 ba 26 46  46 44 41 20 80 20 26 46  |APE=(.&FFDA . &F|
00001860  46 29 3c 34 0d 0a 32 17  43 48 41 4e 25 3d ad 28  |F)<4..2.CHAN%=.(|
00001870  24 46 49 4c 45 4e 41 4d  45 25 29 0d 0a 3c cb e7  |$FILENAME%)..<..|
00001880  20 54 41 50 45 20 8c 20  4c 4c 4f 41 44 41 44 44  | TAPE . LLOADADD|
00001890  52 25 3d 21 26 33 42 45  3a 45 58 45 43 41 44 44  |R%=!&3BE:EXECADD|
000018a0  52 25 3d 21 26 33 43 32  3a e8 27 22 20 20 20 20  |R%=!&3C2:.'"    |
000018b0  54 79 70 65 20 66 69 6c  65 20 6c 65 6e 67 74 68  |Type file length|
000018c0  20 2d 20 26 22 20 4c 24  20 3a 4c 45 46 54 44 41  | - &" L$ :LEFTDA|
000018d0  54 41 25 3d a0 28 22 26  22 2b 4c 24 29 20 8b 21  |TA%=.("&"+L$) .!|
000018e0  43 42 25 3d 46 49 4c 45  4e 41 4d 45 25 3a 41 25  |CB%=FILENAME%:A%|
000018f0  3d 35 3a 58 25 3d 43 42  25 20 83 20 32 35 36 3a  |=5:X%=CB% . 256:|
00001900  59 25 3d 43 42 25 20 81  20 32 35 36 3a d6 20 26  |Y%=CB% . 256:. &|
00001910  46 46 44 44 3a 4c 4c 4f  41 44 41 44 44 52 25 3d  |FFDD:LLOADADDR%=|
00001920  43 42 25 21 32 3a 45 58  45 43 41 44 44 52 25 3d  |CB%!2:EXECADDR%=|
00001930  43 42 25 21 36 3a 4c 45  46 54 44 41 54 41 25 3d  |CB%!6:LEFTDATA%=|
00001940  43 42 25 21 31 30 0d 0a  46 8e 4e 58 54 50 4f 49  |CB%!10..F.NXTPOI|
00001950  4e 54 25 3d 26 38 30 30  30 2b 42 55 46 4d 41 52  |NT%=&8000+BUFMAR|
00001960  4b 25 2d 42 55 46 46 25  2b 28 a9 28 24 46 49 4c  |K%-BUFF%+(.($FIL|
00001970  45 4e 41 4d 45 25 29 2b  32 33 29 2d 28 a9 28 24  |ENAME%)+23)-(.($|
00001980  46 49 4c 45 4e 41 4d 45  25 29 2b 32 33 29 2a 28  |FILENAME%)+23)*(|
00001990  4c 45 46 54 44 41 54 41  25 3e 32 35 36 29 2d 33  |LEFTDATA%>256)-3|
000019a0  2a 28 4c 45 46 54 44 41  54 41 25 3e 35 31 32 29  |*(LEFTDATA%>512)|
000019b0  2a 28 28 28 4c 45 46 54  44 41 54 41 25 2d 31 29  |*(((LEFTDATA%-1)|
000019c0  20 81 20 32 35 36 29 2d  31 29 2b 4c 45 46 54 44  | . 256)-1)+LEFTD|
000019d0  41 54 41 25 0d 0a 50 35  49 4e 46 47 4f 4f 44 3d  |ATA%..P5INFGOOD=|
000019e0  28 4e 58 54 50 4f 49 4e  54 25 3c 26 38 30 30 30  |(NXTPOINT%<&8000|
000019f0  2b 45 50 52 4f 4d 53 49  5a 45 2d 31 29 80 20 28  |+EPROMSIZE-1). (|
00001a00  43 48 41 4e 25 3c 3e 30  29 0d 0a 5a 4a e7 20 ac  |CHAN%<>0)..ZJ. .|
00001a10  20 49 4e 46 47 4f 4f 44  20 8c 20 f1 22 20 20 20  | INFGOOD . ."   |
00001a20  20 46 69 6c 65 20 6e 6f  74 20 66 6f 75 6e 64 20  | File not found |
00001a30  6f 72 20 74 6f 6f 20 62  69 67 20 66 6f 72 20 22  |or too big for "|
00001a40  3b 45 50 52 4f 4d 54 59  50 45 20 3a d9 23 43 48  |;EPROMTYPE :.#CH|
00001a50  41 4e 25 0d 0a 64 0c 3d  49 4e 46 47 4f 4f 44 0d  |AN%..d.=INFGOOD.|
00001a60  0a 6e 44 dd 20 f2 48 45  41 44 28 50 4f 49 4e 54  |.nD. .HEAD(POINT|
00001a70  45 52 25 2c 46 49 4c 45  50 4f 49 4e 54 25 2c 4c  |ER%,FILEPOINT%,L|
00001a80  41 44 44 52 25 2c 45 58  41 44 44 52 25 2c 42 4c  |ADDR%,EXADDR%,BL|
00001a90  4f 43 4b 4e 4f 25 2c 46  4c 41 47 25 2c 53 49 5a  |OCKNO%,FLAG%,SIZ|
00001aa0  45 25 29 0d 0a 78 08 ea  20 49 25 0d 0a 82 14 3f  |E%)..x.. I%....?|
00001ab0  50 4f 49 4e 54 45 52 25  3d 97 28 22 2a 22 29 0d  |POINTER%=.("*").|
00001ac0  0a 8c 17 50 4f 49 4e 54  45 52 25 3d 50 4f 49 4e  |...POINTER%=POIN|
00001ad0  54 45 52 25 2b 31 0d 0a  96 19 24 50 4f 49 4e 54  |TER%+1....$POINT|
00001ae0  45 52 25 3d 24 46 49 4c  45 50 4f 49 4e 54 25 0d  |ER%=$FILEPOINT%.|
00001af0  0a a0 1e 49 25 3d a9 28  24 46 49 4c 45 50 4f 49  |...I%=.($FILEPOI|
00001b00  4e 54 25 29 2b 50 4f 49  4e 54 45 52 25 0d 0a aa  |NT%)+POINTER%...|
00001b10  09 3f 49 25 3d 30 0d 0a  b4 0f 49 25 21 31 3d 4c  |.?I%=0....I%!1=L|
00001b20  41 44 44 52 25 0d 0a be  10 49 25 21 35 3d 45 58  |ADDR%....I%!5=EX|
00001b30  41 44 44 52 25 0d 0a c8  11 49 25 21 39 3d 42 4c  |ADDR%....I%!9=BL|
00001b40  4f 43 4b 4e 4f 25 0d 0a  d2 0f 49 25 21 31 31 3d  |OCKNO%....I%!11=|
00001b50  53 49 5a 45 25 0d 0a dc  0f 49 25 3f 31 33 3d 46  |SIZE%....I%?13=F|
00001b60  4c 41 47 25 0d 0a e6 13  49 25 21 31 34 3d 4e 58  |LAG%....I%!14=NX|
00001b70  54 50 4f 49 4e 54 25 0d  0a f0 2f 21 26 38 30 3d  |TPOINT%.../!&80=|
00001b80  50 4f 49 4e 54 45 52 25  3a 3f 26 38 34 3d 49 25  |POINTER%:?&84=I%|
00001b90  2d 50 4f 49 4e 54 45 52  25 2b 31 38 3a d6 20 54  |-POINTER%+18:. T|
00001ba0  41 50 45 43 52 43 0d 0a  fa 0e 49 25 21 31 38 3d  |APECRC....I%!18=|
00001bb0  21 26 38 32 0d 0b 04 12  42 55 46 4d 41 52 4b 25  |!&82....BUFMARK%|
00001bc0  3d 49 25 2b 32 30 0d 0b  0e 10 f2 44 41 54 41 28  |=I%+20.....DATA(|
00001bd0  53 49 5a 45 25 29 0d 0b  18 13 42 4c 4b 4e 4f 25  |SIZE%)....BLKNO%|
00001be0  3d 42 4c 4b 4e 4f 25 2b  31 0d 0b 22 05 e1 0d 0b  |=BLKNO%+1.."....|
00001bf0  2c 12 dd 20 f2 44 41 54  41 28 53 49 5a 45 25 29  |,.. .DATA(SIZE%)|
00001c00  0d 0b 36 08 ea 20 49 25  0d 0b 40 13 e3 49 25 3d  |..6.. I%..@..I%=|
00001c10  30 20 b8 20 53 49 5a 45  25 2d 31 0d 0b 4a 18 20  |0 . SIZE%-1..J. |
00001c20  42 55 46 4d 41 52 4b 25  3f 49 25 3d 9a 23 43 48  |BUFMARK%?I%=.#CH|
00001c30  41 4e 25 0d 0b 54 07 ed  49 25 0d 0b 5e 26 21 26  |AN%..T..I%..^&!&|
00001c40  38 30 3d 42 55 46 4d 41  52 4b 25 3a 3f 26 38 34  |80=BUFMARK%:?&84|
00001c50  3d 53 49 5a 45 25 3a d6  20 54 41 50 45 43 52 43  |=SIZE%:. TAPECRC|
00001c60  0d 0b 68 17 42 55 46 4d  41 52 4b 25 21 53 49 5a  |..h.BUFMARK%!SIZ|
00001c70  45 25 3d 21 26 38 32 0d  0b 72 1d 4c 45 46 54 44  |E%=!&82..r.LEFTD|
00001c80  41 54 41 25 3d 4c 45 46  54 44 41 54 41 25 2d 53  |ATA%=LEFTDATA%-S|
00001c90  49 5a 45 25 0d 0b 7c 1d  42 55 46 4d 41 52 4b 25  |IZE%..|.BUFMARK%|
00001ca0  3d 42 55 46 4d 41 52 4b  25 2b 53 49 5a 45 25 2b  |=BUFMARK%+SIZE%+|
00001cb0  32 0d 0b 86 05 e1 0d 0b  90 0f dd 20 f2 48 41 53  |2.......... .HAS|
00001cc0  48 48 45 41 44 0d 0b 9a  14 3f 42 55 46 4d 41 52  |HHEAD....?BUFMAR|
00001cd0  4b 25 3d 97 28 22 23 22  29 0d 0b a4 17 42 55 46  |K%=.("#")....BUF|
00001ce0  4d 41 52 4b 25 3d 42 55  46 4d 41 52 4b 25 2b 31  |MARK%=BUFMARK%+1|
00001cf0  0d 0b ae 0f f2 44 41 54  41 28 26 31 30 30 29 0d  |.....DATA(&100).|
00001d00  0b b8 13 42 4c 4b 4e 4f  25 3d 42 4c 4b 4e 4f 25  |...BLKNO%=BLKNO%|
00001d10  2b 31 0d 0b c2 05 e1 0d  ff                       |+1.......|
00001d19
Roms/PROMPRG.m0
Roms/PROMPRG.m1
Roms/PROMPRG.m2
Roms/PROMPRG.m4
Roms/PROMPRG.m5