home *** CD-ROM | disk | FTP | other *** search
- ;
- ; THIS PROGRAM PROGRAMS PROMS ON THE OPTIMAL TECHNOLOGY EP-2A
- ; PROM PROGRAMMER, USING OASIS ABSOLUTE FILES AS THE SOURCE.
- ; ALL PROGRAMS MUST BE ORG'D ON A PAGE BOUNDRY (ADDRESS = XX00)
- ; IF A PROGRAM DOESNT FILL PROM REMAINDER IS LEFT IN ERASED STATE.
- ;
- ; THE INTERFACE IS A SPECIAL CARD USING AN 8212 PIO.
- ; CONTROL BITS ARE GENERATED USING A 74259 ADDRESSABLE LATCH
- ; B0 = CLOCK, B1 = RESET, B2 = CS*, B3 = VP.
- ; 31H DATA PORT PROGRAMMER DATA PORT
- ; 30H CONTROL PORT
- ;
- EXTRN LINEIN ;LINE INPUT SUBROUTINE
- DATA: EQU 31H ;DATA PORT
- CONT: EQU 30H ;CONTROL PORT
- RESET: EQU 0 ;CLOCK COMMAND
- CS: EQU 1 ;SELECT COMMAND
- VP: EQU 3 ;PROGRAM PULSE COMMAND
- SET: EQU 10H ;MODIFY COMMAND TO SET BIT, NOT CLEAR
- CLR: EQU 0FH ;MODIFY COMMAND TO CLEAR BIT
- ;
- ;***************************************************************************
- ; ON ENTRY INITIALIZE PROGRAMMER
- ;***************************************************************************
- ;
- PROMPROG:
- LD A,CLOCK ;CLOCK BIT
- OUT (CONT),A ;RESET CLOCK BIT
- LD A,RESET ;RESET BIT
- CALL PULSE
- LD A,CS ;CHIP SELECT
- OUT (CONT),A ;SET FOR READ PROM
- LD A,VP ;PROGRAM PULSE
- OUT (CONT),A ;CLEAR VP
- ;
- ;***************************************************************************
- ; CLEAR THE SCREEN AND FIND OUT TYPE OF PROM BEING USED
- ;***************************************************************************
- ;
- PTYPE:
- LD DE,MSG1 ;DISPLAY TYPES OF PROMS
- SC 2 ;CHANGE THIS
- LD B,1 ;NO OF CHAR TO ACCEPT
- LD BE,PROM ;PROM TYPE
- LD A,20H ;BLANK TYPE
- LD (DE),A
- CALL LINEIN ;GET TYPE
- JR C,PTYPE ;ABNORMAL RETURN
- LD A,(PROM) ;CHECK FOR VALID TYPE AND CONVERT FROM ASCII
- SUB 31H ;0-6 RANGE
- JP C,PTYPE ;NOT NUMERIC
- CP 7 ;SEE IF TOO BIG
- JP NC,PTYPE
- LD (PROM),A ;STORE
- ;
- ;***************************************************************************
- ; DISPLAY TYPE AND COMMAND CODES
- ;***************************************************************************
- ;
- LD DE,MSG2 ;PROM TYPE
- SC 2 ;CHANGE THIS
- LD D,0 ;CREATE INDEX INTO PROM TYPE TABLE
- LD HL,MSG3 ;BASE
- LD A,(PROM) ;PROM TYPE
- LD B,A ;SAVE COPY
- SLA A ;
- SLA A ;
- SLA A ;
- LD E,A ;MOVE TO HL
- ADD HL,DE ;BASE PLUS OFFSET
- LD E,B ;ADD ONE MORE
- ADD HL,DE ;NOW BASE + 9*(PROM.TYPE-1)
- EX DE,HL ;READY FOR SYSTEM CALL
- SC 2 ;CHANGE THIS
- LD DE,MSG4 ;DISPLAY COMMANDS
- SC 2 ;CHANGE THIS
- ;
- ; COMPUTE PROM SIZE
- ;
- LD A,(PROM) ;GET PROM TYPE
- LD B,A ;SAVE IT
- SLA A ;MULTIPLY BY 3
- ADD B ;
- LD E,A ;MAKE 16 BIT
- LD D,0 ;
- LD HL,PARAM ;PARAMETER TABLE START
- ADD HL,DE ;POINTER
- LD A,(HL) ;GET SIZE
- LD (SIZE+1),A ;STORE FOR RETRIEVAL
- ;
- ; GET PROGRAM PARAMETERS
- ;
- INC HL ;POINT TO LOOP COUNT
- LD A,(HL) ;
- LD (LOOPCNT),A ;STORE
- INC HL ;POINT TO DELAY COUNT
- LD A,(HL) ;
- LD (DELCNT),A ;STORE
- ;
- ;***************************************************************************
- ; GET COMMAND
- ;***************************************************************************
- ;
- CMD:
- LD HL,IBUF ;CLEAR INPUT BUFFER
- LD BC,8 ;
- CALL CLEAR ;CLEAR BUFFER
- LD DE,MSG5 ;DISPLAY COMMAND REQUEST
- SC 2 ;CHANGE THIS
- LD DE,IBUF ;INPUT BUFFER
- LD B,1 ;ONE CHAR ONLY
- CALL LINEIN ;
- JR C,CMD ;ABNORMAL RETURN
- LD DE,IBUF ;GET COMMAND CHAR
- LD A,(DE) ;
- CP 'E' ;ERASE?
- JP Z,ERASE
- CP 'P' ;PROGRAM?
- JP Z,PROG
- CP 'V' ;VERIFY?
- JP Z,VERIFY
- CP 'W' ;WRITE FILE?
- JP Z,WRITE
- CP 'L' ;LOAD?
- JP Z,LOAD
- CP 'R' ;READ?
- JP Z,READ
- CP 'A' ;ALTER?
- JP Z,ALTER
- CP 'D' ;DUMP?
- JP Z,DUMP
- CP 'T' ;NEW TYPE?
- JP Z,PTYPE
- CP 'C' ;CLEAR BUFFER?
- JP Z,CLRBUF
- JP CMD ;INVALID RESPONSE
- ;
- ;***************************************************************************
- ; ERASE CHECK
- ;***************************************************************************
- ;
- ERASE:
- LD A,CS ;IN READ MODE
- OUT (CONT),A
- LD A,RESET ;RESET TO ADDRESS 0000
- CALL PULSE
- LD BC,(SIZE) ;GET PROM SIZE
- LD HL,0 ;CURRENT SIZE
- .CHK:
- IN A,(DATA) ;READ LOC
- CP 0FFH ;ERASED?
- CALL NZ,.BAD ;NO
- CPI ;DEC BC, INC HL
- JP PO,CMD ;DONE
- LD A,CLOCK ;INCREMENT PROM ADDRESS
- CALL PULSE ;
- JP .CHK ;LOOP
- .BAD:
- LD D,0FFH ;ERASE CHECK CHAR
- CALL BAD ;PRINT BAD DATA
- RET C ;NO KEYBOARD INTERRUPT, CONTINUE
- POP DE ;CLEAR RETURN OFF STACK
- JP CMD ;
- BAD:
- PUSH BC ;SAVE REGS
- PUSH AF
- PUSH DE
- LD DE,IBUF ;USE IBUF FOR OUTPUT BUFFER
- LD B,H ;CONVERT TO HEX
- SC 16 ;CHANGE THIS
- LD B,L
- SC 16 ;CHANGE THIS
- LD A,20H ;SPACE CHAR
- LD (DE),A ;
- INC DE
- POP BC ;GET CORRECT VALUE
- SC 16 ;CHANGE THIS
- LD A,20H ;SPACE
- LD (DE),A
- INC DE
- POP BC ;GET PROM VALUE
- SC 16 ;CHANGE THIS
- LD A,0DH ;CRLF
- LD (DE),A
- LD DE,IBUF ;OUTPUT MESSAGE
- SC 2 ;CHANGE THIS
- POP BC ;RESTORE REG
- SC 3 ;CHECK FOR CONSOLE INTERUPT CHANGE THIS
- SCF ;CARRY SET IF NO KEYBOARD INTERUPT
- RET Z ;NO INTERRUPT
- SC 4 ;CLEAR KEYBOARD ;CHANGE THIS
- SCF ;RESET CARRY FLAG
- CCF
- RET ;RETURN WITH CARRY RESET
-
- ;***************************************************************************
- ; PROGRAM PROM
- ;***************************************************************************
-
- PROG:
- LD BC,(CLOCK) ;SETUP INITIAL PARAMETERS
- LD HL,BUFFER
- LD DE,(LOOPCNT) ;LOOP COUNT AND DELAY COUNT
- LD A,RESET
- CALL PULSE
- LD A,CS ;SET PROM FOR WRITE
- OR SET
- OUT (CONT),A
- .LOOP1:
- LD A,(HL) ;OUTPUT CHAR TO PROM
- OUT (DATA),A
- LD A,VP ;PROGRAM PULSE
- OR SET
- OUT (CONT),A ;
- CALL DELAY ;WAIT FOR PULSE TIME
- AND CLR
- OUT (CONT),A ;RESET PROGRAM PULSE
- LD A,CLOCK ;INCREMENT PROM ADDR
- CALL PULSE
- CPI ;DEC BC, INC HL
- JP PE,.LOOP1 ;CONTINUE UNTIL ONE LOOP FINISHED
- LD BC,(SIZE) ;REROM CONTENTS
-
- LD HL,BUFFER
- DEC E ;DECREMENT LOOP COUNT
- JR NZ,.LOOP1 ;DO PROPER NUMBER OF LOOPS
- LD A,CS
- OUT (CONT),A ;RESET PROM PROG FOR READ
- LD A,RESET
- CALL PULSE
- JP VERIFY ;VERIFY AFTER PROGRAMMING
- DELAY:
- PUSH BC ;TEMP SAVE
- PUSH DE ;SAVE NUMBER OF DELAYS AND LOOP COUNT
- .DEL1:
- CALL .DEL2
- DEC D ;COUNT LOOPS
- JR NZ,.DEL1 ;CONTINUE FOR CORRECT NUMBER OF LOOPS
- POP DE ;RESTORE NUMBER OF DELAYS AND LOOP COUNT
- POP BC ;RESTORE REG
- RET
- .DEL2: ;DELAY .75 MS
- LD C,185 ;MINOR DELAY LOOP
- .DEL3:
- DEC C
- JR NZ,.DEL3 ;LOOP FOR .75 MS
- RET
-
- ;**************************************************************************
- ; VERIFY PROM CONTENTS
- ;**************************************************************************
-
- VERIFY:
- LD A,RESET ;RESET ADDRESS COUNTER
- CALL PULSE
- LD BC,(SIZE) ;GET PARAMETERS
- LD HL,BUFFER
- .LOOP:
- IN A,(DATA) ;READ PROM
- CP (HL) ;COMPARE WITH BUFFER
- CALL NZ,.BAD ;PRINT RESULTS IF BAD COMPARE
- CPI ;INCRTMENT POINTERS
- JP PO,CMD ;DONE ?
- LD A,CLOCK ;ADVANCE PROM COUNTERS
- CALL PULSE ;
- JP .LOOP ;LOOP UNTIL FINISHED
- .BAD:
- LD D,(HL) ;SAVE CORRECT VALUE
- PUSH HL ;SAVE BUFFER POINTER
- PUSH DE ;AND VALUE
- LD DE,BUFFER ;MAKE BUFFER POINTER REL ZERO FOR PRINT
- SCF ;CLEAR CARRY
- CCF
- SBC HL,DE
- POP DE ;RESTORE DE
- CALL BAD ;PRINT VALUES
- POP HL ;RESOTER BUFFER POINTER
- RET C ;RETURN IF NO KEYBOARD INTERRUPT
- POP DE ;THROW AWAY RETURN ADDR
- RET
-
- ;***************************************************************************
- ; GET FILE NAME
- ;***************************************************************************
-
- FILE:
- LD HL,DCB ;SETUP THE DIRECTORY CONTROL BLOCK
- LD BC,17 ;17 CHAR LONG
- CALL CLEAR ;CLEAR DCB
- LD DE,MSG6 ;REQUEST FILENAME
- SC 2 ;CHANGE THIS
- LD B,8 ;MAX NAME LENGTH
- LD DE,DCB+1 ;FILENAME AREA OF DCB
- CALL LINEIN ;INPUT A LINE
- JP C,CMD ;ABNORMAL RETURN
- LD DE,MSG7 ;GET FILE TYPE
- SC 2 ;CHANGE THIS
- LD DE,DCB+9 ;DCB LOCATION FOR TYPE
- LD B,8 ;
- CALL LINEIN
- JP C,CMD ;ABNORMAL EXIT
- .GETDRV:
- LD DE,MSG8 ;DISPLAY DRIVE REQUEST
- SC 2 ;CHANGE THIS
- LD DE,DCB ;GET DRIVE
- LD B,1
- CALL LINEIN
- JP C,CMD ;ABNORMAL RETURN
- LD A,C ;SEE IF ANY INPUT
- OR A
- JR Z,.ALL ;SEARCH ALL DRIVES
- LD A,(DE)
- LD B,A
- JR .CONVERT
- .ALL:
- LD B,0FFH ;ALL DRIVES
- .CONVERT:
- SC 25 ;CONVERT TO LOGICAL CODE CHANGE THIS
- JR C,.GETDRV ;CONVERSION ERROR - TRY AGAIN
- LD (DE),A ;STORE VALUE
- LD HL,WORK ;WORK AREA
- SC 20 ;LOOKUP DIRECTORY CHANGE THIS
- JP NZ,NOFIND ;CANT FIND FILE
- LD A,2 ;IS FILE ABSOLUTE ?
- CP (HL)
- JR Z,.AOK ;ABSOLUTE FILE - OK
- LD DE,MSG11
- SC 2 ;OUTPUT ERROR MESSAGE CHANGE THIS
- JP CMD
- .AOK:
- LD DE,DCB ;STORE DRIVE CODE
- LD A,B
- LD (DE),A
- PUSH HL ;MOVE TO IX FOR INDEXING
- POP IX
- LD HL,FILEADDR ;GET START ADDRESS FOR FILE
- LD A,(IX+1EH) ;LSB
- OR A ;IS IT ZERO ?
- JR Z,.BOK ;YES - OK
- LD DE,MSG12 ;ERROR MESSAGE
- SC 2 ;CHANGE THIS
- JP CMD ;GET NEW COMMAND
- .BOK:
- LD A,(IX+1FH) ;MSB
- LD (HL),A ;STORE
- INC HL ;MOVE TO FILE SECTOR ADDRESS
- LD A,(IX+15H)
- LD (HL),A ;SECTOR ADDRESS LSB
- INC HL
- LD A,(IX+16H)
- LD (HL),A ;SECTOR ADDRESS MSB
- INC HL ;MOVE TO FILE SECTOR COUNT
- LD A,(IX+11H)
- LD (HL),A ;SECTOR COUNT LSB
- INC HL
- LD A,(IX+12H)
- LD (HL),A ;SECTOR COUNT MSB
- INC HL
- LD (HL),1 ;SET FLAG FOR FILE DATA LOADED
- JP CMD
-
- ;***************************************************************************
- ; LOAD BUFFER FROM DISK
- ;***************************************************************************
-
- LOAD:
- LD A,(FILESEL) ;HAS FILE BEEN DEFINED
- OR A
- JR NZ,.OK
- LD DE,MSG12
- SC 2 ;CHANGE THIS
- JP CMD
-
- .OK:
- LD DE,MSG9 ;REQUEST LOAD ADDRESS
- SC 2 ;CHANGE THIS
- LD B,2 ;GET ADDRESS (2 CHARACTERS)
- LD DE,LOADADDR
- LD HL,LOADADDR ;CLEAR LINE
- LD (HL),20H
- INC HL
- LD (HL),20H
- CALL LINEIN
- JP C,CMD
- LD DE,LOADADDR ;CONVERT TO BINARY
- SC 14 ;CHANGE THIS
- LD A,L
- LD HL,FILEADDR
- SUB (HL) ;MAKE SURE IT IS IN RANGE
- JR NC,.ROK ;RANGE OK
- LD DE,MSG13 ;OUTPUT ERROR MESSAGE
- SC 2 ;CHANGE THIS
- LD DE,LOADADDR
- LD A,(DE)
- LD C,A
- SC 5 ;OUTPUT LOAD ADDR ;CHANGE THIS
- INC DE
- LD A,(DE)
- LD C,A
- SC 5 ;CHANGE THIS
- LD DE,MSG14 ;CONTINUE MESSAGE
- SC 2 ;CHANGE THIS
- LD HL,FILESEC ;GET PROG START ADDRESS
- LD B,(HL)
- DEC DE ;MOVE BACK TO START OF LOADADDR
- SC 16 ;USE LOADADDR TO STORE START ADDR
- DEC DE ;MOVE BACK TO START
- DEC DE ;
- LD C,A ;
- SC 5 ;CHANGE THIS
- INC DE
- LD A,(DE)
- LD C,A
- SC 5 ;CHANGE THIS
- SC 18 ;CRLF ;CHANGE THIS
- JP CMD ;START OVER
- .ROK:
- LD E,A ;SAVE START DIFFERANCE
- LD A,(FILECNT)
- SUB E ;FIND NUMBER IF SECTORS TO TRANSFER
- JR NC,.ROK1 ;FILE IS LONG ENOUGH
- LD DE,MSG15
- SC 2 ;CHANGE THIS
- JP CMD
- .ROK1:
- LD C,A ;SAVE TRANSFER COUNT
- LD HL,(FILESEC) ;GET SECTOR ADDRESS
- LD D,0
- LD B,0
- ADD HL,DE ;SECTOR TO START TRANSFER ON
- EX HL,DE ;SETUP FOR DISK READ
- LD HL,BUFFER
- LD A,(SIZE+1) ;PROM SIZE IN PAGES
- CP C ;WHICH IS SHORTER?
- JR C,.FULL ;WILL FILL PROM
- PUSH BC ;SAVE COUNT
- SUB C ;FIND DIFFERANCE
- LD C,A ;MAKE POINTER
- ADD H ;MOVE BUFFER UP
- LD H,A
- .FILL:
- LD A,0FFH ;FILL CHARACTERS
- LD (HL),A
- CPI
- JP V,.FILL ;CONTINUE TILL DONE
- LD HL,BUFFER ;BACK TO START OF BUFFER
- POP BC
- JR .FULL1
- .FULL:
- LD C,A ;MOVE COUNT TO B
- .FULL1:
- LD A,(DCB) ;GET DRIVE NUMBER
- LD B,A
- SC 50 ;READ MULTIPLE SECTORS CHANGE THIS
- JP CMD ;DONE
- NOFIND:
- LD DE,MSG10
- SC 2 ;DISPLAY 'CANT FIND FILE' CHANGE THIS
-
- ;***************************************************************************
- ; READ PROM INTO BUFFER
- ;***************************************************************************
-
- READ:
- LD HL,BUFFER ;BUFFER START
- LD BC,(SIZE) ;PRO5H
- LD A,CS ;SET PROGRAMMER TO READ MODE
- OUT (CONT),A
- LD A,RESET ;RESET PROM TO ADDR 0000
- CALL PULSE
- .LOOP:
- IN A,(DATA) ;READ PROM
- LD (HL),A ;STORE
- CPI ;UPDATE POINTERS
- JP PO,CMD ;DONE ?
- LD A,CLOCK ;NEXT PROM ADDR
- CALL PULSE ;
- JR .LOOP ;LOOP TILL DONE
-
- ;***************************************************************************
- ; ALTER BUFFER MEMORY
- ;***************************************************************************
-
- ALTER:
- CALL ADDR ;GET ADDRESS TO ALTER
- .IN1:
- PUSH HL ;SAVE ADDR
- LD DE,IBUF ;POINT TO START OF BUFFER
- LD B,H ;CONVERT TO ASCII
- SC 16 ;CHANGE THIS
- LD B,L
- SC 16 ;CHANGE THIS
- LD A,20H ;BLANK CHAR
- LD (DE),A
- INC DE
- PUSH DE ;SAVE DE
- LD DE,BUFFER ;MAKE RELATIVE TO BUFFER
- ADD HL,DE
- POP DE ;RESTORE DE
- LD B,(HL) ;GET DATA TO BE CHANGED
- SC 16
- LD A,20H ;SPACE CHAR
- LD (DE),A
- INC DE
- LD A,00H ;TERMINATOR
- LD (DE),A
- LD DE,IBUF ;BACK TO BEGINNING FOR OUTPUT
- SC 2
- PUSH DE ;SAVE BUFFER LOC
- LD A,20H ;BLANK 2 CHAR FOR INPUT
- LD (DE),A
- INC DE
- LD (DE),A
- INC DE
- LD A,0DH ;CR
- LD (DE),A
- POP DE ;RESTORE BUFFER
- PUSH DE ;CONTINUE TO SAVE
- LD B,2 ;LINE LENGTH
- CALL LINEIN
- POP DE ;BACK TO START OF INPUT
- JR C,.EXIT ;DONE
- LD A,C ;SEE IF NO INPUT
- OR A
- JR Z,.NONE
- PUSH HL ;SAVE WHILE DOING CALC
- SC 14 ;CONVERT TO BINARY CHANGE THIS
- JR C,.OVER ;OVERFLOW
- LD B,L ;
- POP HL ;GET BUFFER ADDR BACK
- LD (HL),B ;STORE NEW VALUE
- POP HL ;GET ADDR BACK
- INC HL ;NEXT LOCATION
- JR IN1 ;NEXT INPUT
- .OVER:
- POP HL ;POP BUFFER ADDR OFF
- POP HL ;GET ADDR BACK
- JP .IN1 ;TRY AGAIN
- .NONE:
- POP HL ;GET ADDR BACK
- INC HL
- JP .IN1 ;GET NEXT CHAR
- .EXIT:
- POP HL ;EMPTY STACK
- JP CMD ;NEXT COMMAND
-
- ;***************************************************************************
- ; DUMP BUFFER MEMORY
- ;***************************************************************************
-
- DUMP:
- CALL ADDR ;GET ADDR TO DUMP
- .DUMP1:
- PUSH HL ;SAVE ADDR
- LD DE,IBUF ;DISPLAY ADDR
- LD B,H
- SC 16 ;CHANGE THIS
- LD B,L
- SC 16 ;CHANGE THIS
- LD A,20H ;BLANK AS SPACER
- LD (DE),A
- INC DE
- PUSH DE ;SAVE WHILE DOING CALC
- LD DE,BUFFER ;MAKE ADDR REL BUFFER
- ADD HL,DE
- POP DE ;RESTORE IBUF POINTER
- LD BC,16 ;NUMBER OF CHARACTERS TO DUMP
- PUSH BC ;SAVE IT
- .LOOP:
- LD B,(HL) ;GET BYTE
- SC 16 ;CONVERT TO HEX ASCII IN BUFFER
- POP BC
- CPI ;UPDATE POINTERS
- JP PO,.DONE
- PUSH BC ;SAVE BC
- LD A,2CH ;COMMA BETWEEN BYTES
- LD (DE),A
- INC DE
- JR .LOOP
- .DONE:
- LD A,00H ;TERMINATE STRING
- LD (DE),A
- LD DE,IBUF ;BACK TO START FOR DISPLAY
- SC 2 ;DISPLAY CHANGE THIS
- POP HL ;GET ADDR BACK
- LD DE,16 ;UPDATE ADDR
- ADD HL,DE
- LD DE,IBUF ;READY FOR NEXT COMMAND
- LD B,1 ;ONE CHAR ONLY
- LD A,20H ;CLEAR DISPLAY
- LD (DE),A ;
- CALL LINEIN ;GET COMMAND
- JP C,CMD ;EXIT
- JP .DUMP1 ;DO NEXT 16 CHAR
- PUSH BC
- CPI ;UPDATE POINTERS
- JP CMD ;NOT IMPLEMENTED
-
- ;***************************************************************************
- ; SUBROUTINES
- ;***************************************************************************
-
- ADDR: LD HL,IBUF ;INPUT BUFFER ADDRESS
- LD BC,4 ;LENGTH
- CALL CLEAR ;CLEAR BUFFER
- LD (HL),00 ;TERMINATOR
- LD DE,MSG16 ;REQUEST ADDRESS
- SC 2 ;CHANGE THIS
- LD B,4 ;4 HEX DIGITS
- LD DE,IBUF
- CALL LINEIN ;INPUT ADDRESS
- LD DE,IBUF
- SC 14 ;CONVERT TO BINARY IN HL CHANGE THIS
- JR C,ADDR ;OVERFLOW
- RET ;DONE
- CLEAR:
- LD A,20H ;BLANKS
- .BLANK:
- LD (HL),A ;STORE
- CPI ;UPDATE POINTERS
- JP PE,.BLANK ;LOOP TILL DONE
- RET
- PULSE:
- OR SET ;SET BIT
- OUT (CONT),A ;OUTPUT PULSE
- AND CLR ;CLEAR PULSE
- OUT (CONT),A ;RESET PULSE
- RET
-
-
- ;***************************************************************************
- ; VARIABLE STORAGE
- ;***************************************************************************
-
- MSG1: DC OCH,'EP -2A PROM PROGRAMMER',0AH
- DC '1. 2708',0AH
- DC '2. 2758',0AH
- DC '3. 2716',0AH
- DC '4. 2732'
- DC '5. TMS 2708',0AH
- DC '6. TMS 2716',0AH
- DC '7. TMS 2732',0AH
- DC 0AH
- DC 'ENTER PROM TYPE - ',00H
- MSG2: DC 0CH,'PROM TYPE ',00H
- ;
- ; EACH LINE OF MSGE MUST BE 8 CHAR PLUS CR
- ;
- MSG3: DC '2708 ',0DH
- DC '2758 ',0DH
- DC '2716 ',0DH
- DC '2732 ',0DH
- DC 'TMS 2708',0DH
- DC 'TMS 2716',0DH
- DC 'TMS 2732',0DH
- MSG4: DC 0AH,'E. ERASE CHECK',0AH
- DC 'P. PROGRAM PROM',0AH
- DC 'V. VERIFY PROM',0AH
- DC 'F. DEFINE FILE TO BE USED FOR LOADING',0AH
- DC 'L. LOAD DISK FILE INTO BUFFER',0AH
- DC 'R. READ PROM CONTENTS INTO BUFFER',0AH
- DC 'A. ALTER BUFFER (HEX MUST REMAIN IN ORDER
- DC 'D. DUMP BUFFER (HEX) ',0AH
- DC 'T. CHANGE PROM TYPE ',0DH
- MSG5: DC 0AH,'COMMAND : ',00H
- MSG6: DC 'FILE NAME: ',00H
- MSG7: DC 'FILE TYPE: ',00H
- MSG8: DC 'DRIVE : ',00H
- MSG9: DC 'ADDRESS- HIGH ORDER BYTE: ',00H
- MSG10: DC 'CANT FIND FILE ',0DH
- MSG11: DC 'FILE NOT ABSOLUTE ',0DH
- MSG12: DC 'FILE HAS NOT BEEN DEFINED (USE "F") ',0DH
- MSG13: DC 'PROM LOAD ADDRESS ',00H
- MSG14: DC ' IS BELOW PROGRAM START ADDRESS ',00H
- MSG15: DC 'PROM START ADDRESS IS ABOVE PROGRAM SPACE',0DH
- MSG16: DC 'ADDRESS: ',00H
-
- DCB: DS 17 ;DIRECTORY CONTROL BLOCK
- WORK: DS 256 ;WORK AREA FOR DIRECTORY LOOKUP
- IBUF: DS 60 ;INPUT/OUTPUT BUFFER
-
- ; FILE VARIABLES MUST REMAIN IN ORDER
-
- LOADADDR: DS 3 ;PROM BASE ADDRESS + TERMINATOR CHAR
- FILEADDR: DC 0 ;FILE LOAD ADDRESS MSB
- FILESEC: DC 00,0 ;UPDATE POINTERS
- LOC DS 2 ;CURRENT LOCATION IN BUFFER
- PROM DS 1 ;PROM TYPE
- SIZE: DC 00,00 ;SIZE OF PROM
- LOOPCNT: DC 00 ;LOOP COUNT
- DELCNT: DC 00 ;DELAY COUNT - MUST FOLLOW LOOPCOUNT
-
- PARAM: ;PARAMETER TABLE- SIZE IN 256 BYTE BLOCKS
- ; NUMBER OF PROGRAMMING LOOPS
- ; DELAY TIME IN .75MS INTERVAL
- DC 4,133,1 ;2708
- DC 4,1,75 ;2758
- DC 8,1,75 ;2716
- DC 16,1,75 ;2732
- DC 4,133,1 ;TMS2708
- DC 8,133,1 ;TMS2716
- DC 16,1,75 ;TMS3732
- ERCHK: DC 0FFH ;ERASED CHARACTER
- BUFFER: DS 4096 ;4K BUFFER
-
-
-