0005 ; EPROM Programmer for the SYM-1 0010 ; Vers 1.6 (4-1-91) 0015 ; Peter G. Fong Sam /c/ 1988 0020 0025 0030 ; begin : 4/1/88 0035 ; revised : 5/18/88 0040 ; revised : 9/22/94 - Fixed ALT-L timing issues - Paul 0045 ; filename: EPROM.RAE 0050 0055 0060 ; This programs 2716, 2732, 2764, 27128, 0065 ; and 27256, as well as the CMOS and A 0070 ; versions. 0075 ; Added 57256 EPROMS 0080 ; 0085 ; NOTE: 27256 only on 32k+ contiguous RAM systems 0090 0095 ; If BAUD is defined 9600 then generate 9600 baud 0100 ; driver else define 4800 generate 4800 baud driver. 0105 ; These are your only two choices. 0110 0115 ; Use PACKET.exe on the IBM for transferring the binaries. 0120 0125 ; Commands 0130 ; ------------ 0135 ; 0140 ; B : blanktest 0145 ; C : checksum EPROM 0150 ; D : display EPROM data in hex and ascii 0155 ; E : select EPROM type 0160 ; M : modify memory 0165 ; P : program 0170 ; R : read EPROM to memory 0175 ; V : verify EPROM to memory 0180 ; X : checksum memory 0185 ; Y : display MEMORY data in hex and ascii 0190 0195 0200 ; - Port Assignments - 0205 ; 0210 ; Port A Port B Port C 0215 ; -------- -------- -------- 0220 ; 7 - i/o 7 - Vcc on 7 - Vpp sel 1 0225 ; 6 - i/o 6 - n/c 6 - Vpp sel 0 0230 ; 5 - i/o 5 - n/c 5 - pin sel 1 0235 ; 4 - i/o 4 - PGM 4 - pin sel 0 0240 ; 3 - i/o 3 - OE 3 - 6v sel 0245 ; 2 - i/o 2 - CE 2 - 5v sel 0250 ; 1 - i/o 1 - RST 4040 1 - PGM/A14 (pin 27) 0255 ; 0 - i/o 0 - CLK 4040 0 - Vcc/A13 (pin 26) 0260 0265 0270 BAUD .DE 9600 0275 0280 PAD .DE $A001 0285 PBD .DE $A000 0290 PCD .DE $AC00 ; U29, 6522 PBD 0295 DDRA .DE $A003 0300 DDRB .DE $A002 0305 DDRC .DE $AC02 ; U29, 6522 DDRB 0310 PBD32 .DE $A402 0315 0320 U27_IFR .DE $A407 0325 U27_8T .DE $A41D 0330 U27_1024T .DE $A41F 0335 0340 ADDRS .DE $FE 0345 PARNR .DE $A649 0350 LSTCOM .DE $A657 0355 P2L .DE $A64C 0360 P2H .DE $A64D 0365 P3L .DE $A64A 0370 P3H .DE $A64B 0375 0380 CRLF .DE $B34D 0385 MEM1 .DE $B514 0390 OUTQM .DE $B320 0395 INCHR .DE $BA1B 0400 OUTCHR .DE $BA47 0405 OUTBYT .DE $B2FA 0410 SPACE .DE $B342 0415 STOCOM .DE $B120 0420 P2SCR .DE $B29C 0425 INSTAT .DE $B386 0430 MEM3 .DE $B805 0435 FILL3 .DE $B718 0440 TOUT .DE $BAA0 0445 0450 ESC .DE $1B 0455 CR .DE $0D 0460 0465 STDBY .DE $82 0470 RD .DE $10 0475 0480 EPROM .DE $A646 0485 SIZE .DE $A610 0490 WR .DE $A611 0495 PGM_PUL .DE $A612 0500 PC_RD .DE $A613 0505 PC_WR .DE $A614 0510 T_MAX .DE $A615 0515 0520 TEMP0 .DE $A616 0525 TEMP1 .DE $A617 0530 0535 SCPBUF .DE $A600 0540 LOBYT .DE $A647 0545 HIBYT .DE $A648 0550 TECHO .DE $A653 0555 0560 .BA $9000 0565 .OS 0570 .ES 0575 0580 0585 ; {MACRO} print string 0590 0595 !!!WRITE .MD (...STRING) 0600 LDX #0 0605 ...P1 LDA ...STRING,X 0610 BEQ ...OUT 0615 JSR OUTCHR 0620 INX 0625 BNE ...P1 0630 ...OUT .ME 0635 0640 ;------ initialize programmer 0645 9000- A9 FF 0650 START LDA #$FF 9002- 8D 02 A0 0655 STA DDRB 9005- 8D 02 AC 0660 STA DDRC 9008- 20 F1 96 0665 JSR STANDBY 900B- 20 4D B3 0670 JSR CRLF 0675 WRITE (HEADER) 900E- A2 00 9010- BD 79 98 9013- F0 06 9015- 20 47 BA 9018- E8 9019- D0 F5 901B- 4C 8C 90 0680 JMP I2764A 0685 0690 ;------ select EPROM type 0695 901E- 20 4D B3 0700 SELECT JSR CRLF 0705 WRITE (TYPES) 9021- A2 00 9023- BD A0 98 9026- F0 06 9028- 20 47 BA 902B- E8 902C- D0 F5 0710 WRITE (TYPES1) 902E- A2 00 9030- BD 1F 99 9033- F0 06 9035- 20 47 BA 9038- E8 9039- D0 F5 0715 WRITE (TYPES2) 903B- A2 00 903D- BD A3 99 9040- F0 06 9042- 20 47 BA 9045- E8 9046- D0 F5 9048- 20 1B BA 0720 JSR INCHR 904B- C9 41 0725 CMP #'A 904D- F0 31 0730 BEQ I2716 904F- C9 42 0735 CMP #'B 9051- F0 31 0740 BEQ I2732 9053- C9 43 0745 CMP #'C 9055- F0 31 0750 BEQ I2732A 9057- C9 44 0755 CMP #'D 9059- F0 1A 0760 BEQ I2764 905B- C9 45 0765 CMP #'E 905D- F0 2D 0770 BEQ I2764A 905F- C9 46 0775 CMP #'F 9061- F0 2D 0780 BEQ I27128 9063- C9 47 0785 CMP #'G 9065- F0 2D 0790 BEQ I27128A 9067- C9 48 0795 CMP #'H 9069- F0 2D 0800 BEQ I27256 906B- C9 49 0805 CMP #'I 906D- F0 2D 0810 BEQ I57256 906F- C9 0D 0815 CMP #CR 9071- F0 19 0820 BEQ I2764A 9073- D0 A9 0825 BNE SELECT 0830 0835 ;------ 2764/27C64 Vpp= 21v, t_max= 15 0840 9075- A9 24 0845 I2764 LDA #$24 9077- 8D 46 A6 0850 INIT STA EPROM 907A- 20 D1 97 0855 JSR SETPARMS 907D- 4C A0 90 0860 JMP PROMPT 0865 0870 ;------ 2716 Vpp= 25v 0875 9080- A9 00 0880 I2716 LDA #0 9082- F0 F3 0885 BEQ INIT 0890 0895 ;------ 2732 Vpp= 25v 0900 9084- A9 0C 0905 I2732 LDA #$0C 9086- D0 EF 0910 BNE INIT 0915 0920 ;------ 2732A Vpp= 21v 0925 9088- A9 18 0930 I2732A LDA #$18 908A- D0 EB 0935 BNE INIT 0940 0945 ;------ 2764A Vpp= 12.5v, t_max= 25 0950 908C- A9 30 0955 I2764A LDA #$30 908E- D0 E7 0960 BNE INIT 0965 0970 ;------ 27128 Vpp= 21v, t_max= 15 0975 9090- A9 3C 0980 I27128 LDA #$3C 9092- D0 E3 0985 BNE INIT 0990 0995 ;------ 27128A Vpp= 12.5v, t_max= 25 1000 9094- A9 48 1005 I27128A LDA #$48 9096- D0 DF 1010 BNE INIT 1015 1020 ;------ 27256 Vpp= 12.5v, t_max= 25 1025 9098- A9 54 1030 I27256 LDA #$54 909A- D0 DB 1035 BNE INIT 1040 909C- A9 60 1045 I57256 LDA #$60 909E- D0 D7 1050 BNE INIT 1055 1060 ;------ get command 1065 90A0- 20 F1 96 1070 PROMPT JSR STANDBY 90A3- 20 4D B3 1075 JSR CRLF 90A6- 20 4D B3 1080 JSR CRLF 90A9- A9 2F 1085 LDA #'/ 90AB- 20 47 BA 1090 JSR OUTCHR 90AE- AD 46 A6 1095 LDA EPROM 90B1- AA 1100 TAX 90B2- A0 06 1105 LDY #6 90B4- BD E2 99 1110 PROMPT_1 LDA ROMS,X 90B7- F0 07 1115 BEQ PROMPT_2 90B9- 20 47 BA 1120 JSR OUTCHR 90BC- E8 1125 INX 90BD- 88 1130 DEY 90BE- D0 F4 1135 BNE PROMPT_1 90C0- A9 2F 1140 PROMPT_2 LDA #'/ 90C2- 20 47 BA 1145 JSR OUTCHR 90C5- 20 4D B3 1150 JSR CRLF 90C8- A9 3E 1155 LDA #'> 90CA- 20 47 BA 1160 JSR OUTCHR 1165 90CD- 20 1B BA 1170 CMD JSR INCHR ; get the command 90D0- C9 42 1175 CMP #'B ; do blank test 90D2- F0 1E 1180 BEQ DC1 90D4- C9 43 1185 CMP #'C ; do checksum 90D6- F0 1D 1190 BEQ DC2 90D8- C9 44 1195 CMP #'D ; dump EPROM 90DA- F0 22 1200 BEQ DC5 90DC- C9 45 1205 CMP #'E ; select 90DE- F0 18 1210 BEQ DC3 90E0- C9 3F 1215 CMP #'? ; display commands 90E2- F0 17 1220 BEQ DC4 90E4- C9 0D 1225 CMP #CR ; return to system 90E6- F0 B8 1230 BEQ PROMPT 90E8- C9 03 1235 CMP #$03 90EA- D0 15 1240 BNE OKCMD 1245 90EC- 00 1250 BRK 90ED- EA 1255 NOP 90EE- EA 1260 NOP 1265 1270 ;------ execute direct commands 1275 90EF- 4C A0 90 1280 DC0 JMP PROMPT 90F2- 4C CB 91 1285 DC1 JMP BLANKTEST 90F5- 4C 01 92 1290 DC2 JMP CHECKSUM 90F8- 4C 1E 90 1295 DC3 JMP SELECT 90FB- 4C 47 92 1300 DC4 JMP COMMANDS 90FE- 4C D9 95 1305 DC5 JMP DUMP 1310 1315 ;------ check syntax, range 1320 9101- 20 20 B1 1325 OKCMD JSR STOCOM 9104- C9 0D 1330 OKCMD1 CMP #CR 9106- D0 5E 1335 BNE OUTERR 9108- AD 49 A6 1340 LDA PARNR 910B- C9 01 1345 CMP #1 910D- D0 0A 1350 BNE CK2PARM 910F- AD 57 A6 1355 LDA LSTCOM 9112- C9 4D 1360 CMP #'M 9114- D0 50 1365 BNE OUTERR 9116- 4C 73 94 1370 JMP MEMORY 9119- C9 02 1375 CK2PARM CMP #2 911B- D0 69 1380 BNE C1 911D- AD 57 A6 1385 LDA LSTCOM 9120- C9 4C 1390 CMP #'L 9122- D0 03 1395 BNE NEXT 9124- 4C B5 91 1400 JMP CONT1 9127- 20 9C B2 1405 NEXT JSR P2SCR 912A- 38 1410 SEC 912B- AD 4A A6 1415 LDA P3L 912E- ED 4C A6 1420 SBC P2L 9131- 8D 47 A6 1425 STA LOBYT 9134- AD 4B A6 1430 LDA P3H 9137- ED 4D A6 1435 SBC P2H 913A- 8D 48 A6 1440 STA HIBYT 913D- 90 37 1445 BCC OVER ; over-range 913F- AD 10 A6 1450 LDA SIZE 9142- CD 48 A6 1455 CMP HIBYT 9145- 90 2F 1460 BCC OVER ; over-range 9147- AD 57 A6 1465 LDA LSTCOM 914A- C9 52 1470 CMP #'R ; read 914C- F0 49 1475 BEQ RCOM 914E- C9 50 1480 CMP #'P ; program 9150- F0 48 1485 BEQ PCOM 9152- C9 53 1490 CMP #'S ; save program to PC 9154- F0 5C 1495 BEQ SCOM 9156- C9 4C 1500 CMP #'L ; load file from PC 9158- F0 55 1505 BEQ LCOM 915A- C9 56 1510 CMP #'V ; verify 915C- F0 3F 1515 BEQ VCOM 915E- C9 58 1520 CMP #'X ; checksum memory 9160- F0 41 1525 BEQ XCOM 9162- C9 59 1530 CMP #'Y ; dump memory 9164- F0 43 1535 BEQ YCOM 1540 OUTERR WRITE (ENTRY) 9166- A2 00 9168- BD 4E 9A 916B- F0 06 916D- 20 47 BA 9170- E8 9171- D0 F5 9173- 4C A0 90 1545 JMP PROMPT 1550 OVER WRITE (OVR) 9176- A2 00 9178- BD 5A 9A 917B- F0 06 917D- 20 47 BA 9180- E8 9181- D0 F5 9183- 4C A0 90 1555 JMP PROMPT 9186- C9 03 1560 C1 CMP #$03 9188- D0 DC 1565 BNE =-35 918A- AD 57 A6 1570 LDA LSTCOM 918D- C9 46 1575 CMP #'F 918F- F0 12 1580 BEQ XCOM 9191- C9 4D 1585 CMP #'M 9193- F0 0B 1590 BEQ MCOM 9195- D0 CF 1595 BNE OUTERR 1600 1605 ;------ execute command 1610 9197- 4C 64 92 1615 RCOM JMP READ 919A- 4C 76 92 1620 PCOM JMP PROGRAM 919D- 4C E7 93 1625 VCOM JMP VERIFY 91A0- 4C 73 94 1630 MCOM JMP MEMORY 91A3- 4C 79 94 1635 XCOM JMP XCOMD 91A6- 4C 7F 94 1640 DCOM JMP CKSMEM 91A9- 4C D9 95 1645 YCOM JMP DUMP 91AC- 4C C2 94 1650 DUMP_MEM JMP D_MEM 91AF- 4C 59 96 1655 LCOM JMP LOAD 91B2- 4C 80 96 1660 SCOM JMP SAVE 1665 91B5- 18 1670 CONT1 CLC 91B6- AD 4C A6 1675 LDA P2L 91B9- 6D 4A A6 1680 ADC P3L 91BC- 8D 4A A6 1685 STA P3L 91BF- AD 4D A6 1690 LDA P2H 91C2- 6D 4B A6 1695 ADC P3H 91C5- 8D 4B A6 1700 STA P3H 91C8- 4C 27 91 1705 JMP NEXT 1710 1715 ; ------ blank test 1720 1725 BLANKTEST WRITE (BCHECK) 91CB- A2 00 91CD- BD 66 9A 91D0- F0 06 91D2- 20 47 BA 91D5- E8 91D6- D0 F5 91D8- 20 19 98 1730 JSR NUMBYTS 91DB- 20 E7 97 1735 JSR BLANK 91DE- C9 FF 1740 CMP #$FF 91E0- D0 0F 1745 BNE NO 1750 WRITE (OK) 91E2- A2 00 91E4- BD 74 9A 91E7- F0 06 91E9- 20 47 BA 91EC- E8 91ED- D0 F5 91EF- F0 0D 1755 BEQ B2 1760 NO WRITE (FAIL) 91F1- A2 00 91F3- BD 78 9A 91F6- F0 06 91F8- 20 47 BA 91FB- E8 91FC- D0 F5 91FE- 4C A0 90 1765 B2 JMP PROMPT 1770 1775 ; ------ checksum EPROM 1780 1785 CHECKSUM WRITE (CKSUM) 9201- A2 00 9203- BD 80 9A 9206- F0 06 9208- 20 47 BA 920B- E8 920C- D0 F5 920E- 20 19 98 1790 JSR NUMBYTS 9211- 20 07 97 1795 JSR PORT_RD 9214- A9 00 1800 LDA #0 9216- 8D 47 A6 1805 STA LOBYT 9219- 8D 48 A6 1810 STA HIBYT 921C- 18 1815 CHKSUM CLC 921D- AD 01 A0 1820 LDA PAD ; calculate lo byte 9220- 6D 47 A6 1825 ADC LOBYT 9223- 8D 47 A6 1830 STA LOBYT 9226- A9 00 1835 LDA #0 ; calculate hi byte 9228- 6D 48 A6 1840 ADC HIBYT 922B- 8D 48 A6 1845 STA HIBYT 922E- 20 F9 97 1850 JSR INCCMP 9231- 90 E9 1855 BCC CHKSUM 9233- A9 24 1860 LDA #'$ 9235- 20 47 BA 1865 JSR OUTCHR 9238- AD 48 A6 1870 LDA HIBYT 923B- 20 FA B2 1875 JSR OUTBYT 923E- AD 47 A6 1880 LDA LOBYT 9241- 20 FA B2 1885 JSR OUTBYT 9244- 4C A0 90 1890 JMP PROMPT 1895 1900 ; ------ display commands 1905 1910 COMMANDS WRITE (CMDS) 9247- A2 00 9249- BD B1 9B 924C- F0 06 924E- 20 47 BA 9251- E8 9252- D0 F5 1915 WRITE (CMDS2) 9254- A2 00 9256- BD 3A 9C 9259- F0 06 925B- 20 47 BA 925E- E8 925F- D0 F5 9261- 4C A0 90 1920 JMP PROMPT 1925 1930 ; ------ read 1935 9264- 20 07 97 1940 READ JSR PORT_RD 9267- A0 00 1945 LDY #0 9269- AD 01 A0 1950 R1 LDA PAD ; get data 926C- 91 FE 1955 STA (ADDRS),Y 926E- 20 F9 97 1960 JSR INCCMP 9271- 90 F6 1965 BCC R1 9273- 4C A0 90 1970 JMP PROMPT 1975 1980 ; ------ program 1985 9276- 20 4D B3 1990 PROGRAM JSR CRLF 9279- 20 E7 97 1995 JSR BLANK ; do blank test 927C- C9 FF 2000 CMP #$FF 927E- F0 1A 2005 BEQ PGM3 2010 WRITE (OPTION) ; continue ? 9280- A2 00 9282- BD 8D 9A 9285- F0 06 9287- 20 47 BA 928A- E8 928B- D0 F5 928D- 20 1B BA 2015 JSR INCHR 9290- C9 59 2020 CMP #'Y 9292- F0 03 2025 BEQ PGM2 9294- 4C A0 90 2030 JMP PROMPT 2035 2040 ;------ setup programming 2045 9297- 20 4D B3 2050 PGM2 JSR CRLF 929A- 20 9C B2 2055 PGM3 JSR P2SCR 929D- AD 10 A6 2060 LDA SIZE ; determine which EPROM 92A0- C9 1F 2065 CMP #$1F 92A2- 90 03 2070 BCC P_24P 92A4- 4C 27 93 2075 JMP P_28P 2080 2085 ;------ program 2716/2732 2090 92A7- 20 2C 97 2095 P_24P JSR SET_PGM 92AA- A2 10 2100 LDX #16 2105 2110 ;------ program location 2115 92AC- A0 00 2120 LDY #0 92AE- 20 86 B3 2125 P0 JSR INSTAT 92B1- 90 03 2130 BCC =+4 92B3- 4C D7 93 2135 JMP BRK_PGM 92B6- B1 FE 2140 LDA (ADDRS),Y 92B8- C9 FF 2145 CMP #$FF 92BA- F0 59 2150 BEQ P1 92BC- 8D 01 A0 2155 STA PAD 92BF- EA 2160 NOP 92C0- EA 2165 NOP 92C1- 20 AF 97 2170 JSR T_50MS 2175 2180 ;------ verify byte 2185 92C4- AD 10 A6 2190 LDA SIZE ; 2716 or 2732 ? 92C7- C9 07 2195 CMP #7 92C9- D0 1C 2200 BNE VB_2732 2205 92CB- A9 00 2210 VB_2716 LDA #0 92CD- 8D 03 A0 2215 STA DDRA 92D0- 8D 00 A0 2220 STA PBD 92D3- EA 2225 NOP 92D4- AD 01 A0 2230 LDA PAD 92D7- D1 FE 2235 CMP (ADDRS),Y 92D9- F0 03 2240 BEQ RP0 92DB- 4C C4 93 2245 JMP DFTEST 92DE- AD 11 A6 2250 RP0 LDA WR 92E1- 8D 00 A0 2255 STA PBD 92E4- 4C 10 93 2260 JMP PM 2265 ; 92E7- A9 00 2270 VB_2732 LDA #0 92E9- 8D 03 A0 2275 STA DDRA 92EC- AD 14 A6 2280 LDA PC_WR 92EF- 09 20 2285 ORA #$20 92F1- 8D 00 AC 2290 STA PCD 92F4- A9 10 2295 LDA #RD 92F6- 8D 00 A0 2300 STA PBD 92F9- EA 2305 NOP 92FA- AD 01 A0 2310 LDA PAD 92FD- D1 FE 2315 CMP (ADDRS),Y 92FF- F0 03 2320 BEQ RP1 9301- 4C C4 93 2325 JMP DFTEST 9304- AD 11 A6 2330 RP1 LDA WR 9307- 8D 00 A0 2335 STA PBD 930A- AD 14 A6 2340 LDA PC_WR 930D- 8D 00 AC 2345 STA PCD 2350 9310- A9 FF 2355 PM LDA #$FF 9312- 8D 03 A0 2360 STA DDRA 2365 2370 ;----- check range 2375 9315- 20 F9 97 2380 P1 JSR INCCMP 9318- B0 0A 2385 BCS P2 931A- CA 2390 DEX 931B- D0 91 2395 BNE P0 931D- 20 49 97 2400 JSR OUT_ADDR 9320- A2 10 2405 LDX #16 9322- D0 8A 2410 BNE P0 2415 ; 9324- 4C A6 93 2420 P2 JMP PWRDWN 2425 2430 ;------ program 2764/27128/(27256) 2435 9327- 20 2C 97 2440 P_28P JSR SET_PGM 932A- A9 10 2445 LDA #16 932C- 8D 47 A6 2450 STA LOBYT 932F- A0 00 2455 LDY #0 9331- 20 86 B3 2460 NX_ADDR JSR INSTAT 9334- 90 03 2465 BCC =+4 9336- 4C D7 93 2470 JMP BRK_PGM 9339- B1 FE 2475 LDA (ADDRS),Y 933B- C9 FF 2480 CMP #$FF ; skip $FF 's 933D- F0 4F 2485 BEQ CHKEND 933F- 8D 01 A0 2490 STA PAD 9342- EA 2495 NOP 9343- EA 2500 NOP 9344- A2 00 2505 LDX #0 2510 2515 ;------ pgm pulse 2520 9346- 20 74 97 2525 PGM JSR T_1MS 9349- E8 2530 INX 934A- EC 15 A6 2535 CPX T_MAX 934D- F0 1F 2540 BEQ OVERPGM 2545 2550 ;------ verify pgm byte 2555 934F- A9 00 2560 LDA #0 9351- 8D 03 A0 2565 STA DDRA 9354- AD 11 A6 2570 LDA WR 9357- 29 F0 2575 AND #$F0 9359- 8D 00 A0 2580 STA PBD 935C- EA 2585 NOP 935D- EA 2590 NOP 935E- AD 01 A0 2595 LDA PAD 9361- D1 FE 2600 CMP (ADDRS),Y 9363- F0 06 2605 BEQ PGM_OK 9365- 20 1B 97 2610 JSR RST_PB 9368- 4C 46 93 2615 JMP PGM 936B- 20 1B 97 2620 PGM_OK JSR RST_PB 2625 2630 ;------ overprogram pulse 2635 936E- 20 8B 97 2640 OVERPGM JSR T_XMS 9371- EC 15 A6 2645 CPX T_MAX 9374- D0 18 2650 BNE CHKEND 2655 2660 ;------ verify byte: x = t_max 2665 9376- A9 00 2670 VFYBYT LDA #0 9378- 8D 03 A0 2675 STA DDRA 937B- AD 11 A6 2680 LDA WR 937E- 29 F0 2685 AND #$F0 9380- 8D 00 A0 2690 STA PBD 9383- EA 2695 NOP 9384- AD 01 A0 2700 LDA PAD 9387- D1 FE 2705 CMP (ADDRS),Y 9389- D0 39 2710 BNE DFTEST 938B- 20 1B 97 2715 JSR RST_PB 2720 2725 ;------ check if last address 2730 938E- 20 F9 97 2735 CHKEND JSR INCCMP 9391- B0 13 2740 BCS PWRDWN 9393- CE 47 A6 2745 DEC LOBYT 9396- AD 47 A6 2750 LDA LOBYT 9399- D0 96 2755 BNE NX_ADDR 939B- 20 49 97 2760 JSR OUT_ADDR 939E- A9 10 2765 LDA #16 93A0- 8D 47 A6 2770 STA LOBYT 93A3- 4C 31 93 2775 JMP NX_ADDR 2780 2785 ;------ setup for verifying 2790 93A6- AD 11 A6 2795 PWRDWN LDA WR 93A9- 09 02 2800 ORA #$02 ; reset counters 93AB- 8D 00 A0 2805 STA PBD 93AE- 20 07 97 2810 JSR PORT_RD 93B1- 20 9C B2 2815 JSR P2SCR 93B4- A9 0D 2820 LDA #CR 93B6- 20 47 BA 2825 JSR OUTCHR 93B9- 20 31 98 2830 JSR SP6 93BC- A9 0D 2835 LDA #CR 93BE- 20 47 BA 2840 JSR OUTCHR 93C1- 4C 00 94 2845 JMP V1 2850 2855 ;------ device failed 2860 2865 DFTEST WRITE (DF) 93C4- A2 00 93C6- BD D4 9A 93C9- F0 06 93CB- 20 47 BA 93CE- E8 93CF- D0 F5 93D1- 20 5C 97 2870 JSR DISADD 93D4- 4C A0 90 2875 JMP PROMPT 2880 2885 ;------ abort programming 2890 2895 BRK_PGM WRITE (BPGM) 93D7- A2 00 93D9- BD B0 9A 93DC- F0 06 93DE- 20 47 BA 93E1- E8 93E2- D0 F5 93E4- 4C A0 90 2900 JMP PROMPT 2905 2910 ; ------ verify 2915 93E7- 20 4D B3 2920 VERIFY JSR CRLF 2925 WRITE (VER) 93EA- A2 00 93EC- BD C7 9A 93EF- F0 06 93F1- 20 47 BA 93F4- E8 93F5- D0 F5 93F7- A9 00 2930 PV LDA #0 93F9- A8 2935 TAY 93FA- 8D 03 A0 2940 STA DDRA 93FD- 20 07 97 2945 JSR PORT_RD 9400- AD 01 A0 2950 V1 LDA PAD ; read EPROM 9403- D1 FE 2955 CMP (ADDRS),Y 9405- D0 15 2960 BNE V2 9407- 20 F9 97 2965 JSR INCCMP 940A- 90 F4 2970 BCC V1 2975 WRITE (OK) 940C- A2 00 940E- BD 74 9A 9411- F0 06 9413- 20 47 BA 9416- E8 9417- D0 F5 9419- 4C A0 90 2980 JMP PROMPT 2985 V2 WRITE (DF) 941C- A2 00 941E- BD D4 9A 9421- F0 06 9423- 20 47 BA 9426- E8 9427- D0 F5 9429- A2 10 2990 V3 LDX #16 942B- 20 5C 97 2995 V4 JSR DISADD 942E- 20 4D B3 3000 JSR CRLF 9431- 20 F9 97 3005 CP JSR INCCMP 9434- B0 34 3010 BCS V5 9436- AD 01 A0 3015 LDA PAD 9439- D1 FE 3020 CMP (ADDRS),Y 943B- F0 F4 3025 BEQ CP 943D- CA 3030 DEX 943E- D0 EB 3035 BNE V4 3040 WRITE (DF_T2) 9440- A2 00 9442- BD 17 9B 9445- F0 06 9447- 20 47 BA 944A- E8 944B- D0 F5 944D- 20 1B BA 3045 JSR INCHR 9450- C9 0D 3050 CMP #CR 9452- F0 16 3055 BEQ V5 9454- 20 4D B3 3060 JSR CRLF 9457- 20 4D B3 3065 JSR CRLF 3070 WRITE (DF_T1) 945A- A2 00 945C- BD E7 9A 945F- F0 06 9461- 20 47 BA 9464- E8 9465- D0 F5 9467- 4C 29 94 3075 JMP V3 946A- 4C A0 90 3080 V5 JMP PROMPT 3085 3090 ; ------ modify memory 3095 946D- 20 14 B5 3100 JSR MEM1 9470- 4C A0 90 3105 JMP PROMPT 3110 9473- 20 05 B8 3115 MEMORY JSR MEM3 9476- 4C A0 90 3120 JMP PROMPT 9479- 20 18 B7 3125 XCOMD JSR FILL3 947C- 4C A0 90 3130 JMP PROMPT 3135 3140 ; ------ checksum memory 3145 947F- 20 4D B3 3150 CKSMEM JSR CRLF 3155 WRITE (CKSUM) 9482- A2 00 9484- BD 80 9A 9487- F0 06 9489- 20 47 BA 948C- E8 948D- D0 F5 948F- A9 00 3160 LDA #0 9491- 8D 47 A6 3165 STA LOBYT 9494- 8D 48 A6 3170 STA HIBYT 9497- A8 3175 TAY 9498- 18 3180 NX_MEM CLC 9499- B1 FE 3185 LDA (ADDRS),Y 949B- 6D 47 A6 3190 ADC LOBYT 949E- 8D 47 A6 3195 STA LOBYT 94A1- A9 00 3200 LDA #0 94A3- 6D 48 A6 3205 ADC HIBYT 94A6- 8D 48 A6 3210 STA HIBYT 94A9- 20 FF 97 3215 JSR COMPAR 94AC- 90 EA 3220 BCC NX_MEM 94AE- A9 24 3225 LDA #'$ 94B0- 20 47 BA 3230 JSR OUTCHR 94B3- AD 48 A6 3235 LDA HIBYT 94B6- 20 FA B2 3240 JSR OUTBYT 94B9- AD 47 A6 3245 LDA LOBYT 94BC- 20 FA B2 3250 JSR OUTBYT 94BF- 4C A0 90 3255 JMP PROMPT 3260 3265 ; (* dump MEMORY *) 3270 94C2- A0 00 3275 D_MEM LDY #0 94C4- A5 FE 3280 LDA *ADDRS 94C6- D0 03 3285 BNE =+4 94C8- 4C 6C 95 3290 JMP MLINE 94CB- 29 0F 3295 AND #$0F 94CD- 8D 47 A6 3300 STA LOBYT 94D0- A5 FE 3305 LDA *ADDRS 94D2- 29 F0 3310 AND #$F0 94D4- 4A 3315 LSR A 94D5- 4A 3320 LSR A 94D6- 4A 3325 LSR A 94D7- 4A 3330 LSR A 94D8- 8D 48 A6 3335 STA HIBYT 94DB- A2 00 3340 LDX #0 94DD- A9 20 3345 LDA #$20 94DF- 9D 00 A6 3350 STA SCPBUF,X 94E2- E8 3355 INX 94E3- E0 10 3360 CPX #$10 94E5- D0 F8 3365 BNE =-7 3370 WRITE (DLIST) 94E7- A2 00 94E9- BD 45 9B 94EC- F0 06 94EE- 20 47 BA 94F1- E8 94F2- D0 F5 94F4- 20 2B 98 3375 JSR SP4 3380 WRITE (DASCII) 94F7- A2 00 94F9- BD 7E 9B 94FC- F0 06 94FE- 20 47 BA 9501- E8 9502- D0 F5 9504- 20 4D B3 3385 JSR CRLF 9507- A5 FF 3390 LDA *ADDRS+1 9509- 20 FA B2 3395 JSR OUTBYT 950C- A5 FE 3400 LDA *ADDRS 950E- 29 F0 3405 AND #$F0 9510- 20 FA B2 3410 JSR OUTBYT 9513- AE 47 A6 3415 LDX LOBYT 9516- F0 0D 3420 BEQ DFL1 9518- BD 91 9B 3425 LDA XTBL,X 951B- AA 3430 TAX 951C- 20 42 B3 3435 JSR SPACE 951F- CA 3440 DEX 9520- D0 FA 3445 BNE =-5 9522- AE 47 A6 3450 LDX LOBYT 9525- 20 42 B3 3455 DFL1 JSR SPACE 9528- 20 42 B3 3460 JSR SPACE 952B- B1 FE 3465 LDA (ADDRS),Y 952D- 9D 00 A6 3470 STA SCPBUF,X 9530- 20 FA B2 3475 JSR OUTBYT 9533- C8 3480 INY 9534- E8 3485 INX 9535- E0 08 3490 CPX #8 9537- F0 EC 3495 BEQ DFL1 9539- E0 10 3500 CPX #$10 953B- D0 EB 3505 BNE DFL1+3 953D- 20 C7 96 3510 DFL3 JSR ASCII 9540- A5 FE 3515 LDA *ADDRS 9542- 09 0F 3520 ORA #$0F 9544- 85 FE 3525 STA *ADDRS 9546- 38 3530 SEC 9547- AD 4A A6 3535 LDA P3L 954A- E5 FE 3540 SBC *ADDRS 954C- AD 4B A6 3545 LDA P3H 954F- E5 FF 3550 SBC *ADDRS+1 9551- B0 03 3555 BCS =+4 9553- 4C A0 90 3560 JMP PROMPT 9556- 20 FF 97 3565 JSR COMPAR 9559- B0 F8 3570 BCS =-7 955B- A0 00 3575 LDY #0 955D- AD 48 A6 3580 LDA HIBYT 9560- 49 0F 3585 EOR #$0F 9562- 8D 16 A6 3590 STA TEMP0 9565- D0 27 3595 BNE MADDRS 9567- 20 4D B3 3600 YLIN JSR CRLF 3605 ; 956A- A0 00 3610 MD LDY #0 3615 MLINE WRITE (DLIST) 956C- A2 00 956E- BD 45 9B 9571- F0 06 9573- 20 47 BA 9576- E8 9577- D0 F5 9579- 20 2B 98 3620 JSR SP4 3625 WRITE (DASCII) 957C- A2 00 957E- BD 7E 9B 9581- F0 06 9583- 20 47 BA 9586- E8 9587- D0 F5 9589- A9 10 3630 LDA #$10 958B- 8D 16 A6 3635 STA TEMP0 3640 3645 ;------ display hex 3650 958E- 20 4D B3 3655 MADDRS JSR CRLF 9591- A2 00 3660 LDX #0 9593- A5 FF 3665 LDA *ADDRS+1 9595- 20 FA B2 3670 JSR OUTBYT 9598- A5 FE 3675 LDA *ADDRS 959A- 20 FA B2 3680 JSR OUTBYT 959D- 20 42 B3 3685 MD2 JSR SPACE 95A0- 20 42 B3 3690 MD1 JSR SPACE 95A3- B1 FE 3695 LDA (ADDRS),Y 95A5- 9D 00 A6 3700 STA SCPBUF,X 95A8- 20 FA B2 3705 JSR OUTBYT 95AB- 20 F9 97 3710 JSR INCCMP 95AE- B0 23 3715 BCS MD3+3 95B0- E8 3720 INX 95B1- E0 08 3725 CPX #8 95B3- F0 E8 3730 BEQ MD2 95B5- E0 10 3735 CPX #$10 95B7- D0 E7 3740 BNE MD1 95B9- 20 C7 96 3745 JSR ASCII 95BC- 20 86 B3 3750 JSR INSTAT 95BF- 90 07 3755 BCC =+8 95C1- 20 1B BA 3760 JSR INCHR 95C4- C9 0D 3765 CMP #CR 95C6- F0 0E 3770 BEQ MD4 95C8- CE 16 A6 3775 DEC TEMP0 95CB- AD 16 A6 3780 LDA TEMP0 95CE- F0 97 3785 BEQ =-104 95D0- 4C 8E 95 3790 MD3 JMP MADDRS 95D3- 4C 3C 96 3795 JMP D1A 95D6- 4C A0 90 3800 MD4 JMP PROMPT 3805 3810 ; ------ dump EPROM 3815 95D9- 20 07 97 3820 DUMP JSR PORT_RD 95DC- 20 4D B3 3825 DUMP1 JSR CRLF 95DF- 20 19 98 3830 JSR NUMBYTS 3835 DLINE WRITE (DLIST) 95E2- A2 00 95E4- BD 45 9B 95E7- F0 06 95E9- 20 47 BA 95EC- E8 95ED- D0 F5 95EF- 20 2B 98 3840 JSR SP4 3845 WRITE (DASCII) 95F2- A2 00 95F4- BD 7E 9B 95F7- F0 06 95F9- 20 47 BA 95FC- E8 95FD- D0 F5 95FF- A0 10 3850 LDY #$10 3855 3860 ;------ display hex 3865 9601- 20 4D B3 3870 DADDRS JSR CRLF 9604- A2 00 3875 LDX #0 9606- A5 FF 3880 LDA *ADDRS+1 9608- 20 FA B2 3885 JSR OUTBYT 960B- A5 FE 3890 LDA *ADDRS 960D- 20 FA B2 3895 JSR OUTBYT 9610- 20 42 B3 3900 D2 JSR SPACE 9613- 20 42 B3 3905 D1 JSR SPACE 9616- AD 01 A0 3910 LDA PAD 9619- 9D 00 A6 3915 STA SCPBUF,X 961C- 20 FA B2 3920 JSR OUTBYT 961F- 20 F9 97 3925 JSR INCCMP 9622- B0 21 3930 BCS D2A 9624- E8 3935 INX 9625- E0 08 3940 CPX #8 9627- F0 E7 3945 BEQ D2 9629- E0 10 3950 CPX #$10 962B- D0 E6 3955 BNE D1 962D- 20 C7 96 3960 JSR ASCII 9630- 20 86 B3 3965 JSR INSTAT 9633- 90 07 3970 BCC D1A 9635- 20 1B BA 3975 JSR INCHR 9638- C9 0D 3980 CMP #CR 963A- F0 1A 3985 BEQ D3 963C- 88 3990 D1A DEY 963D- D0 C2 3995 BNE DADDRS 963F- 20 4D B3 4000 JSR CRLF 9642- 4C E2 95 4005 JMP DLINE 9645- E8 4010 D2A INX 9646- E0 10 4015 CPX #$10 9648- F0 09 4020 BEQ NOPOS 964A- BC A1 9B 4025 LDY SPTBL,X 964D- 20 42 B3 4030 JSR SPACE 9650- 88 4035 DEY 9651- D0 FA 4040 BNE =-5 9653- 20 C7 96 4045 NOPOS JSR ASCII 9656- 4C A0 90 4050 D3 JMP PROMPT 4055 4060 ; ------ load file from PC 4065 9659- A9 02 4070 LOAD LDA #$02 965B- 20 47 BA 4075 JSR OUTCHR 965E- A0 00 4080 LDY #$00 9660- 8C 16 A6 4085 STY TEMP0 9663- 20 3E 98 4090 A1 JSR RX_CHR 9666- 91 FE 4095 STA (ADDRS),Y 9668- 20 FF 97 4100 JSR COMPAR 966B- B0 10 4105 BCS =+17 966D- EE 16 A6 4110 INC TEMP0 9670- AD 16 A6 4115 LDA TEMP0 9673- D0 EE 4120 BNE =-17 9675- A9 06 4125 LDA #$06 9677- 20 47 BA 4130 JSR OUTCHR 967A- 4C 63 96 4135 JMP A1 967D- 4C A0 90 4140 JMP PROMPT 4145 4150 ; ------ save file to PC 4155 9680- A9 02 4160 SAVE LDA #$02 9682- 20 47 BA 4165 JSR OUTCHR 9685- AD 4D A6 4170 LDA P2H 9688- 20 47 BA 4175 JSR OUTCHR 968B- AD 4C A6 4180 LDA P2L 968E- 20 47 BA 4185 JSR OUTCHR 9691- AD 48 A6 4190 LDA HIBYT 9694- 20 47 BA 4195 JSR OUTCHR 9697- AD 47 A6 4200 LDA LOBYT 969A- 20 47 BA 4205 JSR OUTCHR 969D- 20 70 98 4210 JSR ECHO 96A0- 20 1B BA 4215 JSR INCHR 96A3- A2 00 4220 LDX #$00 96A5- A0 00 4225 LDY #$00 96A7- B1 FE 4230 A2 LDA (ADDRS),Y 96A9- 20 A0 BA 4235 JSR TOUT 96AC- 20 FF 97 4240 JSR COMPAR 96AF- B0 0D 4245 BCS =+14 96B1- E8 4250 INX 96B2- D0 F3 4255 BNE A2 96B4- 20 1B BA 4260 JSR INCHR 96B7- C9 18 4265 CMP #$18 96B9- F0 03 4270 BEQ A3 96BB- 4C A7 96 4275 JMP A2 96BE- 20 1B BA 4280 A3 JSR INCHR 96C1- 20 70 98 4285 JSR ECHO 96C4- 4C A0 90 4290 JMP PROMPT 4295 4300 ;------ display ascii 4305 96C7- AD 16 A6 4310 ASCII LDA TEMP0 96CA- 48 4315 PHA 96CB- 8E 16 A6 4320 STX TEMP0 96CE- 20 2B 98 4325 JSR SP4 96D1- 20 42 B3 4330 JSR SPACE 96D4- A2 00 4335 LDX #0 96D6- BD 00 A6 4340 NX_ASC LDA SCPBUF,X 96D9- C9 20 4345 CMP #$20 96DB- 90 04 4350 BCC ASC_NO 96DD- C9 80 4355 CMP #$80 96DF- 90 02 4360 BCC ASC_YES 96E1- A9 2E 4365 ASC_NO LDA #'. 96E3- 20 47 BA 4370 ASC_YES JSR OUTCHR 96E6- E8 4375 INX 96E7- EC 16 A6 4380 CPX TEMP0 96EA- D0 EA 4385 BNE NX_ASC 96EC- 68 4390 PLA 96ED- 8D 16 A6 4395 STA TEMP0 96F0- 60 4400 RTS 4405 4410 ;------ port: standby mode 4415 96F1- A9 FF 4420 STANDBY LDA #$FF 96F3- 8D 03 A0 4425 STA DDRA 96F6- A9 00 4430 LDA #0 96F8- 8D 01 A0 4435 STA PAD 96FB- A9 82 4440 LDA #STDBY 96FD- 8D 00 A0 4445 STA PBD 9700- AD 13 A6 4450 LDA PC_RD 9703- 8D 00 AC 4455 STA PCD 9706- 60 4460 RTS 4465 4470 ;------ port: read mode 4475 9707- A9 00 4480 PORT_RD LDA #0 9709- 8D 03 A0 4485 STA DDRA 970C- AD 13 A6 4490 LDA PC_RD 970F- 8D 00 AC 4495 STA PCD 9712- A9 10 4500 LDA #RD 9714- 8D 00 A0 4505 STA PBD 9717- 20 C6 97 4510 JSR T_200MS 971A- 60 4515 RTS 4520 4525 ;------ ports: program mode 4530 971B- AD 11 A6 4535 RST_PB LDA WR 971E- 8D 00 A0 4540 STA PBD 9721- A9 FF 4545 LDA #$FF 9723- 8D 03 A0 4550 STA DDRA 9726- B1 FE 4555 LDA (ADDRS),Y 9728- 8D 01 A0 4560 STA PAD 972B- 60 4565 RTS 4570 4575 ;------ ports A, B, C: pgm mode 4580 972C- AD 14 A6 4585 SET_PGM LDA PC_WR 972F- 8D 00 AC 4590 STA PCD 9732- AD 11 A6 4595 LDA WR 9735- 09 02 4600 ORA #2 9737- 8D 00 A0 4605 STA PBD 973A- AD 11 A6 4610 LDA WR 973D- 8D 00 A0 4615 STA PBD 9740- A9 FF 4620 LDA #$FF 9742- 8D 03 A0 4625 STA DDRA 9745- 20 C6 97 4630 JSR T_200MS 9748- 60 4635 RTS 4640 4645 ;------ display address 4650 9749- A9 0D 4655 OUT_ADDR LDA #CR 974B- 20 47 BA 4660 JSR OUTCHR 974E- 20 42 B3 4665 OA JSR SPACE 9751- A5 FF 4670 LDA *ADDRS+1 9753- 20 FA B2 4675 JSR OUTBYT 9756- A5 FE 4680 LDA *ADDRS 9758- 20 FA B2 4685 JSR OUTBYT 975B- 60 4690 RTS 4695 4700 ;------ address, data, EPROM 4705 975C- 20 42 B3 4710 DISADD JSR SPACE 975F- 20 4E 97 4715 JSR OA 9762- 20 2B 98 4720 JSR SP4 9765- B1 FE 4725 LDA (ADDRS),Y 9767- 20 FA B2 4730 JSR OUTBYT 976A- 20 31 98 4735 JSR SP6 976D- AD 01 A0 4740 LDA PAD 9770- 20 FA B2 4745 JSR OUTBYT 9773- 60 4750 RTS 4755 4760 ;------ 1 mS pulse 4765 9774- AD 12 A6 4770 T_1MS LDA PGM_PUL 9777- 8D 00 A0 4775 STA PBD 977A- A9 7D 4780 LDA #125 977C- 8D 1D A4 4785 STA U27_8T 977F- AD 07 A4 4790 CK1 LDA U27_IFR 9782- 10 FB 4795 BPL CK1 9784- AD 11 A6 4800 LDA WR 9787- 8D 00 A0 4805 STA PBD 978A- 60 4810 RTS 4815 4820 ;------ 3x/4x mS pulse 4825 978B- AD 12 A6 4830 T_XMS LDA PGM_PUL 978E- 8D 00 A0 4835 STA PBD 9791- AD 15 A6 4840 LDA T_MAX 9794- C9 0F 4845 CMP #15 9796- D0 05 4850 BNE T_3X 9798- BD 8C 9C 4855 LDA TABL_4X,X 979B- D0 03 4860 BNE SET 979D- BD 72 9C 4865 T_3X LDA TABL_3X,X 97A0- 8D 1F A4 4870 SET STA U27_1024T 97A3- AD 07 A4 4875 CK2 LDA U27_IFR 97A6- 10 FB 4880 BPL CK2 97A8- AD 11 A6 4885 LDA WR 97AB- 8D 00 A0 4890 STA PBD 97AE- 60 4895 RTS 4900 4905 ;------ 50 mS pulse 4910 97AF- AD 12 A6 4915 T_50MS LDA PGM_PUL 97B2- 8D 00 A0 4920 STA PBD 97B5- A9 31 4925 LDA #49 97B7- 8D 1F A4 4930 STA U27_1024T 97BA- AD 07 A4 4935 CK3 LDA U27_IFR 97BD- 10 FB 4940 BPL CK3 97BF- AD 11 A6 4945 LDA WR 97C2- 8D 00 A0 4950 STA PBD 97C5- 60 4955 RTS 4960 4965 ;------ 200 mS timer 4970 97C6- A9 C3 4975 T_200MS LDA #195 97C8- 8D 1F A4 4980 STA U27_1024T 97CB- AD 07 A4 4985 CK4 LDA U27_IFR 97CE- 10 FB 4990 BPL CK4 97D0- 60 4995 RTS 5000 5005 ;------ setup EPROM parameters from table 5010 97D1- 18 5015 SETPARMS CLC 97D2- AD 46 A6 5020 LDA EPROM 97D5- 69 06 5025 ADC #6 97D7- AA 5030 TAX 97D8- A0 00 5035 LDY #0 97DA- BD E2 99 5040 SP LDA ROMS,X 97DD- 99 10 A6 5045 STA SIZE,Y 97E0- E8 5050 INX 97E1- C8 5055 INY 97E2- C0 06 5060 CPY #6 97E4- D0 F4 5065 BNE SP 97E6- 60 5070 RTS 5075 5080 ;------ check all bytes for $FF 5085 97E7- 20 07 97 5090 BLANK JSR PORT_RD 97EA- AD 01 A0 5095 BL1 LDA PAD 97ED- C9 FF 5100 CMP #$FF 97EF- D0 07 5105 BNE BL2 97F1- 20 F9 97 5110 JSR INCCMP 97F4- 90 F4 5115 BCC BL1 97F6- A9 FF 5120 LDA #$FF 97F8- 60 5125 BL2 RTS 5130 5135 ;------ increment 4040's, check range 5140 97F9- EE 00 A0 5145 INCCMP INC PBD 97FC- CE 00 A0 5150 DEC PBD 97FF- A5 FE 5155 COMPAR LDA *ADDRS 9801- CD 4A A6 5160 CMP P3L ; lo byte equal ? 9804- F0 08 5165 BEQ HI 9806- E6 FE 5170 LO INC *ADDRS 9808- D0 0D 5175 BNE OUT 980A- E6 FF 5180 INC *ADDRS+1 980C- D0 09 5185 BNE OUT 980E- A5 FF 5190 HI LDA *ADDRS+1 9810- CD 4B A6 5195 CMP P3H ; hi byte equal ? 9813- D0 F1 5200 BNE LO 9815- 38 5205 SEC 9816- 60 5210 RTS 9817- 18 5215 OUT CLC 9818- 60 5220 RTS 5225 5230 ;------ set no. of bytes 5235 9819- AD 10 A6 5240 NUMBYTS LDA SIZE 981C- 8D 4B A6 5245 STA P3H 981F- A9 FF 5250 LDA #$FF 9821- 8D 4A A6 5255 STA P3L 9824- A9 00 5260 LDA #0 9826- 85 FE 5265 STA *ADDRS 9828- 85 FF 5270 STA *ADDRS+1 982A- 60 5275 RTS 5280 5285 ;------ print 4 spaces 5290 982B- 8A 5295 SP4 TXA 982C- 48 5300 PHA 982D- A2 04 5305 LDX #4 982F- D0 04 5310 BNE S6 5315 5320 ;------ print 6 spaces 5325 9831- 8A 5330 SP6 TXA 9832- 48 5335 PHA 9833- A2 06 5340 LDX #6 9835- 20 42 B3 5345 S6 JSR SPACE 9838- CA 5350 DEX 9839- D0 FA 5355 BNE S6 983B- 68 5360 PLA 983C- AA 5365 TAX 983D- 60 5370 RTS 5375 5380 ;------ 9600 Baud rx driver 5385 983E- A0 08 5390 RX_CHR LDY #$08 9840- AD 02 A4 5395 CKPORT LDA PBD32 9843- 10 FB 5400 BPL CKPORT 9845- A9 00 5405 LDA #$00 9847- 8D 17 A6 5410 STA TEMP1 984A- 20 63 98 5415 JSR TIMER 984D- AD 02 A4 5420 NEXBIT LDA PBD32 9850- 2A 5425 ROL A 9851- 6E 17 A6 5430 ROR TEMP1 9854- 20 69 98 5435 JSR TIMER1 9857- 88 5440 DEY 9858- D0 F3 5445 BNE NEXBIT 985A- 20 69 98 5450 JSR TIMER1 985D- AD 17 A6 5455 LDA TEMP1 9860- 49 FF 5460 EOR #$FF 9862- 60 5465 RTS 5470 5475 IFE BAUD-4800 5480 5485 ; ------ Delay for 1.5 bit times 5490 5495 TIMER LDX #$37 5500 T1 DEX 5505 BNE T1 5510 RTS 5515 5520 ; ------ Delay for 1 bit time 5525 5530 TIMER1 LDX #$22 5535 T2 DEX 5540 BNE T2 5545 NOP 5550 RTS 5555 5560 *** 5565 5570 IFE BAUD-9600 5575 5580 ; ------ Delay for 1.5 bit times 5585 9863- A2 19 5590 TIMER LDX #$19 9865- CA 5595 T1 DEX 9866- D0 FD 5600 BNE T1 9868- 60 5605 RTS 5610 5615 ; ------ Delay for 1 bit time 5620 9869- A2 0E 5625 TIMER1 LDX #$0E 986B- CA 5630 T2 DEX 986C- D0 FD 5635 BNE T2 986E- EA 5640 NOP 986F- 60 5645 RTS 5650 5655 *** 5660 5665 ; ------ set/reset terminal echo 5670 9870- AD 53 A6 5675 ECHO LDA TECHO 9873- 49 80 5680 EOR #$80 9875- 8D 53 A6 5685 STA TECHO 9878- 60 5690 RTS 5695 5700 ;------ program text and tables 5705 9879- 1A 5710 HEADER .BY $1A 987A- 45 50 52 5715 .BY 'EPROM Programmer' 987D- 4F 4D 20 9880- 50 72 6F 9883- 67 72 61 9886- 6D 6D 65 9889- 72 988A- 0D 0A 5720 .BY $0D $0A 988C- 56 65 72 5725 .BY 'Vers R1.6' $0A $0D 988F- 73 20 52 9892- 31 2E 36 9895- 0A 0D 9897- 32 2D 31 5730 .BY '2-1-91' $0D $0A $00 989A- 2D 39 31 989D- 0D 0A 00 5735 98A0- 20 20 20 5740 TYPES .BY $20 $20 ' device size vpp' $0D $0A 98A3- 64 65 76 98A6- 69 63 65 98A9- 20 20 20 98AC- 20 73 69 98AF- 7A 65 20 98B2- 20 20 76 98B5- 70 70 0D 98B8- 0A 98B9- 20 20 2D 5745 .BY $20 $20 '-------- ------ -----' $0D $0A 98BC- 2D 2D 2D 98BF- 2D 2D 2D 98C2- 2D 20 20 98C5- 2D 2D 2D 98C8- 2D 2D 2D 98CB- 20 2D 2D 98CE- 2D 2D 2D 98D1- 0D 0A 98D3- 20 61 29 5750 .BY ' a) 2716 2k 25v' $0D $0A 98D6- 20 32 37 98D9- 31 36 20 98DC- 20 20 20 98DF- 20 20 32 98E2- 6B 20 20 98E5- 20 20 32 98E8- 35 76 0D 98EB- 0A 98EC- 20 62 29 5755 .BY ' b) 2732 4k 25v' $0D $0A 98EF- 20 32 37 98F2- 33 32 20 98F5- 20 20 20 98F8- 20 20 34 98FB- 6B 20 20 98FE- 20 20 32 9901- 35 76 0D 9904- 0A 9905- 20 63 29 5760 .BY ' c) 2732A 4k 21v' $0D $0A 9908- 20 32 37 990B- 33 32 41 990E- 20 20 20 9911- 20 20 34 9914- 6B 20 20 9917- 20 20 32 991A- 31 76 0D 991D- 0A 991E- 00 5765 .BY $00 991F- 20 64 29 5770 TYPES1 .BY ' d) 2764 8k 21v' $0D $0A 9922- 20 32 37 9925- 36 34 20 9928- 20 20 20 992B- 20 20 38 992E- 6B 20 20 9931- 20 20 32 9934- 31 76 0D 9937- 0A 9938- 20 65 29 5775 .BY ' e) 2764A 8k 12.5v' $0D $0A 993B- 20 32 37 993E- 36 34 41 9941- 20 20 20 9944- 20 20 38 9947- 6B 20 20 994A- 20 20 31 994D- 32 2E 35 9950- 76 0D 0A 9953- 20 66 29 5780 .BY ' f) 27128 16k 21v' $0D $0A 9956- 20 32 37 9959- 31 32 38 995C- 20 20 20 995F- 20 20 31 9962- 36 6B 20 9965- 20 20 32 9968- 31 76 0D 996B- 0A 996C- 20 67 29 5785 .BY ' g) 27128A 16k 12.5v' $0D $0A 996F- 20 32 37 9972- 31 32 38 9975- 41 20 20 9978- 20 20 31 997B- 36 6B 20 997E- 20 20 31 9981- 32 2E 35 9984- 76 0D 0A 9987- 20 68 29 5790 .BY ' h) 27256 32k 12.5v' $0D $0A 998A- 20 32 37 998D- 32 35 36 9990- 20 20 20 9993- 20 20 33 9996- 32 6B 20 9999- 20 20 31 999C- 32 2E 35 999F- 76 0D 0A 99A2- 00 5795 .BY $00 99A3- 20 69 29 5800 TYPES2 .BY ' i) 57256 32k 21v' $0D $0A 99A6- 20 35 37 99A9- 32 35 36 99AC- 20 20 20 99AF- 20 20 33 99B2- 32 6B 20 99B5- 20 20 32 99B8- 31 76 0D 99BB- 0A 99BC- 20 65 6E 5805 .BY ' enter a, b, c, d, e, f, g, h or i : ' $00 99BF- 74 65 72 99C2- 20 61 2C 99C5- 20 62 2C 99C8- 20 63 2C 99CB- 20 64 2C 99CE- 20 65 2C 99D1- 20 66 2C 99D4- 20 67 2C 99D7- 20 68 20 99DA- 6F 72 20 99DD- 69 20 3A 99E0- 20 00 5810 99E2- 32 37 31 5815 ROMS .BY '2716' $00 $00 99E5- 36 00 00 99E8- 07 08 0C 5820 .BY $07 $08 $0C $2A $EA $00 99EB- 2A EA 00 5825 99EE- 32 37 33 5830 .BY '2732' $00 $00 99F1- 32 00 00 99F4- 0F 0C 08 5835 .BY $0F $0C $08 $38 $D8 $00 99F7- 38 D8 00 5840 99FA- 32 37 33 5845 .BY '2732A' $00 99FD- 32 41 00 9A00- 0F 0C 08 5850 .BY $0F $0C $08 $38 $98 $00 9A03- 38 98 00 5855 9A06- 32 37 36 5860 .BY '2764' $00 $00 9A09- 34 00 00 9A0C- 1F 18 08 5865 .BY $1F $18 $08 $09 $85 $0F 9A0F- 09 85 0F 5870 9A12- 32 37 36 5875 .BY '2764A' $00 9A15- 34 41 00 9A18- 1F 18 08 5880 .BY $1F $18 $08 $09 $45 $19 9A1B- 09 45 19 5885 9A1E- 32 37 31 5890 .BY '27128' $00 9A21- 32 38 00 9A24- 3F 18 08 5895 .BY $3F $18 $08 $09 $85 $0F 9A27- 09 85 0F 5900 9A2A- 32 37 31 5905 .BY '27128A' 9A2D- 32 38 41 9A30- 3F 18 08 5910 .BY $3F $18 $08 $09 $45 $19 9A33- 09 45 19 5915 9A36- 32 37 32 5920 .BY '27256' $00 9A39- 35 36 00 9A3C- 7F 1C 18 5925 .BY $7F $1C $18 $0B $47 $19 9A3F- 0B 47 19 5930 9A42- 35 37 32 5935 .BY '57256' $00 9A45- 35 36 00 9A48- 7F 1C 18 5940 .BY $7F $1C $18 $0B $87 $0F 9A4B- 0B 87 0F 5945 9A4E- 0D 0A 01 5950 ENTRY .BY $0D $0A $01 'sn error' $00 9A51- 73 6E 20 9A54- 65 72 72 9A57- 6F 72 00 9A5A- 0D 0A 01 5955 OVR .BY $0D $0A $01 'ov error' $00 9A5D- 6F 76 20 9A60- 65 72 72 9A63- 6F 72 00 9A66- 0D 20 62 5960 BCHECK .BY $0D ' blank test:' $00 9A69- 6C 61 6E 9A6C- 6B 20 74 9A6F- 65 73 74 9A72- 3A 00 9A74- 20 4F 4B 5965 OK .BY ' OK' $00 9A77- 00 9A78- 20 46 41 5970 FAIL .BY ' FAILED' $00 9A7B- 49 4C 45 9A7E- 44 00 9A80- 0D 20 63 5975 CKSUM .BY $0D ' checksum: ' $00 9A83- 68 65 63 9A86- 6B 73 75 9A89- 6D 3A 20 9A8C- 00 9A8D- 20 45 50 5980 OPTION .BY ' EPROM not blank, continue (y/N) ?' $00 9A90- 52 4F 4D 9A93- 20 6E 6F 9A96- 74 20 62 9A99- 6C 61 6E 9A9C- 6B 2C 20 9A9F- 63 6F 6E 9AA2- 74 69 6E 9AA5- 75 65 20 9AA8- 28 79 2F 9AAB- 4E 29 20 9AAE- 3F 00 9AB0- 0D 20 70 5985 BPGM .BY $0D ' programming aborted!' $00 9AB3- 72 6F 67 9AB6- 72 61 6D 9AB9- 6D 69 6E 9ABC- 67 20 61 9ABF- 62 6F 72 9AC2- 74 65 64 9AC5- 21 00 9AC7- 0D 20 56 5990 VER .BY $0D ' Verifying:' $00 9ACA- 65 72 69 9ACD- 66 79 69 9AD0- 6E 67 3A 9AD3- 00 9AD4- 0D 20 64 5995 DF .BY $0D ' device failed' $0D $0A 9AD7- 65 76 69 9ADA- 63 65 20 9ADD- 66 61 69 9AE0- 6C 65 64 9AE3- 0D 0A 9AE5- 0D 0A 6000 .BY $0D $0A 9AE7- 20 20 41 6005 DF_T1 .BY $20 ' Addr data EPROM' $0D $0A 9AEA- 64 64 72 9AED- 20 20 20 9AF0- 64 61 74 9AF3- 61 20 20 9AF6- 20 45 50 9AF9- 52 4F 4D 9AFC- 0D 0A 9AFE- 20 2D 2D 6010 .BY ' ------ ------ -------' $0D $0A 9B01- 2D 2D 2D 9B04- 2D 20 2D 9B07- 2D 2D 2D 9B0A- 2D 2D 20 9B0D- 2D 2D 2D 9B10- 2D 2D 2D 9B13- 2D 0D 0A 9B16- 00 6015 .BY $00 9B17- 20 70 72 6020 DF_T2 .BY ' press to continue or' 9B1A- 65 73 73 9B1D- 20 3C 53 9B20- 50 41 43 9B23- 45 3E 20 9B26- 74 6F 20 9B29- 63 6F 6E 9B2C- 74 69 6E 9B2F- 75 65 20 9B32- 6F 72 9B34- 20 3C 45 6025 .BY ' to exit' $00 9B37- 4E 54 45 9B3A- 52 3E 20 9B3D- 74 6F 20 9B40- 65 78 69 9B43- 74 00 9B45- 0D 0A 41 6030 DLIST .BY $0D $0A 'ADDR ' 9B48- 44 44 52 9B4B- 20 20 9B4D- 20 30 20 6035 .BY $20 '0 1 2 3 4 5 6 7 ' 9B50- 20 31 20 9B53- 20 32 20 9B56- 20 33 20 9B59- 20 34 20 9B5C- 20 35 20 9B5F- 20 36 20 9B62- 20 37 20 9B65- 20 9B66- 20 38 20 6040 .BY $20 '8 9 A B C D E F' $00 9B69- 20 39 20 9B6C- 20 41 20 9B6F- 20 42 20 9B72- 20 43 20 9B75- 20 44 20 9B78- 20 45 20 9B7B- 20 46 00 9B7E- 2D 2D 2D 6045 DASCII .BY '--- ascii data ---' $00 9B81- 20 61 73 9B84- 63 69 69 9B87- 20 64 61 9B8A- 74 61 20 9B8D- 2D 2D 2D 9B90- 00 9B91- 00 03 06 6050 XTBL .BY 0 3 6 9 12 15 18 21 9B94- 09 0C 0F 9B97- 12 15 9B99- 19 1C 1F 6055 .BY 25 28 31 34 37 40 43 46 9B9C- 22 25 28 9B9F- 2B 2E 9BA1- 00 2E 2B 6060 SPTBL .BY 00 46 43 40 37 34 31 28 9BA4- 28 25 22 9BA7- 1F 1C 9BA9- 19 15 12 6065 .BY 25 21 18 15 12 9 6 3 9BAC- 0F 0C 09 9BAF- 06 03 9BB1- 0D 0A 6070 CMDS .BY $0D $0A 9BB3- 20 43 6F 6075 .BY ' Commands' $0D $0A 9BB6- 6D 6D 61 9BB9- 6E 64 73 9BBC- 0D 0A 9BBE- 2D 2D 2D 6080 .BY '----------' $0D $0A 9BC1- 2D 2D 2D 9BC4- 2D 2D 2D 9BC7- 2D 0D 0A 9BCA- 20 42 20 6085 .BY ' B : blank check M : modify memory' $0D $0A 9BCD- 3A 20 62 9BD0- 6C 61 6E 9BD3- 6B 20 63 9BD6- 68 65 63 9BD9- 6B 20 20 9BDC- 4D 20 3A 9BDF- 20 6D 6F 9BE2- 64 69 66 9BE5- 79 20 6D 9BE8- 65 6D 6F 9BEB- 72 79 0D 9BEE- 0A 9BEF- 20 43 20 6090 .BY ' C : checksum X : checksum memory' $0D $0A 9BF2- 3A 20 63 9BF5- 68 65 63 9BF8- 6B 73 75 9BFB- 6D 20 20 9BFE- 20 20 20 9C01- 58 20 3A 9C04- 20 63 68 9C07- 65 63 6B 9C0A- 73 75 6D 9C0D- 20 6D 65 9C10- 6D 6F 72 9C13- 79 0D 0A 9C16- 20 44 20 6095 .BY ' D : dump Y : dump memory' $0D $0A 9C19- 3A 20 64 9C1C- 75 6D 70 9C1F- 20 20 20 9C22- 20 20 20 9C25- 20 20 20 9C28- 59 20 3A 9C2B- 20 64 75 9C2E- 6D 70 20 9C31- 6D 65 6D 9C34- 6F 72 79 9C37- 0D 0A 9C39- 00 6100 .BY $00 9C3A- 20 45 20 6105 CMDS2 .BY ' E : EPROM type' $0D $0A 9C3D- 3A 20 45 9C40- 50 52 4F 9C43- 4D 20 74 9C46- 79 70 65 9C49- 0D 0A 9C4B- 20 50 20 6110 .BY ' P : program' $0D $0A 9C4E- 3A 20 70 9C51- 72 6F 67 9C54- 72 61 6D 9C57- 0D 0A 9C59- 20 52 20 6115 .BY ' R : read' $0D $0A 9C5C- 3A 20 72 9C5F- 65 61 64 9C62- 0D 0A 9C64- 20 56 20 6120 .BY ' V : verify' $0D $0A $00 9C67- 3A 20 76 9C6A- 65 72 69 9C6D- 66 79 0D 9C70- 0A 00 6125 9C72- 01 03 06 6130 TABL_3X .BY $01 $03 $06 $09 $0C $0F $12 $15 9C75- 09 0C 0F 9C78- 12 15 9C7A- 17 1A 1D 6135 .BY $17 $1A $1D $20 $23 $26 $29 $2C 9C7D- 20 23 26 9C80- 29 2C 9C82- 2F 32 35 6140 .BY $2F $32 $35 $38 $3B $3E $40 $43 9C85- 38 3B 3E 9C88- 40 43 9C8A- 46 49 6145 .BY $46 $49 9C8C- 01 04 08 6150 TABL_4X .BY $01 $04 $08 $0C $10 $14 $17 $1B 9C8F- 0C 10 14 9C92- 17 1B 9C94- 1F 23 27 6155 .BY $1F $23 $27 $2B $2F $33 $37 $3B 9C97- 2B 2F 33 9C9A- 37 3B 6160 6165 .EN 0000,9C9C,9C9C >