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