;************************************************************************ ; * ;COPYRIGHT 1982 * ;GTEK, INC. * ;307-D COLEMAN AVENUE * ;P.O. BOX 289 * ;WAVELAND, MS. 39576 * ; * ;THIS SOURCE CODE IS THE PROPERTY OF GTEK, INC. * ;WHAT YOU HAVE PURCHASED IS THE RIGHT TO USE THE SOFTWARE * ;ANY UNAUTHORIZED DISTRIBUTION OF THIS SOFTWARE IS STRICTLY FORBIDDEN * ; * ;************************************************************************ ;' ;SCAN TO FIRST RECORD JNZ PHEX CALL SENDEM ;LEAD CHAR FOR PROGRAM COMMAND ;SEND THE BYTE BUT DONT WAIT FOR ;ECHO SO AS TO HAVE THE DATA INPUT AND ;OUTPUT SKEWED BY ONE BYTE TO SPEED THINGS ;UP (ABOUT TWICE AS FAST) PHEXLP: CALL GETRM ;GET A BYTE AND THEN SEND IT CALL SENBYTE JMP PHEXLP ;LOOP TILL DONE ;THE FOLLOWING SUBROUTINE SENDS A THE CHARACTER IN THE ACCUMULATOR TO THE ;PROGRAMMER AND WAITS FOR A RESPONSE. THE RESPONSE IS CHECKED TO SEE IF ;IT IS THE LEADER F ;** DUMB TERMINAL CODING ****************************************** PHEX2: CALL KBCHK ;SEE IF ANYTHING FROM CONSOLE JZ PHEX3 ;BRIF,NO KEYBOARD CHARACTER CPI CNTLC ;SEE IF USER WANTS OUT JZ FINIS ;WELL THEN LEAVE IF YOU WANT PHEX1: CALL BOUT ;SEND THE CHARACTER TO THE PROGRAMMER PHEX3: CALL BINCHK ;SEE IF PROGRAMMER HAS ANYTHING FOR US JZ PHEX2 ;BRIF,NOTHING FROM PROGRAMMER CALL CONOUT ;SEND CHAR TO CONOUT JMP PHEX2 ;LOOP ;**** END OF DUMB TERMINAL CODING ********************************URS. ; ; ;INSTALLATION REQUIREMENTS ; **** SEE THE BINCHK AND BOUT ROUTINES NEAR THE END OF THIS SOURCE ; CODE... ; THIS SOFTWARE REQUIRES NO HANDSHAKING ALTHOUGH CTS ; AND DTR MAY BE USED IF DESIRED. ; ; IF YOUR COMPUTER SUPPORTS THE I/O BYTE, THEN THE ; INSTALLATION BECOMES VERY SIMPLE, JUST SUPPLY THE ; LOGICAL NAME USED TO MAKE THE PROGRAMMER PORT ; BECOME THE CONSOLE. ; ; IF YOUR COMPUTER DOES NOT SUPPORT THE I/O BYTE ; THEN YOU MUST SUPPLY THE INSRUCTIONS TO READ ; PORT STATUSCONTROL BLOCK ADDRESS BUFF EQU 80H ;INPUT DISK BUFFER ADDRESS ; NON GRAPHIC CHARACTERS CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED BELL EQU 07H CNTLC EQU 03H ;RETURN TO CPM IOBYTE EQU 3 ;LOCATION OF IOBYTE ; POSSIBLE CONSOLE ASSIGNMENTS TTY EQU 00H ;BITS 1,0 = 00 CRT EQU 01H ;BITS 1,0 = 01 BAT EQU 02H ;BITS 1,0 = 10 UC1 EQU 03H ;BITS 1,0 = 11 ; FILE CONTROL BLOCK DEFINITIONS FCBDN EQU FCB+0 ;DISK NAME FCBFN EQU FCB+1 ;FILE NAME FCBFT EQU FCB+9 ;DISK FILE TYPE (3 CHARACTERS) E PROGRAMMED. ; CONTROL S AND CONTROL Q MAY BE USED TO STOP/START ; LISTINGS, IE XOFF/XON. ; ; CONTROL IS RETURNED TO CPM WITH CONTROL C. ; ; IF A FILE NAME IS INCLUDED IT ; SHOULD HAVE A HEX EXTENSION. THE HEX FILE WILL BE ; OPENED AND SENT TO THE MODEL 7128, WHICH WILL PROGRAM ; AN EPROM WITH THE CONTENTS OF THE HEX RECORDS. ; ; THE SIZE (ADDRESS SPAN) OF THE HEX FILE SHOULD NOT ; EXCEED THE SIZE OF THE EPROM BEING PROGRAMMED. IF IT ; DOES, THEN BREAK THE HEX FILE INTO TWO OR MOREA CHARACTER HAS BEEN RECIEVED. IF ONE HAS, IT IS ;CHECKED TO SEE IF IT IS THE HEADER FOR AN ERROR, IN WHICH CASE EXCECUTION ;DEFAULTS TO THE ERROR HANDLER. IF SOME OTHER CHARACTER HAS BEEN RECEIVED, ;IT IS DISPLAYED ON THE CONSOLE (BIT BUCKET), AND THEN THE ORIGINAL INTENT ;OF THE SUBROUTINE IS EXECUTED, THAT IS, THE ORIGINAL CONTENTS OF THE ;ACCUMULATOR ARE SENT TO THE PROGRAMMER. SENDEM: PUSH PSW SEND1: CALL BINCHK ;SEE IF ANYTHING FROM PROGRAMMER JZ SEND2 ;BRIF NOTHING CALL ECHO ;ECHO CHAR TCUM STA FCBCR ;CLEAR CURRENT RECORD ;OPEN THE FILE IF WE CAN LXI D,FCB MVI C,OPENF CALL BDOS ; 255 IN ACCUM IF OPEN ERROR CPI 255 ;255 IF FILE NOT PRESENT JNZ FILBUF ;BRIF, FILE IS OPEN ; FILE NOT THERE, GIVE ERROR MESSAGE AND RETURN LXI D,OPNMSG MVI C,PRINTF ;PRINT BUFFER FUNCTION CALL BDOS JMP FINIS ;TO RETURN OPNMSG: DB CR,LF,'NO HEX FILE PRESENT ON DISK',BELL,'$' ;NOW LOAD HEXFILE TO RAM ;JUST ABOVE THE STACK FILBUF: LXI H,STACK ;LOAD HEX FILE TO RAM SHLD BUFFAD