AS L 0010 ; 11:36:44 SUNDAY AUG 19 1984 0020 0030 ; *** 2758/2716/2732 *** 0040 ; EPROM PROGRAMMER FOR SYM-1 0050 ; BY PETER G. FONG SAM 0060 ; AND PAUL L. BEAUPRE 0070 0080 ; SINGLE LETTER COMMANDS ARE USED. 0090 ; TYPE IN LETTER COMMANDS FOLLOWED 0100 ; BY EPROM TYPE, I.E. 2716, AND THEN 0110 ; MEMORY STARTING ADDRESS, FOLLOWED BY 0120 ; MEMORY ENDING ADDRESS AND THEN FOLLOWED 0130 ; BY A CR. ALL ENTRIES ARE TO BE SEPARATED 0140 ; BY COMMAS AS PER THE SYM-1 ENTRY MODE 0150 0160 ; >>> COMMANDS <<< 0170 ; B = BLANK TEST 0180 ; C = COPY EPROM TO MEMORY SPECIFIED 0190 ; L = LIST EPROM BY LINES SPECIFIED 0200 ; P = PROGRAM EPROM FROM MEMORY SPECIFIED 0210 ; V = VERIFY CONTENTS OF EPROM TO MEMORY 0220 ; LOCATIONS SPECIFIED 0230 ; RETURN KEY = RETURN TO MONITOR 0240 ; BREAK = BREAK FROM LIST OR PROGRAM ONLY 0250 0260 ; ZERO PAGE LOCATIONS 0270 0280 TEMP1 .DE $FE 0290 TEMP2 .DE $FF 0300 0310 ; MONITOR LOCATIONS 0320 0330 MONITR .DE $8000 0340 STOCOM .DE $8120 0350 ERMSG .DE $8171 0360 P2SCR .DE $829C 0370 OUTBYT .DE $82FA 0380 OUTQM .DE $8320 0390 SPACE .DE $8342 0400 CRLF .DE $834D 0410 INSTAT .DE $8386 0420 INCHAR .DE $8A1B 0430 OUTCHR .DE $8A47 0440 ACCESS .DE $8B86 0450 0460 ; SYSTEM I/O (6522 U-25) 0470 0480 PBD .DE $A000 0490 PAD .DE $A001 0500 PBDD .DE $A002 0510 PADD .DE $A003 0520 0530 ; SYSTEM RAM LOCATIONS 0540 0550 EPROM .DE $A646 0560 SIZE .DE $A647 0570 LSTCOM .DE $A657 0580 PARNR .DE $A649 0590 P3L .DE $A64A 0600 P3H .DE $A64B 0610 P2L .DE $A64C 0620 P2H .DE $A64D 0630 P1L .DE $A64E 0640 P1H .DE $A64F 0650 0660 ; MISCELLANEOUS LOCATIONS 0670 0680 STATUS .DE $A407 0690 T1024 .DE $A41F 0700 0710 0720 .BA $9000 ; OR WHEREVER 0730 9000- 20 86 8B 0740 START JSR ACCESS 9003- A9 FF 0750 RESET LDA #$FF 9005- 8D 02 A0 0760 STA PBDD 9008- A9 A0 0770 LDA #$A0 900A- 8D 00 A0 0780 STA PBD 900D- 20 4D 83 0790 PROMPT JSR CRLF 9010- A9 2A 0800 LDA #'* 9012- 20 47 8A 0810 JSR OUTCHR 9015- 20 20 83 0820 JSR OUTQM 9018- 20 42 83 0830 JSR SPACE 901B- 20 1B 8A 0840 INCOM JSR INCHAR 901E- C9 0D 0850 CMP #$0D 9020- D0 03 0860 BNE OKCOM 9022- 4C 00 80 0870 JMP MONITR 9025- 20 20 81 0880 OKCOM JSR STOCOM 9028- C9 0D 0890 CMP #$0D 902A- D0 39 0900 BNE OUTERR 902C- AD 49 A6 0910 LDA PARNR 902F- 0A 0920 ASL A 9030- A8 0930 TAY 9031- B9 49 A6 0940 LDA PARNR,Y 9034- C9 27 0950 CMP #$27 9036- D0 2D 0960 BNE OUTERR 9038- 88 0970 DEY 9039- B9 49 A6 0980 LDA PARNR,Y 903C- C9 16 0990 CMP #$16 903E- D0 0C 1000 BNE SIZE4K 9040- A9 08 1010 SIZE2K LDA #8 9042- 8D 47 A6 1020 STA SIZE 9045- A9 00 1030 LDA #0 9047- 8D 46 A6 1040 STA EPROM 904A- F0 1F 1050 BEQ CHECK 904C- C9 32 1060 SIZE4K CMP #$32 904E- D0 0A 1070 BNE SIZE1K 9050- A9 10 1080 LDA #$10 9052- 8D 46 A6 1090 STA EPROM 9055- 8D 47 A6 1100 STA SIZE 9058- D0 11 1110 BNE CHECK 905A- C9 58 1120 SIZE1K CMP #$58 905C- D0 07 1130 BNE OUTERR 905E- A9 04 1140 LDA #4 9060- 8D 47 A6 1150 STA SIZE 9063- D0 E0 1160 BNE SIZE2K+5 9065- 20 73 81 1170 OUTERR JSR ERMSG+2 9068- 4C 0D 90 1180 JMP PROMPT 906B- 20 9C 82 1190 CHECK JSR P2SCR 906E- AD 49 A6 1200 LDA PARNR 9071- C9 01 1210 CMP #1 9073- D0 09 1220 BNE THREE 9075- AD 57 A6 1230 LDA LSTCOM 9078- C9 42 1240 CMP #'B 907A- D0 E9 1250 BNE OUTERR 907C- F0 22 1260 BEQ BLANK 907E- C9 03 1270 THREE CMP #3 9080- D0 E3 1280 BNE OUTERR 9082- AD 57 A6 1290 LDA LSTCOM 9085- C9 43 1300 CMP #'C 9087- D0 02 1310 BNE LISTPR 9089- F0 61 1320 BEQ COPY 908B- C9 4C 1330 LISTPR CMP #'L 908D- D0 03 1340 BNE PROG 908F- 4C 0D 91 1350 JMP LIST 9092- C9 50 1360 PROG CMP #'P 9094- D0 03 1370 BNE VER 9096- 4C 50 91 1380 JMP PROGRM 9099- C9 56 1390 VER CMP #'V 909B- D0 C8 1400 BNE OUTERR 909D- 4C 89 91 1410 JMP VERIFY 1420 1430 ;BLANK TEST 1440 90A0- A9 00 1450 BLANK LDA #0 90A2- 8D 03 A0 1460 STA PADD 90A5- A8 1470 TAY 90A6- AD 46 A6 1480 LDA EPROM 90A9- 8D 00 A0 1490 STA PBD 90AC- 20 CD 91 1500 JSR DELAY ;ALLOWS RELAYS TO SETTLE 90AF- A9 FF 1510 LDA #$FF 90B1- CD 01 A0 1520 CHKBYT CMP PAD 90B4- D0 1F 1530 BNE ERROR 90B6- EE 00 A0 1540 INC PBD 90B9- CE 00 A0 1550 DEC PBD 90BC- C8 1560 INY 90BD- D0 F2 1570 BNE CHKBYT 90BF- E8 1580 INX 90C0- EC 47 A6 1590 CPX SIZE 90C3- D0 EC 1600 BNE CHKBYT 90C5- 20 4D 83 1610 DONE JSR CRLF 90C8- A9 4F 1620 LDA #'O 90CA- 20 47 8A 1630 JSR OUTCHR 90CD- A9 4B 1640 LDA #'K 90CF- 20 47 8A 1650 JSR OUTCHR 90D2- 4C 08 90 1660 JMP RESET+5 1670 90D5- 20 4D 83 1680 ERROR JSR CRLF 90D8- 8A 1690 TXA 90D9- 20 FA 82 1700 JSR OUTBYT 90DC- 98 1710 TYA 90DD- 20 FA 82 1720 JSR OUTBYT 90E0- 20 42 83 1730 JSR SPACE 90E3- AD 01 A0 1740 LDA PAD 90E6- 20 FA 82 1750 JSR OUTBYT 90E9- 4C 08 90 1760 JMP RESET+5 1770 1780 ; COPY 1790 90EC- A9 00 1800 COPY LDA #0 90EE- 8D 03 A0 1810 STA PADD 90F1- AD 46 A6 1820 LDA EPROM 90F4- 8D 00 A0 1830 STA PBD 90F7- 20 CD 91 1840 JSR DELAY 90FA- AD 01 A0 1850 GETCHR LDA PAD 90FD- 81 FE 1860 STA (TEMP1,X) 90FF- EE 00 A0 1870 INC PBD 9102- CE 00 A0 1880 DEC PBD 9105- 20 DA 91 1890 JSR COMPAR 9108- 90 F0 1900 BCC GETCHR 910A- 4C C5 90 1910 JMP DONE 1920 1930 ; LIST 1940 910D- A9 00 1950 LIST LDA #0 910F- 8D 03 A0 1960 STA PADD 9112- AD 46 A6 1970 LDA EPROM 9115- 8D 00 A0 1980 STA PBD 9118- 20 CD 91 1990 JSR DELAY 911B- 20 F4 91 2000 NEWLIN JSR LOOK 911E- 20 4D 83 2010 JSR CRLF 9121- A0 00 2020 LDY #0 9123- AD FF 00 2030 LDA TEMP2 9126- 20 FA 82 2040 JSR OUTBYT 9129- AD FE 00 2050 LDA TEMP1 912C- 20 FA 82 2060 JSR OUTBYT 912F- 20 42 83 2070 JSR SPACE 9132- 20 42 83 2080 DATA JSR SPACE 9135- AD 01 A0 2090 LDA PAD 9138- 20 FA 82 2100 JSR OUTBYT 913B- EE 00 A0 2110 INC PBD 913E- CE 00 A0 2120 DEC PBD 9141- 20 DA 91 2130 JSR COMPAR 9144- 90 03 2140 BCC CKCNTR 9146- 4C 08 90 2150 JMP RESET+5 9149- C8 2160 CKCNTR INY 914A- C0 10 2170 CPY #$10 914C- D0 E4 2180 BNE DATA 914E- F0 CB 2190 BEQ NEWLIN 2200 2210 ; PROGRAM 2220 9150- A9 FF 2230 PROGRM LDA #$FF 9152- 8D 03 A0 2240 STA PADD 9155- AD 46 A6 2250 LDA EPROM 9158- F0 07 2260 BEQ NOT4K 915A- A9 1A 2270 LDA #$1A 915C- 8D 00 A0 2280 STA PBD 915F- D0 05 2290 BNE GO 9161- A9 0C 2300 NOT4K LDA #$C 9163- 8D 00 A0 2310 STA PBD 9166- 20 CD 91 2320 GO JSR DELAY 9169- 20 F4 91 2330 BURN JSR LOOK 916C- A1 FE 2340 LDA (TEMP1,X) 916E- 8D 01 A0 2350 STA PAD 9171- EA 2360 NOP 9172- EA 2370 NOP 9173- CE 00 A0 2380 DEC PBD 9176- 20 CD 91 2390 TIMOUT JSR DELAY 9179- EE 00 A0 2400 INC PBD 917C- 20 DA 91 2410 JSR COMPAR 917F- 90 E8 2420 BCC BURN 9181- A9 80 2430 LDA #$80 9183- 8D 00 A0 2440 STA PBD 9186- 20 9C 82 2450 JSR P2SCR 2460 2470 ; VERIFY 2480 9189- A9 00 2490 VERIFY LDA #0 918B- 8D 03 A0 2500 STA PADD 918E- AD 46 A6 2510 LDA EPROM 9191- 8D 00 A0 2520 STA PBD 9194- 20 CD 91 2530 JSR DELAY 9197- AD 01 A0 2540 NEXBYT LDA PAD 919A- C1 FE 2550 CMP (TEMP1,X) 919C- D0 0E 2560 BNE ERRPTR 919E- EE 00 A0 2570 INC PBD 91A1- CE 00 A0 2580 DEC PBD 91A4- 20 DA 91 2590 JSR COMPAR 91A7- 90 EE 2600 BCC NEXBYT 91A9- 4C C5 90 2610 JMP DONE 2620 2630 ; DISPLAY ERROR AS MEMORY LOCATION, 2640 ;MEMORY DATA, EPROM CONTENTS 2650 91AC- 20 4D 83 2660 ERRPTR JSR CRLF 91AF- A5 FF 2670 LDA *TEMP2 91B1- 20 FA 82 2680 JSR OUTBYT 91B4- A5 FE 2690 LDA *TEMP1 91B6- 20 FA 82 2700 JSR OUTBYT 91B9- 20 42 83 2710 JSR SPACE 91BC- A1 FE 2720 LDA (TEMP1,X) 91BE- 20 FA 82 2730 JSR OUTBYT 91C1- 20 42 83 2740 JSR SPACE 91C4- AD 01 A0 2750 LDA PAD 91C7- 20 FA 82 2760 JSR OUTBYT 91CA- 4C 08 90 2770 JMP RESET+5 2780 91CD- A9 2F 2790 DELAY LDA #$2F DELAY FOR 50 MS 91CF- 8D 1F A4 2800 STA T1024 91D2- AD 07 A4 2810 LDA STATUS 91D5- 10 FB 2820 BPL DELAY+5 91D7- A2 00 2830 LDX #0 91D9- 60 2840 RTS 2850 91DA- A5 FE 2860 COMPAR LDA *TEMP1 91DC- CD 4A A6 2870 CMP P3L 91DF- F0 08 2880 BEQ TESTHI 91E1- E6 FE 2890 UPLOW INC *TEMP1 91E3- D0 0D 2900 BNE OUT 91E5- E6 FF 2910 INC *TEMP2 91E7- D0 09 2920 BNE OUT 91E9- A5 FF 2930 TESTHI LDA *TEMP2 91EB- CD 4B A6 2940 CMP P3H 91EE- D0 F1 2950 BNE UPLOW 91F0- 38 2960 SEC 91F1- 60 2970 RTS 91F2- 18 2980 OUT CLC 91F3- 60 2990 RTS 91F4- 20 86 83 3000 LOOK JSR INSTAT 91F7- B0 01 3010 BCS CONT 91F9- 60 3020 RTS 91FA- 4C 08 90 3030 CONT JMP RESET+5 3040 3050 .EN 0002 / = External # = Line Defined 0004 0006 Symbol ;Value Cross-References 0008 0010 /ACCESS ;$8B86 #0440 0740 0020 /CRLF ;$834D #0400 0790 1610 1680 2010 2660 0030 /EPROM ;$A646 #0550 1040 1090 1480 1820 1970 0031 ; 2250 2510 0040 /ERMSG ;$8171 #0350 1170 0050 /INCHAR ;$8A1B #0420 0840 0060 /INSTAT ;$8386 #0410 3000 0070 /LSTCOM ;$A657 #0570 1230 1290 0080 /MONITR ;$8000 #0330 0870 0090 /OUTBYT ;$82FA #0370 1700 1720 1750 2040 2060 0091 ; 2100 2680 2700 2730 2760 0100 /OUTCHR ;$8A47 #0430 0810 1630 1650 0110 /OUTQM ;$8320 #0380 0820 0120 /P1H ;$A64F #0640 **** 0130 /P1L ;$A64E #0630 **** 0140 /P2H ;$A64D #0620 **** 0150 /P2L ;$A64C #0610 **** 0160 /P2SCR ;$829C #0360 1190 2450 0170 /P3H ;$A64B #0600 2940 0180 /P3L ;$A64A #0590 2870 0190 /PAD ;$A001 #0490 1520 1740 1850 2090 2350 0191 ; 2540 2750 0200 /PADD ;$A003 #0510 1460 1810 1960 2240 2500 0210 /PARNR ;$A649 #0580 0910 0940 0980 1200 0220 /PBD ;$A000 #0480 0780 1490 1540 1550 1830 0221 ; 1870 1880 1980 2110 2120 2280 0222 ; 2310 2380 2400 2440 2520 2570 0223 ; 2580 0230 /PBDD ;$A002 #0500 0760 0240 /SIZE ;$A647 #0560 1020 1100 1150 1590 0250 /SPACE ;$8342 #0390 0830 1730 2070 2080 2710 0251 ; 2740 0260 /STATUS ;$A407 #0680 2810 0270 /STOCOM ;$8120 #0340 0880 0280 /T1024 ;$A41F #0690 2800 0290 /TEMP1 ;$00FE #0280 1860 2050 2340 2550 2690 0291 ; 2720 2860 2890 0300 /TEMP2 ;$00FF #0290 2030 2670 2910 2930 0310 BLANK ;$90A0 #1450 1260 0320 BURN ;$9169 #2330 2420 0330 CHECK ;$906B #1190 1050 1110 0340 CHKBYT ;$90B1 #1520 1570 1600 0350 CKCNTR ;$9149 #2160 2140 0360 COMPAR ;$91DA #2860 1890 2130 2410 2590 0370 CONT ;$91FA #3030 3010 0380 COPY ;$90EC #1800 1320 0390 DATA ;$9132 #2080 2180 0400 DELAY ;$91CD #2790 1500 1840 1990 2320 2390 0401 ; 2530 2820 0410 DONE ;$90C5 #1610 1910 2610 0420 ERROR ;$90D5 #1680 1530 0430 ERRPTR ;$91AC #2660 2560 0440 GETCHR ;$90FA #1850 1900 0450 GO ;$9166 #2320 2290 0460 INCOM ;$901B #0840 **** 0470 LIST ;$910D #1950 1350 0480 LISTPR ;$908B #1330 1310 0490 LOOK ;$91F4 #3000 2000 2330 0500 NEWLIN ;$911B #2000 2190 0510 NEXBYT ;$9197 #2540 2600 0520 NOT4K ;$9161 #2300 2260 0530 OKCOM ;$9025 #0880 0860 0540 OUT ;$91F2 #2980 2900 2920 0550 OUTERR ;$9065 #1170 0900 0960 1130 1250 1280 0551 ; 1400 0560 PROG ;$9092 #1360 1340 0570 PROGRM ;$9150 #2230 1380 0580 PROMPT ;$900D #0790 1180 0590 RESET ;$9003 #0750 1660 1760 2150 2770 3030 0600 SIZE1K ;$905A #1120 1070 0610 SIZE2K ;$9040 #1010 1160 0620 SIZE4K ;$904C #1060 1000 0630 START ;$9000 #0740 **** 0640 TESTHI ;$91E9 #2930 2880 0650 THREE ;$907E #1270 1220 0660 TIMOUT ;$9176 #2390 **** 0670 UPLOW ;$91E1 #2890 2950 0680 VER ;$9099 #1390 1370 0690 VERIFY ;$9189 #2490 1410 0000,91FD,91FD >