ca65 V2.19 - Git e5f4ca6 Main file : RM65-2901.ca65 Current file: RM65-2901.ca65 000000r 1 ; 000000r 1 ; RM65-2901 PROM Programmer Module Program ROM (R2926-11) 000000r 1 ; 000000r 1 ; Reformatted for CA65 Assembler 000000r 1 ; Chris Oddy December 2025 000000r 1 ; 000000r 1 .setcpu "6502" 000000r 1 ; 000000r 1 ; *** Zero Page *** 000000r 1 ; := $0000 ; used to store command routine address (LSB) 000000r 1 ; := $0001 ; used to store command routine address (MSB) 000000r 1 ; := $0002 ; ? 000000r 1 ; := $0003 ; ? 000000r 1 ; := $0004 ; ? 000000r 1 ; := $0005 ; ? 000000r 1 ; := $0006 ; ? 000000r 1 ; := $0007 ; ? Checksum MSB ? 000000r 1 ; := $0008 ; ? Checksum LSB ? 000000r 1 ; := $0009 ; ? 000000r 1 ; := $000A ; set to zero at start-up 000000r 1 ; := $000B ; set to zero at start-up 000000r 1 ; := $000C ; set to zero at start-up 000000r 1 ; := $000D ; set to zero at start-up 000000r 1 ; := $000E ; ? 000000r 1 ; := $000F ; ? 000000r 1 ; := $0010 ; ? 000000r 1 ; := $0011 ; ? 000000r 1 ; := $0012 ; ? PRCFGC ? 000000r 1 ; := $0013 ; ? PRCFGB ? 000000r 1 ; := $0014 ; ? 000000r 1 ; := $0015 ; ? 000000r 1 ; := $0016 ; set to $C7 at start-up 000000r 1 ; := $0017 ; set to $7F at start-up 000000r 1 ; := $0018 ; Verify Flag - After or While programming 000000r 1 ; := $0019 ; ? 000000r 1 ; := $001A ; ? 000000r 1 ; := $001B ; ? 000000r 1 ; := $001C ; ? 000000r 1 ; := $001D ; ? 000000r 1 ; := $001E ; ? 000000r 1 ; := $001F ; ? 000000r 1 ; 000000r 1 ; := $010C ; ? (2-bytes) 000000r 1 ; := $010F ; ? (2-bytes) 000000r 1 ; 000000r 1 DISFLG := $0112 ; ? 000000r 1 BKFLG := $0113 ; ? 000000r 1 ; := $0114 ; ? 000000r 1 ; 000000r 1 ; 000000r 1 ; := $0400 ; ? 000000r 1 ; := $040F ; ? (2-bytes) 000000r 1 ; := $0412 ; ? (2-bytes) 000000r 1 ; := $0439 ; ? (2-bytes) 000000r 1 ; := $0442 ; ? (2-bytes) 000000r 1 IRQ1 := $0448 ; ? (2-bytes) 000000r 1 ; := $0475 ; ? (2-bytes) 000000r 1 ; := $0478 ; ? (2-bytes) 000000r 1 ; := $0400 ; ? (2-bytes) 000000r 1 ; 000000r 1 ; *** Table of redirection vectors to Monitor subroutines in RAM *** 000000r 1 ; 000000r 1 VADDS1 := $0400 ; jump to ADDS1 ($E55D) 000000r 1 VBLANK := $0403 ; jump to BLANK ($E83E) 000000r 1 VBLANK2 := $0406 ; jump to BLANK2 ($E83B) 000000r 1 VCHEKA := $0409 ; jump to CHEKA ($E54E) 000000r 1 VCHEKAR := $040C ; jump to CHEKAR ($E54B) 000000r 1 VCHNGG := $040F ; jump to CHNGG ($E2A0) (not used) 000000r 1 VVECKS := $0412 ; jump to VECKSM ($E694) (not used) 000000r 1 VCLR := $0415 ; jump to CLR ($EB44) 000000r 1 VCLRCK := $0418 ; jump to CLRCK ($EB4D) 000000r 1 VCOMIN := $041B ; jump to COMIN ($E1A1) 000000r 1 VCRCK := $041E ; jump to CRCK ($EA24) 000000r 1 VCRLF := $0421 ; jump to CRLF ($E9F0) 000000r 1 VCRLOW := $0424 ; jump to CRLOW ($EA13) 000000r 1 VRED1 := $0427 ; jump to RED1 ($FE96) 000000r 1 VDELAY := $042A ; jump to DELAY ($EC0F) 000000r 1 VGETKY := $042D ; jump to GETKEY ($EC40) 000000r 1 VGETTY := $0430 ; jump to GETTTY ($EBDB) 000000r 1 VINALL := $0433 ; jump to INALL ($E993) 000000r 1 VINCS2 := $0436 ; jump to INCS2 ($E566) 000000r 1 VKDISA := $0439 ; jump to KDISA ($E70A) (not used) 000000r 1 VLDAY := $043C ; jump to LDAY ($EB58) 000000r 1 VLL := $043F ; jump to LL ($E8FE) 000000r 1 VMEM := $0442 ; jump to MEM ($E248) (not used) 000000r 1 VNUMA := $0445 ; jump to NUMA ($EA46) 000000r 1 VNXT5 := $0448 ; jump to NXT5 ($E60D) (not used) 000000r 1 VOUTAL := $044B ; jump to OUTALL ($E9BC) 000000r 1 VOUTCK := $044E ; jump to OUTCK ($E538) 000000r 1 VOUTCS := $0451 ; jump to OUTCKS ($E531) 000000r 1 VOUTC1 := $0454 ; jump to OUTCK1 ($E53B) 000000r 1 VOUTD1 := $0457 ; jump to OUTDD1 ($EF7B) 000000r 1 VOUTP1 := $045A ; jump to OUTDP1 ($EF02) 000000r 1 VOUTPT := $045D ; jump to OUTPUT ($E97A) 000000r 1 VPTC18 := $0460 ; jump to PATC18 ($FF3D) 000000r 1 VPSLS := $0463 ; jump to PSLS ($E7DC) 000000r 1 VRBYTE := $0466 ; jump to RBYTE ($E3FD) 000000r 1 VRONEK := $0469 ; jump to ROONEK ($ECEF) 000000r 1 VSADDR := $046C ; jump to SADDR ($EB78) 000000r 1 VDU10B := $046F ; jump to DU10B ($E4EB) 000000r 1 VSTBYT := $0472 ; jump to STBYTE ($E413) 000000r 1 VTGTA1 := $0475 ; jump to TOGTA1 ($E6BD) (not used) 000000r 1 VTGTA2 := $0478 ; jump to TOGTA2 ($E6CB) (not used) 000000r 1 VWHERI := $047B ; jump to WHEREI ($E848) 000000r 1 VWHERO := $047E ; jump to WHEREO ($E871) 000000r 1 VWRAX := $0481 ; jump to WRAX ($EA42) 000000r 1 ; 000000r 1 PRCFG1 := $0485 ; PROM Configuration - 000000r 1 PRCFG2 := $0486 ; PROM Configuration - 000000r 1 PRCFG3 := $0487 ; PROM Configuration - 000000r 1 PRCFG4 := $0488 ; PROM Configuration - 000000r 1 PRCFG5 := $0489 ; PROM Configuration - 000000r 1 PRCFG6 := $048A ; PROM Configuration - 000000r 1 PRCFG7 := $048B ; PROM Configuration - 000000r 1 PRCFG8 := $048C ; PROM Configuration - 000000r 1 PRCFG9 := $048D ; PROM Configuration - 000000r 1 PRCFGA := $048E ; PROM Configuration - 000000r 1 PRCFGB := $048F ; PROM Configuration - 000000r 1 PRCFGC := $0490 ; PROM Configuration - 000000r 1 ; 000000r 1 ; ; *** Monitor Variables (stored in 6532) *** 000000r 1 ; 000000r 1 CURPO2 := $A415 ; Display Pointer 000000r 1 S1 := $A41A ; Start Address (2-bytes) 000000r 1 ADDR := $A41C ; End Address (2-bytes) 000000r 1 CKSUM := $A41E ; Checksum (2-bytes) 000000r 1 ROLLFL := $A47F ; Save last strobe for rollover 000000r 1 ; 000000r 1 COMIN := $E1A1 ; Re-enter command interpreter 000000r 1 MEM := $E248 ; Monitor M Command - Display Memory 000000r 1 CHNGG := $E2A0 ; Monitor / Command - Alter Memory 000000r 1 RBYTE := $E3FD ; Inputs two ASCII characters from Active Input Device: if hex, converts to binary with results in A 000000r 1 STBYTE := $E413 ; Store and Check Memory Fail 000000r 1 DU10B := $E4EB ; Output last record 000000r 1 OUTCKS := $E531 ; Get character specified by start address (S1) 000000r 1 OUTCK := $E538 ; Add to checksum and print 000000r 1 OUTCK1 := $E53B ; Output checksum 000000r 1 CHEKAR := $E54B ; Add to checksum 000000r 1 CHEKA := $E54E ; Add to checksum 000000r 1 ADDS1 := $E55D ; Add one to start address (S1) 000000r 1 INCS2 := $E566 ; Increment vertical count 000000r 1 NXT5 := $E60D ; Monitor SPACE Command - show next 5 memory locations 000000r 1 VECKSM := $E694 ; Monitor 3 Command - Verify Tapes 000000r 1 TOGTA1 := $E6BD ; Monitor 1 Command - Toggle Tape 1 Control 000000r 1 TOGTA2 := $E6CB ; Monitor 2 Command - Toggle Tape 2 Control 000000r 1 KDISA := $E70A ; Monitor K Command - Disassemble Memory 000000r 1 PSLS := $E7DC ; On delete key output slash if TTY & backup cursor if keyboard 000000r 1 BLANK2 := $E83B ; Outputs two P's to Display/Printer 000000r 1 BLANK := $E83E ; Outputs one Space to Display/Printer 000000r 1 WHEREI := $E848 ; Sets up the Active Input Device and loads INFLG 000000r 1 WHEREO := $E871 ; Sets up the Active Output Device and loads OUTFLG 000000r 1 LL := $E8FE ; Set I/O to terminal 000000r 1 OUTPUT := $E97A ; Outputs ASCII character in A to Display/Printer 000000r 1 INALL := $E993 ; Inputs one ASCII character from Active Input Device to A 000000r 1 OUTALL := $E9BC ; Outputs ASCII character in A to Active Output Device 000000r 1 CRLF := $E9F0 ; Outputs CR, LF & NUL to Active Output Device 000000r 1 CRLOW := $EA13 ; Outputs CR and LF to Display/Printer 000000r 1 CRCK := $EA24 ; Outputs Printer Buffer to Printer 000000r 1 WRAX := $EA42 ; Write A then X in ASCII to the output device 000000r 1 NUMA := $EA46 ; Converts two hex numbers in A from binary to ASCII and outputs to Active Output Device 000000r 1 CLR := $EB44 ; Clears Display/Printer pointers 000000r 1 CLRCK := $EB4D ; Clear CKSUM 000000r 1 LDAY := $EB58 ; Simulates lda (n),y without Page Zero 000000r 1 SADDR := $EB78 ; Subroutine store at ADDR and compare without page zero 000000r 1 GETTTY := $EBDB ; Get a character from TTY into A (saves X) 000000r 1 DELAY := $EC0F ; Delay 1-bit time as given by baud rate 000000r 1 GETKEY := $EC40 ; Get a character from keyboard 000000r 1 ROONEK := $ECEF ; Wait if last key still down (rollover) 000000r 1 OUTDP1 := $EF02 ; Output a character to Display 000000r 1 OUTDD1 := $EF7B ; Convert X into real address for Display and output it 000000r 1 RED1 := $FE96 ; Inputs one character from Keyboard to A, with echo to Display/Printer 000000r 1 PATC18 := $FF3D ; Reset PRIFLG 000000r 1 ; 000000r 1 ; *** Hardware Addresses *** 000000r 1 ; 000000r 1 DAC := $7000 ; 8-bit DAC Controlling Programming Voltage 000000r 1 IRBORB := $7010 ; 6522 Input/Output Register B PROM Control 000000r 1 ; bit 0 000000r 1 ; bit 1 000000r 1 IRAORA := $7011 ; 6522 Input/Output Register A PROM Data 000000r 1 DDRB := $7012 ; Data Direction Register B 000000r 1 DDRA := $7013 ; Data Direction Register A 000000r 1 ; := $7020 ; Octal Latch - PROM Address ? 000000r 1 ; := $7030 ; Octal Latch - PROM Address ? 000000r 1 ; 000000r 1 ; *** ASCII Codes *** 000000r 1 CR := $0D ; Carriage Return 000000r 1 ESC := $1B ; ESCape 000000r 1 SPACE := $20 ; SPACE 000000r 1 ; 000000r 1 .org $7000 007000 1 ; 007000 1 43 4F 50 59 L7000: .byte "COPYRIGHT 1983 ELECTRONIC DEVICES Div of ROCKWELL INTERNATIONAL NEWPORT BEACH, CALIFORNIA" 007004 1 52 49 47 48 007008 1 54 20 31 39 007059 1 ; 007059 1 FF FF FF FF .res $A7,$FF ; packing 00705D 1 FF FF FF FF 007061 1 FF FF FF FF 007100 1 ; 007100 1 A0 00 L7100: ldy #$00 ; *** Entry Point *** 007102 1 8C 00 04 sty $0400 ; 007105 1 88 dey 007106 1 8C 84 04 sty $0484 ; ? 007109 1 AD 00 04 lda $0400 ; 00710C 1 C9 4C cmp #$4C 00710E 1 F0 1D beq L712D 007110 1 A2 84 ldx #$84 ; copy table of Monitor subroutine calls to RAM 007112 1 BD A6 7E CPYTBL: lda MONJMP-1,x ; table of jumps 007115 1 9D FF 03 sta $0400-1,x ; first RAM location 007118 1 CA dex 007119 1 D0 F7 bne CPYTBL ; copy the whole table 00711B 1 A9 00 lda #$00 00711D 1 85 0A sta $0A 00711F 1 85 0B sta $0B 007121 1 85 0C sta $0C 007123 1 85 0D sta $0D 007125 1 A9 C7 lda #$C7 007127 1 85 16 sta $16 007129 1 A9 7F lda #$7F 00712B 1 85 17 sta $17 00712D 1 A9 09 L712D: lda #$09 00712F 1 8D 13 01 sta BKFLG ; ? 007132 1 A9 71 lda #$71 007134 1 8D 14 01 sta $0114 ; ? 007137 1 A9 4C lda #$4C 007139 1 8D 12 01 sta DISFLG ; ? 00713C 1 20 24 04 jsr VCRLOW ; output CR LF to Display/Printer 00713F 1 A9 01 lda #$01 ; pointer to start-up message 007141 1 20 8B 7B jsr OUTMES ; output message 007144 1 20 65 73 jsr L7365 007147 1 AD 8D 04 lda PRCFG9 00714A 1 85 18 sta $18 ; Verify Flag - After or While programming ? 00714C 1 20 DE 72 jsr L72DE 00714F 1 20 21 04 jsr VCRLF ; output CR, LF & NUL to Active Output Device 007152 1 ; 007152 1 ; *** Main Loop *** 007152 1 ; 007152 1 A2 FF MAIN: ldx #$FF ; reset processor stack 007154 1 9A txs 007155 1 A9 02 lda #$02 007157 1 85 00 sta $00 007159 1 20 1E 04 L7159: jsr VCRCK ; output Printer Buffer to Printer 00715C 1 A9 DB lda #$DB 00715E 1 20 5D 04 jsr VOUTPT ; output ASCII character in A to Display/Printer 007161 1 20 27 04 jsr VRED1 ; input one character from Keyboard to A, with echo to Display/Printer 007164 1 48 pha 007165 1 A9 5D lda #']' 007167 1 20 5D 04 jsr VOUTPT ; output ASCII character in A to Display/Printer 00716A 1 68 pla 00716B 1 A0 18 ldy #$18 00716D 1 D9 96 71 SEARCH: cmp COMS,y ; search table of command letters 007170 1 F0 0C beq FOUND 007172 1 88 dey 007173 1 10 F8 bpl SEARCH 007175 1 C6 00 dec $00 007177 1 10 E0 bpl L7159 007179 1 20 B4 7B jsr COMNDQ ; display menu of commands 00717C 1 F0 D4 beq MAIN 00717E 1 48 FOUND: pha 00717F 1 98 tya ; multiply index by 2 007180 1 0A asl a 007181 1 A8 tay 007182 1 B9 AE 71 lda COMTAB,y ; get address of command routine 007185 1 85 00 sta $00 007187 1 B9 AF 71 lda COMTAB+1,y 00718A 1 85 01 sta $01 00718C 1 68 pla 00718D 1 20 93 71 jsr EXECMD ; and call it 007190 1 4C 52 71 jmp MAIN ; and round again 007193 1 6C 00 00 EXECMD: jmp ($00) 007196 1 ; 007196 1 ; Table of Commands 007196 1 52 56 50 45 COMS: .byte "RVPECSIAN?TXLDF123KM/ []" 00719A 1 43 53 49 41 00719E 1 4E 3F 54 58 0071AE 1 ; 0071AE 1 ; Table of Command routines 0071AE 1 01 72 COMTAB: .word COMNDR ; Command R - Read PROM 0071B0 1 1D 72 .word COMNDV ; Command V - Verify PROM 0071B2 1 37 72 .word COMNDP ; Command P - Program PROM 0071B4 1 EB 72 .word COMNDE ; Command E - Erase EEPROM 0071B6 1 DE 71 .word COMNDC ; Command C - Checksum PROM 0071B8 1 A5 74 .word COMNDS ; Command S - Checksum Memory 0071BA 1 7C 74 .word COMNDI ; Command I - Invert Memory 0071BC 1 53 74 .word COMNDA ; Command A - Alter Memory 0071BE 1 57 73 .word COMNDN ; Command N - Change PROM Type 0071C0 1 B4 7B .word COMNDQ ; Command ? - Display Menu 0071C2 1 D8 72 .word COMNDT ; Command T - Toggle Verify Mode 0071C4 1 D9 74 .word COMNDX ; Command X - Exit 0071C6 1 E8 79 .word COMNDL ; Command L - Load with Offset 0071C8 1 E6 7A .word COMNDD ; Command D - Dump with Offset 0071CA 1 EE 79 .word COMNDF ; Command F - ? 0071CC 1 75 04 .byte $75,$04 ; 1 - ? 0071CE 1 78 04 .byte $78,$04 ; 2 - ? 0071D0 1 12 04 .byte $12,$04 ; 3 - ? 0071D2 1 39 04 .byte $39,$04 ; K - ? 0071D4 1 42 04 .byte $42,$04 ; M - ? 0071D6 1 0F 04 .byte $0F,$04 ; / - ? 0071D8 1 48 04 .byte $48,$04 ; [ - ? 0071DA 1 0C 01 .byte $0C,$01 ; ] - ? 0071DC 1 0F 01 .byte $0F,$01 ; - ? 0071DE 1 ; 0071DE 1 ; *** Command C - Check PROM *** 0071DE 1 20 65 73 COMNDC: jsr L7365 0071E1 1 20 20 78 jsr L7820 0071E4 1 20 EA 71 L71E4: jsr L71EA 0071E7 1 4C D2 72 jmp L72D2 0071EA 1 ; 0071EA 1 20 11 76 L71EA: jsr L7611 0071ED 1 20 8D 76 jsr L768D 0071F0 1 C9 FF cmp #$FF 0071F2 1 D0 06 bne L71FA 0071F4 1 20 38 78 jsr L7838 0071F7 1 B0 F1 bcs L71EA 0071F9 1 60 rts 0071FA 1 ; 0071FA 1 A9 0A L71FA: lda #$0A ; point to "NOT INITILIZED" message 0071FC 1 20 8B 7B jsr OUTMES ; output message 0071FF 1 38 sec 007200 1 60 rts 007201 1 ; 007201 1 ; *** Command R - Read PROM *** 007201 1 20 65 73 COMNDR: jsr L7365 ; get PROM type ? 007204 1 20 20 78 jsr L7820 ; get address ? 007207 1 20 11 76 RDLOOP: jsr L7611 ; write PROM address ? 00720A 1 20 8D 76 jsr L768D ; read PROM data ? 00720D 1 A0 00 ldy #$00 00720F 1 20 6C 04 jsr VSADDR ; store at ADDR and compare without page zero 007212 1 20 F1 78 jsr L78F1 ; check for key pressed ? 007215 1 20 38 78 jsr L7838 ; increment address and check for end ? 007218 1 B0 ED bcs RDLOOP ; no carry on reading ? 00721A 1 4C D2 72 jmp L72D2 ; finished 00721D 1 ; 00721D 1 ; *** Command V - Verify PROM *** 00721D 1 20 65 73 COMNDV: jsr L7365 ; get PROM type ? 007220 1 20 20 78 jsr L7820 ; get address ? 007223 1 20 DD 79 jsr L79DD 007226 1 20 11 76 VFLOOP: jsr L7611 ; write PROM address ? 007229 1 20 CE 76 jsr L76CE 00722C 1 20 F1 78 jsr L78F1 ; check for key pressed ? 00722F 1 20 38 78 jsr L7838 ; increment address and check for end ? 007232 1 B0 F2 bcs VFLOOP 007234 1 4C D2 72 jmp L72D2 ; finished 007237 1 ; 007237 1 ; *** Command P - Program PROM *** 007237 1 20 65 73 COMNDP: jsr L7365 ; get PROM type ? 00723A 1 A5 18 lda $18 ; Verify Flag - After or While programming 00723C 1 20 DE 72 jsr L72DE 00723F 1 20 20 78 jsr L7820 ; get address ? 007242 1 20 DD 79 jsr L79DD 007245 1 20 EA 71 jsr L71EA 007248 1 90 0D bcc L7257 00724A 1 A9 0B lda #$0B ; point to " CONTINUE" message 00724C 1 20 47 74 jsr L7447 00724F 1 B0 03 bcs L7254 007251 1 4C 10 75 jmp L7510 007254 1 ; 007254 1 20 24 04 L7254: jsr VCRLOW ; output CR and LF to Display/Printer 007257 1 AD 8F 04 L7257: lda PRCFGB 00725A 1 85 13 sta $13 00725C 1 AD 90 04 lda PRCFGC 00725F 1 85 12 sta $12 007261 1 20 29 78 L7261: jsr L7829 007264 1 20 55 79 L7264: jsr L7955 007267 1 20 11 76 jsr L7611 00726A 1 24 18 bit $18 ; Verify Flag - After or While programming 00726C 1 70 3B bvs L72A9 00726E 1 A0 00 ldy #$00 007270 1 20 A6 77 jsr L77A6 007273 1 85 01 sta $01 007275 1 20 8D 76 jsr L768D 007278 1 C5 01 cmp $01 00727A 1 F0 3B beq L72B7 00727C 1 C9 FF cmp #$FF 00727E 1 F0 29 beq L72A9 007280 1 85 00 sta $00 007282 1 05 01 ora $01 007284 1 C5 00 cmp $00 007286 1 F0 21 beq L72A9 007288 1 AD 8F 04 lda PRCFGB 00728B 1 4A lsr a 00728C 1 B0 14 bcs L72A2 00728E 1 A9 18 lda #$18 ; point to " INVALID BIT CHANGE AT " message 007290 1 20 8B 7B jsr OUTMES ; output message 007293 1 AD 1D A4 lda ADDR+1 ; end address+1 007296 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 007299 1 AD 1C A4 lda ADDR ; end address 00729C 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 00729F 1 4C D2 72 jmp L72D2 ; finished 0072A2 1 46 13 L72A2: lsr $13 0072A4 1 20 0F 77 jsr L770F 0072A7 1 06 13 asl $13 0072A9 1 20 0F 77 L72A9: jsr L770F 0072AC 1 A5 12 lda $12 0072AE 1 D0 07 bne L72B7 0072B0 1 24 18 bit $18 ; Verify Flag - After or While programming 0072B2 1 70 03 bvs L72B7 0072B4 1 20 CE 76 jsr L76CE 0072B7 1 20 F1 78 L72B7: jsr L78F1 0072BA 1 20 38 78 jsr L7838 0072BD 1 B0 A5 bcs L7264 0072BF 1 C6 12 dec $12 0072C1 1 10 9E bpl L7261 0072C3 1 24 18 bit $18 ; Verify Flag - After or While programming 0072C5 1 50 0B bvc L72D2 ; finished 0072C7 1 A9 15 lda #$15 ; point to "VERIFYING" message 0072C9 1 20 8B 7B jsr OUTMES ; output message 0072CC 1 20 29 78 jsr L7829 0072CF 1 4C 26 72 jmp VFLOOP 0072D2 1 ; 0072D2 1 20 10 75 L72D2: jsr L7510 ; switch everything off ? 0072D5 1 4C 99 74 jmp L7499 ; output DONE message and return to main loop 0072D8 1 ; 0072D8 1 ; *** Command T - Toggle Verify *** 0072D8 1 A5 18 COMNDT: lda $18 ; Verify Flag - After or While programming 0072DA 1 49 40 eor #$40 0072DC 1 85 18 sta $18 0072DE 1 0A L72DE: asl a 0072DF 1 10 05 bpl L72E6 0072E1 1 A9 16 lda #$16 ; point to " VERIFY AFTER PROG." message 0072E3 1 4C 8B 7B jmp OUTMES ; output message 0072E6 1 A9 17 L72E6: lda #$17 ; point to " VERIFY WHILE PROG." message 0072E8 1 4C 8B 7B jmp OUTMES ; output message 0072EB 1 ; 0072EB 1 ; *** Command E - ERASE EEPROM *** 0072EB 1 20 65 73 COMNDE: jsr L7365 0072EE 1 2C 8F 04 bit PRCFGB 0072F1 1 30 05 bmi L72F8 0072F3 1 A9 13 lda #$13 ; point to ", USE UV LAMP!" message 0072F5 1 4C 8B 7B jmp OUTMES ; output message 0072F8 1 A9 14 L72F8: lda #$14 ; point to " ARE YOU SURE?" message 0072FA 1 20 47 74 jsr L7447 0072FD 1 F0 01 beq L7300 0072FF 1 60 L72FF: rts 007300 1 AD 8F 04 L7300: lda PRCFGB 007303 1 4A lsr a 007304 1 B0 31 bcs L7337 007306 1 20 2E 75 jsr L752E 007309 1 AD 8C 04 lda PRCFG8 00730C 1 8D 00 70 sta L7000 00730F 1 20 B8 75 jsr L75B8 007312 1 20 DC 75 jsr L75DC 007315 1 20 B4 75 jsr L75B4 007318 1 20 E0 75 jsr L75E0 00731B 1 20 A0 75 jsr L75A0 00731E 1 A0 E6 ldy #$E6 007320 1 A2 00 ldx #$00 007322 1 20 FF 72 L7322: jsr L72FF 007325 1 CA dex 007326 1 D0 FA bne L7322 007328 1 88 dey 007329 1 D0 F7 bne L7322 00732B 1 20 A4 75 jsr L75A4 00732E 1 20 B0 75 jsr L75B0 007331 1 20 E4 75 jsr L75E4 007334 1 4C D2 72 jmp L72D2 007337 1 20 20 78 L7337: jsr L7820 00733A 1 AD 8F 04 lda PRCFGB 00733D 1 4A lsr a 00733E 1 85 13 sta $13 007340 1 20 55 79 L7340: jsr L7955 007343 1 20 11 76 jsr L7611 007346 1 20 0F 77 jsr L770F 007349 1 20 F1 78 jsr L78F1 00734C 1 20 38 78 jsr L7838 00734F 1 B0 EF bcs L7340 007351 1 20 29 78 jsr L7829 007354 1 4C E4 71 jmp L71E4 007357 1 ; 007357 1 ; *** Command N - Change PROM Type *** 007357 1 20 6C 73 COMNDN: jsr L736C 00735A 1 AD 8D 04 lda PRCFG9 00735D 1 85 18 sta $18 ; Verify Flag - After or While programming 00735F 1 20 DE 72 jsr L72DE ; output verify state ? 007362 1 4C 99 74 jmp L7499 ; finished 007365 1 ; 007365 1 AD 84 04 L7365: lda $0484 007368 1 C9 0D cmp #CR 00736A 1 90 4F bcc L73BB 00736C 1 20 10 75 L736C: jsr L7510 00736F 1 20 24 04 L736F: jsr VCRLOW ; output CR and LF to Display/Printer 007372 1 A9 08 lda #$08 ; point to "EPROM NUMBER? " message 007374 1 20 8B 7B jsr OUTMES ; output message 007377 1 A0 80 ldy #$80 007379 1 A2 05 ldx #$05 00737B 1 20 68 78 jsr L7868 00737E 1 C0 00 cpy #$00 007380 1 F0 03 beq L7385 007382 1 4C 05 74 jmp L7405 007385 1 A5 06 L7385: lda $06 007387 1 D9 E0 7F cmp PRTYP2,y ; 2nd part of PROM type 00738A 1 F0 07 beq L7393 00738C 1 C8 L738C: iny 00738D 1 C0 0D cpy #CR 00738F 1 90 F4 bcc L7385 007391 1 B0 43 bcs L73D6 007393 1 8A L7393: txa 007394 1 D9 D3 7F cmp PRTYP1,y ; 1st part of PROM type 007397 1 D0 F3 bne L738C 007399 1 8C 84 04 sty $0484 00739C 1 C0 04 cpy #$04 00739E 1 D0 0B bne L73AB 0073A0 1 A9 12 lda #$12 ; point to " 2732A ?" message 0073A2 1 20 47 74 jsr L7447 0073A5 1 D0 14 bne L73BB 0073A7 1 A0 05 ldy #$05 0073A9 1 D0 0D bne L73B8 0073AB 1 C0 08 L73AB: cpy #$08 0073AD 1 D0 0C bne L73BB 0073AF 1 A9 04 lda #$04 ; point to " AR LOW?" message 0073B1 1 20 47 74 jsr L7447 0073B4 1 D0 05 bne L73BB 0073B6 1 A0 09 ldy #$09 0073B8 1 8C 84 04 L73B8: sty $0484 0073BB 1 20 DE 73 L73BB: jsr L73DE 0073BE 1 20 24 04 jsr VCRLOW ; output CR and LF to Display/Printer 0073C1 1 AC 84 04 ldy $0484 0073C4 1 10 08 bpl L73CE 0073C6 1 A9 19 lda #$19 ; point to "USER DRIVER" message 0073C8 1 20 8B 7B jsr OUTMES ; output message 0073CB 1 4C D1 73 jmp L73D1 0073CE 1 20 35 74 L73CE: jsr L7435 0073D1 1 A9 1A L73D1: lda #$1A ; point to " SELECTED" message 0073D3 1 4C 8B 7B jmp OUTMES ; output message 0073D6 1 A9 09 L73D6: lda #$09 ; point to list of supported EPROMs 0073D8 1 20 8B 7B jsr OUTMES ; output message 0073DB 1 4C 6F 73 jmp L736F 0073DE 1 ; 0073DE 1 AD 84 04 L73DE: lda $0484 0073E1 1 30 17 bmi L73FA 0073E3 1 0A asl a 0073E4 1 0A asl a 0073E5 1 85 00 sta $00 0073E7 1 0A asl a 0073E8 1 65 00 adc $00 0073EA 1 69 0B adc #$0B 0073EC 1 A8 tay 0073ED 1 A2 0B ldx #$0B 0073EF 1 B9 2B 7F L73EF: lda L7F2B,y ; get PROM configuration data ? 0073F2 1 9D 85 04 sta PRCFG1,x 0073F5 1 88 dey 0073F6 1 CA dex 0073F7 1 10 F6 bpl L73EF 0073F9 1 60 rts 0073FA 1 A0 0B L73FA: ldy #$0B 0073FC 1 B1 16 L73FC: lda ($16),y 0073FE 1 99 85 04 sta PRCFG1,y 007401 1 88 dey 007402 1 10 F8 bpl L73FC 007404 1 60 rts 007405 1 C0 04 L7405: cpy #$04 007407 1 D0 0C bne L7415 007409 1 E0 80 cpx #$80 00740B 1 D0 C9 bne L73D6 00740D 1 C9 16 cmp #$16 00740F 1 D0 C5 bne L73D6 007411 1 A0 0B ldy #$0B 007413 1 D0 A3 bne L73B8 007415 1 C0 06 L7415: cpy #$06 007417 1 D0 0C bne L7425 007419 1 E0 87 cpx #$87 00741B 1 D0 B9 bne L73D6 00741D 1 C9 64 cmp #$64 00741F 1 D0 B5 bne L73D6 007421 1 A0 0C ldy #$0C 007423 1 D0 93 bne L73B8 007425 1 C0 0E L7425: cpy #$0E 007427 1 D0 AD bne L73D6 007429 1 E0 FE cpx #$FE 00742B 1 D0 A9 bne L73D6 00742D 1 C9 ED cmp #$ED 00742F 1 D0 A5 bne L73D6 007431 1 A0 80 ldy #$80 007433 1 D0 83 bne L73B8 007435 1 B9 D3 7F L7435: lda PRTYP1,y 007438 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 00743B 1 B9 E0 7F lda PRTYP2,y 00743E 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 007441 1 B9 ED 7F lda PRTYP3,y 007444 1 4C 5D 04 jmp VOUTPT ; output ASCII character in A to Display/Printer 007447 1 ; 007447 1 20 8B 7B L7447: jsr OUTMES ; output message 00744A 1 20 07 79 jsr L7907 00744D 1 20 5D 04 jsr VOUTPT ; output ASCII character in A to Display/Printer 007450 1 C9 59 cmp #$59 007452 1 60 rts 007453 1 ; 007453 1 ; *** Command A - Alter Memory *** 007453 1 20 24 04 COMNDA: jsr VCRLOW ; output CR and LF to Display/Printer 007456 1 A9 10 lda #$10 ; point to " SET MEMORY TO = " message 007458 1 20 8B 7B jsr OUTMES ; output message 00745B 1 A0 80 ldy #$80 00745D 1 A2 02 ldx #$02 00745F 1 20 68 78 jsr L7868 007462 1 48 pha 007463 1 20 24 04 jsr VCRLOW ; output CR and LF to Display/Printer 007466 1 20 B7 77 jsr L77B7 007469 1 A0 00 ldy #$00 00746B 1 20 29 78 jsr L7829 00746E 1 68 pla 00746F 1 AA tax 007470 1 8A L7470: txa 007471 1 20 6C 04 jsr VSADDR ; store at ADDR and compare without page zero 007474 1 20 38 78 jsr L7838 007477 1 B0 F7 bcs L7470 007479 1 4C 99 74 jmp L7499 00747C 1 ; 00747C 1 ; *** Command I - Invert Memory *** 00747C 1 20 24 04 COMNDI: jsr VCRLOW ; output CR and LF to Display/Printer 00747F 1 A9 0F lda #$0F ; point to " INVERT MEMORY" message 007481 1 20 8B 7B jsr OUTMES ; output message 007484 1 20 B7 77 jsr L77B7 007487 1 20 29 78 jsr L7829 00748A 1 A0 00 ldy #$00 00748C 1 20 A6 77 L748C: jsr L77A6 00748F 1 49 FF eor #$FF 007491 1 20 6C 04 jsr VSADDR ; store at ADDR and compare without page zero 007494 1 20 38 78 jsr L7838 007497 1 B0 F3 bcs L748C 007499 1 20 3F 04 L7499: jsr VLL ; set I/O to terminal 00749C 1 20 24 04 jsr VCRLOW ; output CR and LF to Display/Printer 00749F 1 A9 11 lda #$11 ; point to " DONE" message 0074A1 1 20 8B 7B jsr OUTMES ; output message 0074A4 1 60 rts 0074A5 1 ; 0074A5 1 ; *** Command S - Checksum Memory *** 0074A5 1 20 03 78 COMNDS: jsr L7803 0074A8 1 20 24 04 jsr VCRLOW ; output CR and LF to Display/Printer 0074AB 1 20 29 78 jsr L7829 0074AE 1 A9 00 lda #$00 0074B0 1 85 07 sta $07 0074B2 1 85 08 sta $08 0074B4 1 A0 00 L74B4: ldy #$00 0074B6 1 20 A6 77 jsr L77A6 0074B9 1 18 clc 0074BA 1 65 08 adc $08 0074BC 1 85 08 sta $08 0074BE 1 90 02 bcc L74C2 0074C0 1 E6 07 inc $07 0074C2 1 20 38 78 L74C2: jsr L7838 0074C5 1 B0 ED bcs L74B4 0074C7 1 A9 0C lda #$0C ; point to " CHECKSUM=" message 0074C9 1 20 8B 7B jsr OUTMES ; output message 0074CC 1 A5 07 lda $07 0074CE 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 0074D1 1 A5 08 lda $08 0074D3 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 0074D6 1 4C D2 72 jmp L72D2 0074D9 1 ; 0074D9 1 ; *** Command X - Exit *** 0074D9 1 20 10 75 COMNDX: jsr L7510 0074DC 1 4C 1B 04 jmp VCOMIN ; ? 0074DF 1 ; 0074DF 1 2C 86 04 L74DF: bit PRCFG2 0074E2 1 70 29 bvs L750D 0074E4 1 20 C0 75 jsr L75C0 0074E7 1 20 B0 75 jsr L75B0 0074EA 1 20 A8 75 jsr L75A8 0074ED 1 20 A0 75 jsr L75A0 0074F0 1 A9 00 lda #$00 0074F2 1 8D 11 70 sta IRAORA ; write to 6522 port A 0074F5 1 A9 06 lda #$06 0074F7 1 8D 13 70 sta DDRA ; set 6522 port A bits 1,2 output and bits 0,3,4,5,6,7 input 0074FA 1 2C 10 70 bit IRBORB ; test bit 7 of 6522 port B 0074FD 1 10 0E bpl L750D 0074FF 1 A9 03 lda #$03 ; point to "PRESS A KEY TO GO" message 007501 1 20 8B 7B jsr OUTMES ; output message 007504 1 20 07 79 jsr L7907 007507 1 20 24 04 jsr VCRLOW ; output CR LF to Display/Printer 00750A 1 4C DF 74 jmp L74DF 00750D 1 ; 00750D 1 4C 10 75 L750D: jmp L7510 007510 1 ; 007510 1 ; switch everything off ? 007510 1 A9 00 L7510: lda #$00 007512 1 8D 13 70 sta DDRA ; set 6522 port A (PROM data) to all input 007515 1 8D 30 70 sta $7030 ; write to 8-bit latch ? 007518 1 AD 10 70 lda IRBORB ; read 6522 port B 00751B 1 09 F7 ora #$F7 00751D 1 8D 10 70 sta IRBORB ; write to 6522 port B 007520 1 A9 00 lda #$00 007522 1 20 9A 75 jsr L759A 007525 1 8D 12 70 sta DDRB ; set 6522 port B to all input 007528 1 A9 32 lda #$32 ; 5V ? 00752A 1 8D 00 70 sta L7000 ; set programming voltage 00752D 1 60 rts 00752E 1 ; 00752E 1 20 DF 74 L752E: jsr L74DF 007531 1 A9 7F lda #$7F 007533 1 8D 10 70 sta IRBORB ; write to 6522 port B 007536 1 8D 12 70 sta DDRB ; set 6522 port B bits 0-6 output and bit 7 input 007539 1 AD 8C 04 lda PRCFG8 00753C 1 8D 00 70 sta L7000 ; set programming voltage 00753F 1 AD 86 04 lda PRCFG2 007542 1 85 00 sta $00 007544 1 10 03 bpl L7549 007546 1 20 C0 75 jsr L75C0 007549 1 06 00 L7549: asl $00 00754B 1 10 03 bpl L7550 00754D 1 20 D4 75 jsr L75D4 007550 1 06 00 L7550: asl $00 007552 1 10 03 bpl L7557 007554 1 20 8C 75 jsr L758C 007557 1 06 00 L7557: asl $00 007559 1 10 03 bpl L755E 00755B 1 20 B8 75 jsr L75B8 00755E 1 06 00 L755E: asl $00 007560 1 10 03 bpl L7565 007562 1 20 B0 75 jsr L75B0 007565 1 06 00 L7565: asl $00 007567 1 10 03 bpl L756C 007569 1 20 A0 75 jsr L75A0 00756C 1 06 00 L756C: asl $00 00756E 1 10 03 bpl L7573 007570 1 20 90 75 jsr L7590 007573 1 06 00 L7573: asl $00 007575 1 10 03 bpl L757A 007577 1 20 C4 75 jsr L75C4 00757A 1 2C 87 04 L757A: bit PRCFG3 00757D 1 10 03 bpl L7582 00757F 1 20 D8 75 jsr L75D8 007582 1 2C 87 04 L7582: bit PRCFG3 007585 1 50 03 bvc L758A 007587 1 20 DC 75 jsr L75DC 00758A 1 A0 05 L758A: ldy #$05 00758C 1 A9 FE L758C: lda #$FE 00758E 1 D0 3D bne L75CD 007590 1 A9 10 L7590: lda #$10 007592 1 05 09 L7592: ora $09 007594 1 D0 04 bne L759A 007596 1 A9 EF L7596: lda #$EF 007598 1 25 09 L7598: and $09 00759A 1 85 09 L759A: sta $09 00759C 1 8D 20 70 sta $7020 ; write to 8-bit latch ? 00759F 1 60 rts 0075A0 1 ; 0075A0 1 A9 40 L75A0: lda #$40 0075A2 1 D0 EE bne L7592 0075A4 1 A9 BF L75A4: lda #$BF 0075A6 1 D0 F0 bne L7598 0075A8 1 A9 04 L75A8: lda #$04 0075AA 1 D0 E6 bne L7592 0075AC 1 A9 FB L75AC: lda #$FB 0075AE 1 D0 E8 bne L7598 0075B0 1 A9 80 L75B0: lda #$80 0075B2 1 D0 DE bne L7592 0075B4 1 A9 7F L75B4: lda #$7F 0075B6 1 D0 E0 bne L7598 0075B8 1 A9 08 L75B8: lda #$08 0075BA 1 D0 D6 bne L7592 0075BC 1 A9 F7 L75BC: lda #$F7 0075BE 1 D0 D8 bne L7598 0075C0 1 A9 20 L75C0: lda #$20 0075C2 1 D0 CE bne L7592 0075C4 1 A9 40 L75C4: lda #$40 0075C6 1 0D 10 70 L75C6: ora IRBORB ; OR with 6522 port B 0075C9 1 D0 05 bne L75D0 0075CB 1 A9 BF L75CB: lda #$BF 0075CD 1 2D 10 70 L75CD: and IRBORB ; AND with 6522 port B 0075D0 1 8D 10 70 L75D0: sta IRBORB ; write to 6522 port B 0075D3 1 60 rts 0075D4 1 ; 0075D4 1 A9 F7 L75D4: lda #$F7 0075D6 1 D0 F5 bne L75CD 0075D8 1 A9 FB L75D8: lda #$FB 0075DA 1 D0 F1 bne L75CD 0075DC 1 A9 FD L75DC: lda #$FD 0075DE 1 D0 ED bne L75CD 0075E0 1 A9 DF L75E0: lda #$DF 0075E2 1 D0 E9 bne L75CD 0075E4 1 A9 20 L75E4: lda #$20 0075E6 1 D0 DE bne L75C6 0075E8 1 20 B8 75 L75E8: jsr L75B8 0075EB 1 A9 32 lda #$32 0075ED 1 8D 00 70 sta L7000 0075F0 1 20 10 76 jsr L7610 0075F3 1 20 10 76 jsr L7610 0075F6 1 20 10 76 jsr L7610 0075F9 1 20 E0 75 jsr L75E0 0075FC 1 A9 32 lda #$32 0075FE 1 A0 34 ldy #$34 007600 1 18 clc 007601 1 78 sei 007602 1 69 03 L7602: adc #$03 007604 1 8D 00 70 sta L7000 007607 1 88 dey 007608 1 10 F8 bpl L7602 00760A 1 A9 D2 lda #$D2 00760C 1 8D 00 70 sta L7000 00760F 1 58 cli 007610 1 60 L7610: rts 007611 1 ; 007611 1 ; write PROM address ? 007611 1 AD 1D A4 L7611: lda ADDR+1 ; end address+1 007614 1 2D 85 04 and PRCFG1 007617 1 A8 tay 007618 1 AD 88 04 lda PRCFG4 00761B 1 85 00 sta $00 00761D 1 10 0D bpl L762C 00761F 1 98 tya 007620 1 29 10 and #$10 007622 1 D0 05 bne L7629 007624 1 20 96 75 jsr L7596 007627 1 D0 03 bne L762C 007629 1 20 90 75 L7629: jsr L7590 00762C 1 06 00 L762C: asl $00 00762E 1 10 12 bpl L7642 007630 1 98 tya 007631 1 29 10 and #$10 007633 1 D0 0A bne L763F 007635 1 2C 8D 04 bit PRCFG9 007638 1 30 05 bmi L763F 00763A 1 20 BC 75 jsr L75BC 00763D 1 D0 03 bne L7642 00763F 1 20 B8 75 L763F: jsr L75B8 007642 1 06 00 L7642: asl $00 007644 1 10 0D bpl L7653 007646 1 98 tya 007647 1 29 08 and #$08 007649 1 D0 05 bne L7650 00764B 1 20 BC 75 jsr L75BC 00764E 1 D0 03 bne L7653 007650 1 20 B8 75 L7650: jsr L75B8 007653 1 06 00 L7653: asl $00 007655 1 10 0D bpl L7664 007657 1 98 tya 007658 1 29 08 and #$08 00765A 1 D0 05 bne L7661 00765C 1 20 A4 75 jsr L75A4 00765F 1 D0 03 bne L7664 007661 1 20 A0 75 L7661: jsr L75A0 007664 1 06 00 L7664: asl $00 007666 1 10 12 bpl L767A 007668 1 98 tya 007669 1 29 04 and #$04 00766B 1 D0 0A bne L7677 00766D 1 2C 8D 04 bit PRCFG9 ; test for 68764 007670 1 30 05 bmi L7677 ; branch if yes 007672 1 20 AC 75 jsr L75AC 007675 1 D0 03 bne L767A 007677 1 20 A8 75 L7677: jsr L75A8 00767A 1 A5 09 L767A: lda $09 00767C 1 29 FC and #$FC 00767E 1 85 09 sta $09 007680 1 98 tya 007681 1 29 03 and #$03 007683 1 20 92 75 jsr L7592 007686 1 AD 1C A4 lda ADDR ; end address 007689 1 8D 30 70 sta $7030 ; write to 8-bit latch ? 00768C 1 60 rts 00768D 1 ; 00768D 1 ; read PROM data ? 00768D 1 AD 89 04 L768D: lda PRCFG5 007690 1 85 00 sta $00 007692 1 10 03 bpl L7697 007694 1 20 CB 75 jsr L75CB 007697 1 06 00 L7697: asl $00 007699 1 10 03 bpl L769E 00769B 1 20 96 75 jsr L7596 00769E 1 06 00 L769E: asl $00 0076A0 1 10 03 bpl L76A5 0076A2 1 20 A4 75 jsr L75A4 0076A5 1 06 00 L76A5: asl $00 0076A7 1 10 03 bpl L76AC 0076A9 1 20 B4 75 jsr L75B4 0076AC 1 06 00 L76AC: asl $00 0076AE 1 10 03 bpl L76B3 0076B0 1 20 A4 75 jsr L75A4 0076B3 1 AD 11 70 L76B3: lda IRAORA ; read PROM data (6522 port A) 0076B6 1 48 pha 0076B7 1 06 00 asl $00 0076B9 1 10 03 bpl L76BE 0076BB 1 20 B0 75 jsr L75B0 0076BE 1 06 00 L76BE: asl $00 0076C0 1 10 03 bpl L76C5 0076C2 1 20 A0 75 jsr L75A0 0076C5 1 06 00 L76C5: asl $00 0076C7 1 10 03 bpl L76CC 0076C9 1 20 B0 75 jsr L75B0 0076CC 1 68 L76CC: pla 0076CD 1 60 L76CD: rts 0076CE 1 ; 0076CE 1 20 8D 76 L76CE: jsr L768D 0076D1 1 85 00 sta $00 0076D3 1 A0 00 ldy #$00 0076D5 1 20 A6 77 jsr L77A6 0076D8 1 C5 00 cmp $00 0076DA 1 F0 F1 beq L76CD 0076DC 1 48 pha 0076DD 1 E6 10 inc $10 0076DF 1 D0 05 bne L76E6 0076E1 1 A9 05 lda #$05 ; point to "ADDRESS FROM RAM" message 0076E3 1 20 8B 7B jsr OUTMES ; output message 0076E6 1 A9 2A L76E6: lda #$2A 0076E8 1 20 4B 04 jsr VOUTAL ; output ASCII character in A to Active Output Device 0076EB 1 AD 1D A4 lda ADDR+1 ; end address+1 0076EE 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 0076F1 1 AD 1C A4 lda ADDR ; end address 0076F4 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 0076F7 1 20 06 04 jsr VBLANK2 ; output two spaces to Display/Printer 0076FA 1 20 06 04 jsr VBLANK2 ; output two spaces to Display/Printer 0076FD 1 A5 00 lda $00 0076FF 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 007702 1 20 06 04 jsr VBLANK2 ; output two spaces to Display/Printer 007705 1 68 pla 007706 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 007709 1 20 F1 78 jsr L78F1 00770C 1 4C 21 04 jmp VCRLF ; output CR, LF & NUL to Active Output Device 00770F 1 ; 00770F 1 AD 8A 04 L770F: lda PRCFG6 007712 1 85 01 sta $01 007714 1 10 03 bpl L7719 007716 1 20 A4 75 jsr L75A4 007719 1 06 01 L7719: asl $01 00771B 1 10 03 bpl L7720 00771D 1 20 B4 75 jsr L75B4 007720 1 06 01 L7720: asl $01 007722 1 10 03 bpl L7727 007724 1 20 CB 75 jsr L75CB 007727 1 06 01 L7727: asl $01 007729 1 10 03 bpl L772E 00772B 1 20 96 75 jsr L7596 00772E 1 06 01 L772E: asl $01 007730 1 10 03 bpl L7735 007732 1 20 E0 75 jsr L75E0 007735 1 A9 FF L7735: lda #$FF 007737 1 8D 13 70 sta DDRA ; set 6522 port A to all output 00773A 1 24 13 bit $13 00773C 1 50 04 bvc L7742 00773E 1 A9 FF lda #$FF 007740 1 D0 05 bne L7747 007742 1 A0 00 L7742: ldy #$00 007744 1 20 A6 77 jsr L77A6 007747 1 8D 11 70 L7747: sta IRAORA ; write to 6522 port A 00774A 1 06 01 asl $01 00774C 1 10 03 bpl L7751 00774E 1 20 A4 75 jsr L75A4 007751 1 06 01 L7751: asl $01 007753 1 10 03 bpl L7758 007755 1 20 A0 75 jsr L75A0 007758 1 06 01 L7758: asl $01 00775A 1 10 03 bpl L775F 00775C 1 20 B4 75 jsr L75B4 00775F 1 AD 8B 04 L775F: lda PRCFG7 007762 1 85 01 sta $01 007764 1 10 03 bpl L7769 007766 1 20 E8 75 jsr L75E8 007769 1 06 01 L7769: asl $01 00776B 1 10 03 bpl L7770 00776D 1 20 CB 75 jsr L75CB 007770 1 06 01 L7770: asl $01 007772 1 10 03 bpl L7777 007774 1 20 E0 75 jsr L75E0 007777 1 AC 8E 04 L7777: ldy PRCFGA 00777A 1 20 AB 77 jsr L77AB 00777D 1 06 01 asl $01 00777F 1 10 03 bpl L7784 007781 1 20 A4 75 jsr L75A4 007784 1 06 01 L7784: asl $01 007786 1 10 03 bpl L778B 007788 1 20 B0 75 jsr L75B0 00778B 1 06 01 L778B: asl $01 00778D 1 10 03 bpl L7792 00778F 1 20 A0 75 jsr L75A0 007792 1 06 01 L7792: asl $01 007794 1 10 03 bpl L7799 007796 1 20 C4 75 jsr L75C4 007799 1 06 01 L7799: asl $01 00779B 1 10 03 bpl L77A0 00779D 1 20 E4 75 jsr L75E4 0077A0 1 A9 00 L77A0: lda #$00 0077A2 1 8D 13 70 sta DDRA ; set 6522 port A to all inputs 0077A5 1 60 rts 0077A6 1 ; 0077A6 1 A9 1C L77A6: lda #$1C 0077A8 1 4C 3C 04 jmp VLDAY 0077AB 1 A2 25 L77AB: ldx #$25 0077AD 1 78 sei 0077AE 1 CA L77AE: dex 0077AF 1 D0 FD bne L77AE 0077B1 1 EA nop 0077B2 1 88 dey 0077B3 1 D0 F6 bne L77AB 0077B5 1 58 cli 0077B6 1 60 rts 0077B7 1 ; 0077B7 1 20 24 04 L77B7: jsr VCRLOW ; output CR and LF to Display/Printer 0077BA 1 A9 0D lda #$0D ; point to "FROM=" message 0077BC 1 20 8B 7B jsr OUTMES ; output message 0077BF 1 A6 0A ldx $0A 0077C1 1 A5 0B lda $0B 0077C3 1 20 51 78 jsr L7851 0077C6 1 B0 0A bcs L77D2 0077C8 1 A5 0B lda $0B 0077CA 1 A6 0A ldx $0A 0077CC 1 20 81 04 jsr VWRAX ; write A then X in ASCII to the output device 0077CF 1 4C D6 77 jmp L77D6 0077D2 1 85 0A L77D2: sta $0A 0077D4 1 86 0B stx $0B 0077D6 1 A9 0E L77D6: lda #$0E ; point to " TO=" message 0077D8 1 20 8B 7B jsr OUTMES ; output message 0077DB 1 A6 0C ldx $0C 0077DD 1 A5 0D lda $0D 0077DF 1 20 51 78 jsr L7851 0077E2 1 B0 0B bcs L77EF 0077E4 1 A5 0D lda $0D 0077E6 1 A6 0C ldx $0C 0077E8 1 20 81 04 jsr VWRAX ; write A then X in ASCII to the output device 0077EB 1 A6 0D ldx $0D 0077ED 1 A5 0C lda $0C 0077EF 1 85 0C L77EF: sta $0C 0077F1 1 86 0D stx $0D 0077F3 1 C5 0A cmp $0A 0077F5 1 8A txa 0077F6 1 E5 0B sbc $0B 0077F8 1 90 01 bcc L77FB 0077FA 1 60 rts 0077FB 1 A9 06 L77FB: lda #$06 ; point to " NEGATIVE RANGE" message 0077FD 1 20 8B 7B jsr OUTMES ; output message 007800 1 4C B7 77 jmp L77B7 007803 1 ; 007803 1 20 B7 77 L7803: jsr L77B7 007806 1 AD 85 04 lda PRCFG1 007809 1 49 FF eor #$FF ; invert 00780B 1 A8 tay 00780C 1 25 0B and $0B 00780E 1 85 00 sta $00 007810 1 98 tya 007811 1 25 0D and $0D 007813 1 C5 00 cmp $00 007815 1 D0 01 bne L7818 007817 1 60 rts 007818 1 A9 07 L7818: lda #$07 ; point to " RANGE TOO LARGE" message 00781A 1 20 8B 7B jsr OUTMES ; output message 00781D 1 4C 03 78 jmp L7803 007820 1 ; 007820 1 20 03 78 L7820: jsr L7803 007823 1 20 24 04 jsr VCRLOW ; output CR and LF to Display/Printer 007826 1 20 2E 75 jsr L752E 007829 1 A5 0A L7829: lda $0A 00782B 1 8D 1C A4 sta ADDR ; end address 00782E 1 A5 0B lda $0B 007830 1 8D 1D A4 sta ADDR+1 ; end address+1 007833 1 A9 FF lda #$FF 007835 1 85 10 sta $10 007837 1 60 rts 007838 1 ; 007838 1 AD 1D A4 L7838: lda ADDR+1 ; end address+1 00783B 1 C5 0D cmp $0D 00783D 1 D0 08 bne L7847 00783F 1 AD 1C A4 lda ADDR ; end address 007842 1 C5 0C cmp $0C 007844 1 18 clc 007845 1 F0 09 beq L7850 007847 1 EE 1C A4 L7847: inc ADDR ; end address 00784A 1 D0 03 bne L784F 00784C 1 EE 1D A4 inc ADDR+1 ; end address+1 00784F 1 38 L784F: sec 007850 1 60 L7850: rts 007851 1 ; 007851 1 48 L7851: pha 007852 1 8A txa 007853 1 48 pha 007854 1 20 B3 79 jsr L79B3 007857 1 68 pla 007858 1 AA tax 007859 1 68 pla 00785A 1 90 08 bcc L7864 00785C 1 20 C3 79 jsr L79C3 00785F 1 A0 03 ldy #$03 007861 1 20 95 79 jsr L7995 007864 1 A2 04 L7864: ldx #$04 007866 1 A0 80 ldy #$80 007868 1 A9 00 L7868: lda #$00 00786A 1 85 04 sta $04 00786C 1 85 05 sta $05 00786E 1 85 06 sta $06 007870 1 86 00 stx $00 007872 1 84 01 sty $01 007874 1 A8 tay 007875 1 20 07 79 L7875: jsr L7907 007878 1 C9 0D cmp #CR 00787A 1 F0 68 beq L78E4 00787C 1 C9 20 cmp #SPACE 00787E 1 F0 64 beq L78E4 007880 1 C9 7F cmp #$7F 007882 1 F0 4A beq L78CE 007884 1 C0 00 cpy #$00 007886 1 D0 09 bne L7891 007888 1 48 pha 007889 1 98 tya 00788A 1 48 pha 00788B 1 20 50 79 jsr L7950 00788E 1 68 pla 00788F 1 A8 tay 007890 1 68 pla 007891 1 C4 00 L7891: cpy $00 007893 1 90 03 bcc L7898 007895 1 4C 75 78 L7895: jmp L7875 007898 1 ; 007898 1 20 5D 04 L7898: jsr VOUTPT ; output ASCII character in A to Display/Printer 00789B 1 24 01 bit $01 00789D 1 10 0C bpl L78AB 00789F 1 C9 47 cmp #'G' 0078A1 1 B0 10 bcs L78B3 0078A3 1 C9 41 cmp #'A' 0078A5 1 90 04 bcc L78AB 0078A7 1 69 08 adc #$08 0078A9 1 D0 0E bne L78B9 0078AB 1 C9 3A L78AB: cmp #':' 0078AD 1 B0 04 bcs L78B3 0078AF 1 C9 30 cmp #'0' 0078B1 1 B0 06 bcs L78B9 0078B3 1 20 63 04 L78B3: jsr VPSLS ; on delete key output slash if TTY & backup cursor if keyboard 0078B6 1 4C 95 78 jmp L7895 0078B9 1 29 0F L78B9: and #$0F 0078BB 1 A2 03 ldx #$03 0078BD 1 06 06 L78BD: asl $06 0078BF 1 26 05 rol $05 0078C1 1 26 04 rol $04 0078C3 1 CA dex 0078C4 1 10 F7 bpl L78BD 0078C6 1 05 06 ora $06 0078C8 1 85 06 sta $06 0078CA 1 C8 iny 0078CB 1 4C 75 78 jmp L7875 0078CE 1 ; 0078CE 1 C0 00 L78CE: cpy #$00 0078D0 1 F0 C3 beq L7895 0078D2 1 88 dey 0078D3 1 A2 03 ldx #$03 0078D5 1 46 04 L78D5: lsr $04 0078D7 1 66 05 ror $05 0078D9 1 66 06 ror $06 0078DB 1 CA dex 0078DC 1 10 F7 bpl L78D5 0078DE 1 20 63 04 jsr VPSLS ; on delete key output slash if TTY & backup cursor if keyboard 0078E1 1 4C 75 78 jmp L7875 0078E4 1 ; 0078E4 1 38 L78E4: sec 0078E5 1 C0 00 cpy #$00 0078E7 1 D0 01 bne L78EA 0078E9 1 18 clc 0078EA 1 A5 06 L78EA: lda $06 0078EC 1 A6 05 ldx $05 0078EE 1 A4 04 ldy $04 0078F0 1 60 rts 0078F1 1 ; 0078F1 1 86 14 L78F1: stx $14 0078F3 1 A9 08 lda #$08 0078F5 1 2C 00 A8 bit $A800 ; keyboard ? 0078F8 1 F0 40 beq L793A 0078FA 1 20 69 04 jsr VRONEK ; wait if last key still down (rollover) 0078FD 1 88 dey 0078FE 1 30 4F bmi L794F 007900 1 A9 FF lda #$FF 007902 1 8D 7F A4 sta ROLLFL ; last strobe for rollover 007905 1 A6 14 ldx $14 007907 1 86 14 L7907: stx $14 007909 1 AE 15 A4 ldx CURPO2 00790C 1 E0 14 cpx #$14 00790E 1 B0 05 bcs L7915 007910 1 A9 DE lda #$DE 007912 1 20 57 04 jsr VOUTD1 ; convert X into real address for Display and output it 007915 1 84 15 L7915: sty $15 007917 1 A9 08 lda #$08 007919 1 2C 00 A8 bit $A800 00791C 1 D0 06 bne L7924 00791E 1 20 30 04 jsr VGETTY ; get a character from TTY into A 007921 1 4C 27 79 jmp L7927 007924 1 20 2D 04 L7924: jsr VGETKY ; get a character from keyboard 007927 1 A6 14 L7927: ldx $14 007929 1 A4 15 ldy $15 00792B 1 29 7F and #$7F 00792D 1 C9 1B cmp #$1B 00792F 1 D0 1E bne L794F 007931 1 20 60 04 L7931: jsr VPTC18 ; reset PRIFLG 007934 1 20 10 75 jsr L7510 007937 1 4C 52 71 jmp MAIN 00793A 1 ; 00793A 1 70 13 L793A: bvs L794F 00793C 1 2C 00 A8 L793C: bit $A800 00793F 1 50 FB bvc L793C 007941 1 20 2A 04 jsr VDELAY ; delay 1-bit time as given by baud rate 007944 1 20 30 04 jsr VGETTY ; get a character from TTY into A 007947 1 C9 1B cmp #ESC 007949 1 F0 E6 beq L7931 00794B 1 C9 20 cmp #SPACE 00794D 1 D0 ED bne L793C 00794F 1 60 L794F: rts 007950 1 ; 007950 1 A9 20 L7950: lda #$20 007952 1 4C 57 04 jmp VOUTD1 ; convert X into real address for Display and output it 007955 1 007955 1 2C 8E 04 L7955: bit PRCFGA 007958 1 70 08 bvs L7962 00795A 1 30 06 bmi L7962 00795C 1 AD 1C A4 lda ADDR ; end address 00795F 1 F0 08 beq L7969 007961 1 60 L7961: rts 007962 1 ; 007962 1 AD 1C A4 L7962: lda ADDR ; end address 007965 1 29 0F and #$0F 007967 1 D0 F8 bne L7961 007969 1 A9 08 L7969: lda #$08 00796B 1 2C 00 A8 bit $A800 00796E 1 D0 05 bne L7975 007970 1 A9 07 lda #$07 007972 1 4C 5D 04 jmp VOUTPT ; output ASCII character in A to Display/Printer 007975 1 ; 007975 1 AD 1D A4 L7975: lda ADDR+1 ; end address+1 007978 1 20 C7 79 jsr L79C7 00797B 1 AD 1C A4 lda ADDR ; end address 00797E 1 20 C7 79 jsr L79C7 007981 1 A0 03 ldy #$03 007983 1 AD 90 04 lda PRCFGC 007986 1 F0 0D beq L7995 ; branch if not 68764 007988 1 20 03 04 jsr VBLANK ; output one Space to Display/Printer 00798B 1 18 clc 00798C 1 A5 12 lda $12 00798E 1 69 31 adc #$31 007990 1 20 5A 04 jsr VOUTP1 ; output a character to Display 007993 1 A0 05 ldy #$05 007995 1 20 B3 79 L7995: jsr L79B3 007998 1 90 0C bcc L79A6 00799A 1 A9 08 lda #$08 00799C 1 20 5A 04 L799C: jsr VOUTP1 ; output a character to Display 00799F 1 CE 5B 03 dec $035B 0079A2 1 88 dey 0079A3 1 10 F7 bpl L799C 0079A5 1 60 rts 0079A6 1 ; 0079A6 1 CE 15 A4 L79A6: dec CURPO2 0079A9 1 88 dey 0079AA 1 10 FA bpl L79A6 0079AC 1 60 rts 0079AD 1 ; 0079AD 1 ; ? Table ? 0079AD 1 20 06 99 4C L79AD: .byte $20,$06,$99,$4C,$A1,$E1 0079B1 1 A1 E1 0079B3 1 ; 0079B3 1 A2 05 L79B3: ldx #$05 0079B5 1 BD AD 79 L79B5: lda L79AD,x 0079B8 1 DD 00 99 cmp $9900,x 0079BB 1 18 clc 0079BC 1 D0 04 bne L79C2 0079BE 1 CA dex 0079BF 1 10 F4 bpl L79B5 0079C1 1 38 sec 0079C2 1 60 L79C2: rts 0079C3 1 ; 0079C3 1 20 C7 79 L79C3: jsr L79C7 0079C6 1 8A txa 0079C7 1 48 L79C7: pha 0079C8 1 4A lsr a 0079C9 1 4A lsr a 0079CA 1 4A lsr a 0079CB 1 4A lsr a 0079CC 1 20 D0 79 jsr L79D0 0079CF 1 68 pla 0079D0 1 29 0F L79D0: and #$0F 0079D2 1 09 30 ora #$30 0079D4 1 C9 3A cmp #$3A 0079D6 1 90 02 bcc L79DA 0079D8 1 69 06 adc #$06 0079DA 1 4C 5A 04 L79DA: jmp VOUTP1 ; output a character to Display 0079DD 1 ; 0079DD 1 A9 1B L79DD: lda #$1B ; point to "ERRORS " message 0079DF 1 20 8B 7B jsr OUTMES ; output message 0079E2 1 20 7E 04 jsr VWHERO ; Sets up the Active Output Device and loads OUTFLG 0079E5 1 4C 24 04 jmp VCRLOW ; output CR and LF to Display/Printer 0079E8 1 ; 0079E8 1 ; *** Command L - Load with Offset *** 0079E8 1 A9 FF COMNDL: lda #$FF 0079EA 1 85 1E sta $1E 0079EC 1 D0 14 bne L7A02 0079EE 1 ; 0079EE 1 ; *** Command F - ? *** 0079EE 1 A9 00 COMNDF: lda #$00 0079F0 1 85 1E sta $1E 0079F2 1 85 1F sta $1F 0079F4 1 20 24 04 jsr VCRLOW ; output CR and LF to Display/Printer 0079F7 1 A9 1B lda #$1B ; point to "ERRORS " message 0079F9 1 20 8B 7B jsr OUTMES ; output message 0079FC 1 20 7E 04 jsr VWHERO ; set up the Active Output Device and loads OUTFLG 0079FF 1 20 24 04 jsr VCRLOW ; output CR and LF to Display/Printer 007A02 1 20 D6 7A L7A02: jsr L7AD6 007A05 1 20 24 04 jsr VCRLOW ; output CR and LF to Display/Printer 007A08 1 20 7B 04 jsr VWHERI ; sets up the Active Input Device and loads INFLG 007A0B 1 20 1E 04 jsr VCRCK ; output Printer Buffer to Printer 007A0E 1 20 33 04 L7A0E: jsr VINALL ; input one ASCII character from Active Input Device to A 007A11 1 C9 3B cmp #$3B 007A13 1 D0 F9 bne L7A0E 007A15 1 20 18 04 jsr VCLRCK ; clear CKSUM 007A18 1 20 0C 04 jsr VCHEKAR ; add to checksum 007A1B 1 AA tax 007A1C 1 20 0C 04 jsr VCHEKAR ; add to checksum 007A1F 1 48 pha 007A20 1 20 0C 04 jsr VCHEKAR ; add to checksum 007A23 1 18 clc 007A24 1 65 19 adc $19 007A26 1 8D 1C A4 sta ADDR ; end address 007A29 1 68 pla 007A2A 1 65 1A adc $1A 007A2C 1 8D 1D A4 sta ADDR+1 ; end address+1 007A2F 1 8A txa 007A30 1 F0 2A beq L7A5C 007A32 1 20 66 04 L7A32: jsr VRBYTE ; input two ASCII characters from Active Input Device: if hex, converts to binary with results in A 007A35 1 20 62 7A jsr L7A62 007A38 1 CA dex 007A39 1 D0 F7 bne L7A32 007A3B 1 20 66 04 jsr VRBYTE ; input two ASCII characters from Active Input Device: if hex, converts to binary with results in A 007A3E 1 CD 1F A4 cmp $A41F 007A41 1 D0 08 bne L7A4B 007A43 1 20 66 04 jsr VRBYTE ; input two ASCII characters from Active Input Device: if hex, converts to binary with results in A 007A46 1 CD 1E A4 cmp CKSUM ; checksum 007A49 1 F0 C3 beq L7A0E 007A4B 1 20 21 04 L7A4B: jsr VCRLF ; output CR, LF & NUL to Active Output Device 007A4E 1 A9 1D lda #$1D ; point to "CHECKSUM ERROR" message 007A50 1 20 8B 7B jsr OUTMES ; output message 007A53 1 20 3F 04 jsr VLL ; set I/O to terminal 007A56 1 20 CA 7A jsr L7ACA 007A59 1 4C 83 7B jmp L7B83 007A5C 1 ; 007A5C 1 20 24 04 L7A5C: jsr VCRLOW ; output CR LF to Display/Printer 007A5F 1 4C 83 7B jmp L7B83 007A62 1 ; 007A62 1 24 1E L7A62: bit $1E 007A64 1 10 03 bpl L7A69 007A66 1 4C 72 04 jmp VSTBYT ; store and check memory fail 007A69 1 ; 007A69 1 20 09 04 L7A69: jsr VCHEKA ; add to checksum 007A6C 1 8D 06 01 sta $0106 007A6F 1 A9 1C lda #$1C 007A71 1 A0 00 ldy #$00 007A73 1 20 3C 04 jsr VLDAY ; simulate lda (n),y without Page Zero 007A76 1 CD 06 01 cmp $0106 007A79 1 F0 46 beq L7AC1 007A7B 1 8D 07 01 sta $0107 007A7E 1 8A txa 007A7F 1 48 pha 007A80 1 AD 06 01 lda $0106 007A83 1 48 pha 007A84 1 AD 07 01 lda $0107 007A87 1 48 pha 007A88 1 24 1F bit $1F 007A8A 1 30 0A bmi L7A96 007A8C 1 20 24 04 jsr VCRLOW ; output CR LF to Display/Printer 007A8F 1 A9 1C lda #$1C ; point to "ADDR RAM ADDR FILE" message 007A91 1 20 8B 7B jsr OUTMES ; output message 007A94 1 C6 1F dec $1F 007A96 1 AD 1D A4 L7A96: lda ADDR+1 ; end address+1 007A99 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 007A9C 1 AD 1C A4 lda ADDR ; end address 007A9F 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 007AA2 1 20 06 04 jsr VBLANK2 ; output two Spaces to Display/Printer 007AA5 1 68 pla 007AA6 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 007AA9 1 20 03 04 jsr VBLANK ; output one Space to Display/Printer 007AAC 1 20 06 04 jsr VBLANK2 ; output two Spaces to Display/Printer 007AAF 1 20 CA 7A jsr L7ACA 007AB2 1 20 06 04 jsr VBLANK2 ; output two Spaces to Display/Printer 007AB5 1 68 pla 007AB6 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 007AB9 1 20 21 04 jsr VCRLF ; output CR, LF & NUL to Active Output Device 007ABC 1 20 F1 78 jsr L78F1 007ABF 1 68 pla 007AC0 1 AA tax 007AC1 1 EE 1C A4 L7AC1: inc ADDR ; end address 007AC4 1 D0 03 bne L7AC9 007AC6 1 EE 1D A4 inc ADDR+1 ; end address+1 007AC9 1 60 L7AC9: rts 007ACA 1 ; 007ACA 1 AD 1D A4 L7ACA: lda ADDR+1 ; end address+1 007ACD 1 20 45 04 jsr VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device 007AD0 1 AD 1C A4 lda ADDR ; end address 007AD3 1 4C 45 04 jmp VNUMA ; convert two hex numbers in A from binary to ASCII and outputs to Active Output Device ; converts two hex numbers in A from binary to ASCII and outputs to Active Output Device 007AD6 1 ; 007AD6 1 A9 1F L7AD6: lda #$1F ; point to " OFFSET" message 007AD8 1 20 8B 7B jsr OUTMES ; output message 007ADB 1 A9 00 lda #$00 007ADD 1 AA tax 007ADE 1 20 51 78 jsr L7851 007AE1 1 85 19 sta $19 007AE3 1 86 1A stx $1A 007AE5 1 60 rts 007AE6 1 ; 007AE6 1 ; *** Command D - Dump with Offset *** 007AE6 1 A9 00 COMNDD: lda #$00 007AE8 1 8D 06 01 sta $0106 007AEB 1 8D 07 01 sta $0107 007AEE 1 85 1E sta $1E 007AF0 1 20 24 04 L7AF0: jsr VCRLOW ; output CR LF to Display/Printer 007AF3 1 20 03 78 jsr L7803 007AF6 1 20 D6 7A jsr L7AD6 007AF9 1 A5 0A lda $0A 007AFB 1 8D 1A A4 sta S1 ; start address 007AFE 1 A5 0B lda $0B 007B00 1 8D 1B A4 sta S1+1 ; start address+1 007B03 1 E6 0C inc $0C 007B05 1 D0 02 bne L7B09 007B07 1 E6 0D inc $0D 007B09 1 20 24 04 L7B09: jsr VCRLOW ; output CR LF to Display/Printer 007B0C 1 A5 1E lda $1E 007B0E 1 D0 05 bne L7B15 007B10 1 E6 1E inc $1E 007B12 1 20 7E 04 jsr VWHERO ; set up the Active Output Device and loads OUTFLG 007B15 1 20 21 04 L7B15: jsr VCRLF ; output CR, LF & NUL to Active Output Device 007B18 1 20 F1 78 jsr L78F1 007B1B 1 20 18 04 jsr VCLRCK ; clear CKSUM 007B1E 1 A5 0C lda $0C 007B20 1 38 sec 007B21 1 ED 1A A4 sbc S1 ; start address 007B24 1 48 pha 007B25 1 A5 0D lda $0D 007B27 1 ED 1B A4 sbc S1+1 ; start address+1 007B2A 1 D0 09 bne L7B35 007B2C 1 68 pla 007B2D 1 F0 44 beq L7B73 007B2F 1 C9 18 cmp #$18 007B31 1 90 05 bcc L7B38 007B33 1 B0 01 bcs L7B36 007B35 1 68 L7B35: pla 007B36 1 A9 18 L7B36: lda #$18 007B38 1 48 L7B38: pha 007B39 1 A9 3B lda #$3B 007B3B 1 20 4B 04 jsr VOUTAL ; output ASCII character in A to Active Output Device 007B3E 1 68 pla 007B3F 1 85 1D sta $1D 007B41 1 20 4E 04 jsr VOUTCK ; add to checksum and print 007B44 1 18 clc 007B45 1 AD 1A A4 lda S1 ; start address 007B48 1 65 19 adc $19 007B4A 1 48 pha 007B4B 1 AD 1B A4 lda S1+1 ; start address+1 007B4E 1 65 1A adc $1A 007B50 1 20 4E 04 jsr VOUTCK ; add to checksum and print 007B53 1 68 pla 007B54 1 20 4E 04 jsr VOUTCK ; add to checksum and print 007B57 1 20 51 04 L7B57: jsr VOUTCS ; get character specified by start address (S1) 007B5A 1 20 00 04 jsr VADDS1 ; add one to start address (S1) 007B5D 1 C6 1D dec $1D 007B5F 1 D0 F6 bne L7B57 007B61 1 AD 1F A4 lda $A41F 007B64 1 20 54 04 jsr VOUTC1 ; output checksum 007B67 1 AD 1E A4 lda CKSUM ; checksum 007B6A 1 20 54 04 jsr VOUTC1 ; output checksum 007B6D 1 20 36 04 jsr VINCS2 ; increment vertical count 007B70 1 4C 15 7B jmp L7B15 007B73 1 ; 007B73 1 20 15 04 L7B73: jsr VCLR ; clear Display/Printer pointers 007B76 1 A9 1E lda #$1E ; point to "MORE?" message 007B78 1 20 47 74 jsr L7447 007B7B 1 D0 03 bne L7B80 007B7D 1 4C F0 7A jmp L7AF0 007B80 1 ; 007B80 1 20 6F 04 L7B80: jsr VDU10B ; output last record 007B83 1 A9 04 L7B83: lda #$04 007B85 1 8D 00 A8 sta $A800 007B88 1 4C 3F 04 jmp VLL ; set I/O to terminal 007B8B 1 ; 007B8B 1 ; *** Output Message *** 007B8B 1 85 11 OUTMES: sta $11 ; pointer to message 007B8D 1 A9 C2 lda #MESTAB 007B93 1 85 03 sta $03 007B95 1 A0 00 ldy #$00 ; start searching at beginning of Message Table 007B97 1 B1 02 MESRCH: lda ($02),y 007B99 1 48 pha 007B9A 1 E6 02 inc $02 ; increment table pointer 007B9C 1 D0 02 bne NOINC 007B9E 1 E6 03 inc $03 007BA0 1 68 NOINC: pla 007BA1 1 10 F4 bpl MESRCH ; search until we get a negative value (end of message) 007BA3 1 C6 11 dec $11 ; then decrement the message pointer 007BA5 1 D0 F0 bne MESRCH ; until that gets to zero then we have found the required message ! 007BA7 1 B1 02 NXTCHR: lda ($02),y ; get message 007BA9 1 48 pha 007BAA 1 29 7F and #$7F ; mask off MSB in case its the last character which will be negative 007BAC 1 20 5D 04 jsr VOUTPT ; output ASCII character in A to Display/Printer 007BAF 1 C8 iny 007BB0 1 68 pla 007BB1 1 10 F4 bpl NXTCHR ; if character was negative then we are finished otherwise keep going 007BB3 1 60 rts 007BB4 1 ; 007BB4 1 ; *** Command ? - Display Menu *** 007BB4 1 A0 00 COMNDQ: ldy #$00 007BB6 1 B9 CA 7D OUTMNU: lda PRCMDS,y 007BB9 1 F0 06 beq L7BC1 007BBB 1 20 5D 04 jsr VOUTPT ; output ASCII character in A to Display/Printer 007BBE 1 C8 iny 007BBF 1 D0 F5 bne OUTMNU 007BC1 1 60 L7BC1: rts 007BC2 1 ; 007BC2 1 MESTAB: ; Table of Messages 007BC2 1 80 .byte $80 007BC3 1 50 52 4F 4D .byte "PROM PROGRAMMER V1.0",CR+$80,$80,CR ; $01 - start-up message 007BC7 1 20 50 52 4F 007BCB 1 47 52 41 4D 007BDA 1 49 4D 50 52 .byte "IMPROPERLY INSERTED",CR 007BDE 1 4F 50 45 52 007BE2 1 4C 59 20 49 007BEE 1 50 52 45 53 .byte "PRESS A KEY TO G",'O'+$80 ; $03 007BF2 1 53 20 41 20 007BF6 1 4B 45 59 20 007BFF 1 20 20 41 52 .byte " AR LOW",'?'+$80 ; $04 007C03 1 20 4C 4F 57 007C07 1 BF 007C08 1 0D 41 44 44 .byte CR,"ADDRESS PROM RAM",CR+$80 ; $05 007C0C 1 52 45 53 53 007C10 1 20 50 52 4F 007C1A 1 20 4E 45 47 .byte " NEGATIVE RANG",'E'+$80 ; $06 007C1E 1 41 54 49 56 007C22 1 45 20 52 41 007C29 1 20 52 41 4E .byte " RANGE TOO LARG",'E'+$80 ; $07 007C2D 1 47 45 20 54 007C31 1 4F 4F 20 4C 007C39 1 45 50 52 4F .byte "EPROM NUMBER?",SPACE+$80 ; $08 007C3D 1 4D 20 4E 55 007C41 1 4D 42 45 52 007C47 1 0D 20 2A 2A .byte CR," ** ERROR **",CR,CR ; $09 007C4B 1 20 45 52 52 007C4F 1 4F 52 20 2A 007C56 1 53 55 50 50 .byte "SUPPORTED EPROMS",CR 007C5A 1 4F 52 54 45 007C5E 1 44 20 45 50 007C67 1 32 35 30 38 .byte "2508 2758 2758L",CR 007C6B 1 20 32 37 35 007C6F 1 38 20 32 37 007C77 1 32 37 31 36 .byte "2716",CR 007C7B 1 0D 007C7C 1 32 35 33 32 .byte "2532 2732 2732A",CR 007C80 1 20 32 37 33 007C84 1 32 20 32 37 007C8C 1 32 35 36 34 .byte "2564 2764 68764",CR,CR 007C90 1 20 32 37 36 007C94 1 34 20 36 38 007C9D 1 53 55 50 50 .byte "SUPPORTED EEPROMS",CR 007CA1 1 4F 52 54 45 007CA5 1 44 20 45 45 007CAF 1 32 38 31 36 .byte "2816 5213 48016",CR+$80 007CB3 1 20 35 32 31 007CB7 1 33 20 34 38 007CBF 1 4E 4F 54 20 .byte "NOT INITIALIZE",'D'+$80 ; $0A 007CC3 1 49 4E 49 54 007CC7 1 49 41 4C 49 007CCE 1 20 43 4F 4E .byte " CONTINUE",'?'+$80 ; $0B 007CD2 1 54 49 4E 55 007CD6 1 45 BF 007CD8 1 20 43 48 45 .byte " CHECKSUM",'='+$80 ; $0C 007CDC 1 43 4B 53 55 007CE0 1 4D BD 007CE2 1 46 52 4F 4D .byte "FROM",'='+$80 ; $0D 007CE6 1 BD 007CE7 1 20 54 4F BD .byte " TO",'='+$80 ; $0E 007CEB 1 20 49 4E 56 .byte " INVERT MEMOR",'Y'+$80 ; $0F 007CEF 1 45 52 54 20 007CF3 1 4D 45 4D 4F 007CF9 1 20 53 45 54 .byte " SET MEMORY TO =",SPACE+$80 ; $10 007CFD 1 20 4D 45 4D 007D01 1 4F 52 59 20 007D0A 1 20 44 4F 4E .byte " DONE",CR+$80 ; $11 007D0E 1 45 8D 007D10 1 20 20 32 37 .byte " 2732A ",'?'+$80 ; $12 007D14 1 33 32 41 20 007D18 1 BF 007D19 1 2C 20 55 53 .byte ", USE UV LAMP",'!'+$80 ; $13 007D1D 1 45 20 55 56 007D21 1 20 4C 41 4D 007D27 1 20 20 41 52 .byte " ARE YOU SURE",'?'+$80 ; $14 007D2B 1 45 20 59 4F 007D2F 1 55 20 53 55 007D36 1 0D 56 45 52 .byte CR,"VERIFYING",CR+$80 ; $15 007D3A 1 49 46 59 49 007D3E 1 4E 47 8D 007D41 1 0D 20 56 45 .byte CR," VERIFY AFTER PROG",'.'+$80 ; $16 007D45 1 52 49 46 59 007D49 1 20 41 46 54 007D55 1 0D 20 56 45 .byte CR," VERIFY WHILE PROG",'.'+$80 ; $17 007D59 1 52 49 46 59 007D5D 1 20 57 48 49 007D69 1 20 20 49 4E .byte " INVALID BIT CHANGE AT",SPACE+$80 ; $18 007D6D 1 56 41 4C 49 007D71 1 44 20 42 49 007D81 1 0D 55 53 45 .byte CR,"USER DRIVE",'R'+$80 ; $19 007D85 1 52 20 44 52 007D89 1 49 56 45 D2 007D8D 1 20 53 45 4C .byte " SELECTE",'D'+$80 ; $1A 007D91 1 45 43 54 45 007D95 1 C4 007D96 1 45 52 52 4F .byte "ERRORS",SPACE+$80 ; $1B 007D9A 1 52 53 A0 007D9D 1 41 44 44 52 .byte "ADDR RAM ADDR FIL",'E'+$80 ; $1C 007DA1 1 20 52 41 4D 007DA5 1 20 41 44 44 007DAF 1 43 48 45 43 .byte "CHECKSUM ERRO",'R'+$80 ; $1D 007DB3 1 4B 53 55 4D 007DB7 1 20 45 52 52 007DBD 1 4D 4F 52 45 .byte "MORE",'?'+$80 ; $1E 007DC1 1 BF 007DC2 1 20 4F 46 46 .byte " OFFSET",'='+$80 ; $1F 007DC6 1 53 45 54 BD 007DCA 1 ; 007DCA 1 ; PROM Commands 007DCA 1 0D 0D 20 20 PRCMDS: .byte CR,CR," PROM COMMANDS",CR,CR 007DCE 1 20 50 52 4F 007DD2 1 4D 20 43 4F 007DDE 1 20 43 20 20 .byte " C CHECK PROM",CR 007DE2 1 43 48 45 43 007DE6 1 4B 20 50 52 007DED 1 20 50 20 20 .byte " P PROGRAM PROM",CR 007DF1 1 50 52 4F 47 007DF5 1 52 41 4D 20 007DFE 1 20 52 20 20 .byte " R READ PROM",CR 007E02 1 52 45 41 44 007E06 1 20 50 52 4F 007E0C 1 20 56 20 20 .byte " V VERIFY PROM",CR 007E10 1 56 45 52 49 007E14 1 46 59 20 50 007E1C 1 20 45 20 20 .byte " E ERASE EEPROM",CR 007E20 1 45 52 41 53 007E24 1 45 20 45 45 007E2D 1 20 4E 20 20 .byte " N CHANGE PROM TYPE",CR 007E31 1 43 48 41 4E 007E35 1 47 45 20 50 007E42 1 20 54 20 20 .byte " T TOGGLE VERIFY ",CR 007E46 1 54 4F 47 47 007E4A 1 4C 45 20 56 007E55 1 20 41 20 20 .byte " A ALTER MEMORY",CR 007E59 1 41 4C 54 45 007E5D 1 52 20 4D 45 007E66 1 20 49 20 20 .byte " I INVERT MEMORY",CR 007E6A 1 49 4E 56 45 007E6E 1 52 54 20 4D 007E78 1 20 53 20 20 .byte " S CHECKSUM MEMORY",CR 007E7C 1 43 48 45 43 007E80 1 4B 53 55 4D 007E8C 1 20 3F 20 20 .byte " ? DISPLAY MENU",CR 007E90 1 44 49 53 50 007E94 1 4C 41 59 20 007E9D 1 20 58 20 20 .byte " X EXIT",CR 007EA1 1 45 58 49 54 007EA5 1 0D 007EA6 1 00 .byte $00 ; end of Commands 007EA7 1 ; 007EA7 1 ; Table of redirections to Monitor subroutines 007EA7 1 4C 5D E5 MONJMP: jmp ADDS1 ; Add one to start address (S1) 007EAA 1 4C 3E E8 jmp BLANK ; Outputs one Space to Display/Printer 007EAD 1 4C 3B E8 jmp BLANK2 ; Outputs two P's to Display/Printer 007EB0 1 4C 4E E5 jmp CHEKA ; Add to checksum 007EB3 1 4C 4B E5 jmp CHEKAR ; Add to checksum 007EB6 1 4C A0 E2 jmp CHNGG ; Monitor / Command - Alter Memory 007EB9 1 4C 94 E6 jmp VECKSM ; Monitor 3 Command - Verify Tapes 007EBC 1 4C 44 EB jmp CLR ; Clears Display/Printer pointers 007EBF 1 4C 4D EB jmp CLRCK ; Clear CKSUM 007EC2 1 4C A1 E1 jmp COMIN ; Re-enter command interpreter 007EC5 1 4C 24 EA jmp CRCK ; Outputs Printer Buffer to Printer 007EC8 1 4C F0 E9 jmp CRLF ; Outputs CR, LF & NUL to Active Output Device 007ECB 1 4C 13 EA jmp CRLOW ; Outputs CR and LF to Display/Printer 007ECE 1 4C 96 FE jmp RED1 ; Inputs one character from Keyboard to A, with echo to Display/Printer 007ED1 1 4C 0F EC jmp DELAY ; Delay 1-bit time as given by baud rate 007ED4 1 4C 40 EC jmp GETKEY ; Get a character from keyboard 007ED7 1 4C DB EB jmp GETTTY ; Get a character from TTY into A (saves X) 007EDA 1 4C 93 E9 jmp INALL ; Inputs one ASCII character from Active Input Device to A 007EDD 1 4C 66 E5 jmp INCS2 ; Increment vertical count 007EE0 1 4C 0A E7 jmp KDISA ; Monitor K Command - Disassemble Memory 007EE3 1 4C 58 EB jmp LDAY ; Simulates lda (n),y without Page Zero 007EE6 1 4C FE E8 jmp LL ; Set I/O to terminal 007EE9 1 4C 48 E2 jmp MEM ; Monitor M Command - Display Memory 007EEC 1 4C 46 EA jmp NUMA ; Converts two hex numbers in A from binary to ASCII and outputs to Active Output Device 007EEF 1 4C 0D E6 jmp NXT5 ; Monitor SPACE Command - show next 5 memory locations 007EF2 1 4C BC E9 jmp OUTALL ; Outputs ASCII character in A to Active Output Device 007EF5 1 4C 38 E5 jmp OUTCK ; Add to checksum and print 007EF8 1 4C 31 E5 jmp OUTCKS ; Get character specified by start address (S1) 007EFB 1 4C 3B E5 jmp OUTCK1 ; Output checksum 007EFE 1 4C 7B EF jmp OUTDD1 ; Convert X into real address for Display and output it 007F01 1 4C 02 EF jmp OUTDP1 ; Output a character to Display 007F04 1 4C 7A E9 jmp OUTPUT ; Outputs ASCII character in A to Display/Printer 007F07 1 4C 3D FF jmp PATC18 ; Reset PRIFLG 007F0A 1 4C DC E7 jmp PSLS ; On delete key output slash if TTY & backup cursor if keyboard 007F0D 1 4C FD E3 jmp RBYTE ; Inputs two ASCII characters from Active Input Device: if hex, converts to binary with results in A 007F10 1 4C EF EC jmp ROONEK ; Wait if last key still down (rollover) 007F13 1 4C 78 EB jmp SADDR ; Subroutine store at ADDR and compare without page zero 007F16 1 4C EB E4 jmp DU10B ; Output last record 007F19 1 4C 13 E4 jmp STBYTE ; Store and Check Memory Fail 007F1C 1 4C BD E6 jmp TOGTA1 ; Monitor 1 Command - Toggle Tape 1 Control 007F1F 1 4C CB E6 jmp TOGTA2 ; Monitor 2 Command - Toggle Tape 2 Control 007F22 1 4C 48 E8 jmp WHEREI ; Sets up the Active Input Device and loads INFLG 007F25 1 4C 71 E8 jmp WHEREO ; Sets up the Active Output Device and loads OUTFLG 007F28 1 4C 42 EA jmp WRAX ; Write A then X in ASCII to the output device 007F2B 1 ; 007F2B 1 ; *** PROM Configuration Data *** 007F2B 1 ; byte 1 - Size ? 007F2B 1 ; byte 2 - ? bit 6 tested ? 007F2B 1 ; byte 3 - ? bits 6 and 7 tested ? 007F2B 1 ; byte 4 - ? 007F2B 1 ; byte 5 - ? 007F2B 1 ; byte 6 - ? 007F2B 1 ; byte 7 - ? 007F2B 1 ; byte 8 - ? written to $7000 latch Programming voltage 007F2B 1 ; byte 9 - ? bit 7 tested 68764 007F2B 1 ; byte 10 - ? bits 6 and 7 tested bit 7=EPROM ? 007F2B 1 ; byte 11 - ? bits 6 and 7 tested bit 7=EEPROM ? 007F2B 1 ; byte 12 - ? 68764 only ? 007F2B 1 ; 007F2B 1 ; 1 2 3 4 5 6 7 8 9 10 11 12 007F2B 1 03 9C 40 00 L7F2B: .byte $03,$9C,$40,$00,$34,$8A,$11,$FA,$00,$F8,$00,$00 ; 2508 1K EPROM 007F2F 1 34 8A 11 FA 007F33 1 00 F8 00 00 007F37 1 07 9C 40 08 .byte $07,$9C,$40,$08,$34,$8A,$11,$FA,$00,$F8,$00,$00 ; 2716 2K EPROM 007F3B 1 34 8A 11 FA 007F3F 1 00 F8 00 00 007F43 1 07 9C 40 08 .byte $07,$9C,$40,$08,$34,$80,$81,$D2,$00,$96,$81,$00 ; 2816 2K EEPROM 007F47 1 34 80 81 D2 007F4B 1 00 96 81 00 007F4F 1 0F 98 40 18 .byte $0F,$98,$40,$18,$14,$09,$09,$FA,$00,$F8,$00,$00 ; 2532 4K EPROM 007F53 1 14 09 09 FA 007F57 1 00 F8 00 00 007F5B 1 0F 8C 80 28 .byte $0F,$8C,$80,$28,$1B,$0C,$05,$FA,$00,$F8,$00,$00 ; 2732 4K EPROM 007F5F 1 1B 0C 05 FA 007F63 1 00 F8 00 00 007F67 1 0F 8C 80 28 .byte $0F,$8C,$80,$28,$1B,$0C,$05,$D2,$00,$F8,$00,$00 ; 2732A 4K EPROM 007F6B 1 1B 0C 05 D2 007F6F 1 00 F8 00 00 007F73 1 1F EB 40 58 .byte $1F,$EB,$40,$58,$D4,$39,$09,$FA,$00,$F8,$00,$00 ; 2564 8K EPROM 007F77 1 D4 39 09 FA 007F7B 1 00 F8 00 00 007F7F 1 1F 6D 40 A8 .byte $1F,$6D,$40,$A8,$34,$88,$43,$D2,$00,$F8,$00,$00 ; 2764 8K EPROM 007F83 1 34 88 43 D2 007F87 1 00 F8 00 00 007F8B 1 03 9C 40 08 .byte $03,$9C,$40,$08,$34,$8A,$11,$FA,$00,$F8,$00,$00 ; 2758 1K EPROM 007F8F 1 34 8A 11 FA 007F93 1 00 F8 00 00 007F97 1 03 9C 40 08 .byte $03,$9C,$40,$08,$34,$8A,$11,$FA,$80,$F8,$00,$00 ; 2758L 1K EPROM 007F9B 1 34 8A 11 FA 007F9F 1 80 F8 00 00 007FA3 1 07 9C 40 08 .byte $07,$9C,$40,$08,$34,$88,$01,$D2,$00,$96,$81,$00 ; 5213 2K EEPROM 007FA7 1 34 88 01 D2 007FAB 1 00 96 81 00 007FAF 1 07 98 40 08 .byte $07,$98,$40,$08,$14,$0A,$11,$FA,$00,$3F,$80,$00 ; 48016 2K EEPROM 007FB3 1 14 0A 11 FA 007FB7 1 00 3F 80 00 007FBB 1 1F 88 80 58 .byte $1F,$88,$80,$58,$14,$00,$21,$FA,$40,$0A,$00,$07 ; 68764 8K EPROM 007FBF 1 14 00 21 FA 007FC3 1 40 0A 00 07 007FC7 1 ; 007FC7 1 03 00 00 00 .byte $03,$00,$00,$00,$00,$00,$00,$32,$00,$02,$00,$00 ; 007FCB 1 00 00 00 32 007FCF 1 00 02 00 00 007FD3 1 ; 007FD3 1 ; *** First part of PROM types *** 007FD3 1 25 PRTYP1: .byte $25 ; '2508' EPROM (1K) 007FD4 1 27 .byte $27 ; '2716' EPROM (2K) 007FD5 1 28 .byte $28 ; '2816' EEPROM (2K) 007FD6 1 25 .byte $25 ; '2532' EPROM (4K) 007FD7 1 27 .byte $27 ; '2732' EPROM (4K) 007FD8 1 27 .byte $27 ; '2732A' EPROM (4K) 007FD9 1 25 .byte $25 ; '2564' EPROM (8K) 007FDA 1 27 .byte $27 ; '2764' EPROM (8K) 007FDB 1 27 .byte $27 ; '2758' EPROM (1K) 007FDC 1 27 .byte $27 ; '2758L' EPROM (1K) 007FDD 1 52 .byte $52 ; '5213' EEPROM (2K) 007FDE 1 48 .byte $48 ; '48016' EEPROM (2K) 007FDF 1 68 .byte $68 ; '68764' EPROM (8K) 007FE0 1 ; 007FE0 1 ; *** Second part of PROM types *** 007FE0 1 08 PRTYP2: .byte $08 007FE1 1 16 .byte $16 007FE2 1 16 .byte $16 007FE3 1 32 .byte $32 007FE4 1 32 .byte $32 007FE5 1 32 .byte $32 007FE6 1 64 .byte $64 007FE7 1 64 .byte $64 007FE8 1 58 .byte $58 007FE9 1 58 .byte $58 007FEA 1 13 .byte $13 007FEB 1 01 .byte $01 007FEC 1 76 .byte $76 007FED 1 ; 007FED 1 ; *** Third part of PROM types *** 007FED 1 20 PRTYP3: .byte SPACE 007FEE 1 20 .byte SPACE 007FEF 1 20 .byte SPACE 007FF0 1 20 .byte SPACE 007FF1 1 20 .byte SPACE 007FF2 1 41 .byte 'A' 007FF3 1 20 .byte SPACE 007FF4 1 20 .byte SPACE 007FF5 1 20 .byte SPACE 007FF6 1 4C .byte 'L' 007FF7 1 20 .byte SPACE 007FF8 1 36 .byte '6' 007FF9 1 34 .byte '4' 007FFA 1 ; 007FFA 1 FF FF FF FF .byte $FF,$FF,$FF,$FF,$FF,$D4 ; packing ? 007FFE 1 FF D4 007FFF 1