ASMB,R,L HED READ ABS BIN FILE AND WRITE TO MEMORY 6/17/77 JCB * * *ON,PATCH,, * * FILE NAMR MUST BE ABS BINARY (TYPE 7) * INTERNAL CHECKSUM IS COMPUTED AND MUST MATCH CHECKSUM WORD * NAM PATCH,3,1 PROGRAM TO WRITE PATCHES INTO MEMORY FROM ABS FILE EXT IPUT,EXEC,OPEN,CLOSE,READF,NAMR,GETST A EQU 0 B EQU 1 START NOP JSB GETST GET STRING PASSED BY OPERATOR DEF R1 DEF BUFIN INPUT BUFFER DEF M80 = 80 CHARACTERS (M80=-80) DEF LOG R1 LDA D1 STA STR SET POINTER TO START OF BUFIN FOR NAMR JSB NAMR DEF R2 DEF TERM PARAMETER BUFFER DEF BUFIN INPUT BUFFER DEF LOG DEF STR R2 SSA JMP ERR2 PARAMETER INPUT ERROR * LDA TERM+3 GET PARAMETER TYPE AND D3 CPA D1 INTEGER LU? RSS YES JMP ERR2 NO PARAMETER ERROR * JSB NAMR DEF R3 DEF NAME PARMETER BUFFER DEF BUFIN DEF LOG DEF STR R3 SSA JMP ERR3 PARMETER INPUT ERROR * LDA NAME+3 GET PARAMETER TYPE AND D3 CPA D3 ASCII FILE NAME? RSS YES JMP ERR2 NO. PARAMETER ERROR * JMP BEGIN BEGIN PROGRAM * TERM NOP TERMINAL LU NAME NOP FILE NAME NOP NOP PTR NOP POINTER TO WORD IN ABS BINARY RECORD SEC NOP SECURITY CODE CR NOP CARTRIDGE REFERENCE VALU NOP VALUE OF WORD TO STORE IN MEMORY ADDR NOP ADDRESS TO STORE IT AT! LEN NOP LEN OF ABS BINARY REC RETURNED HERE WCTR NOP WORD COUNT IN BINARY REC (NEG 2'S COMP) BEGIN JSB OPEN COME HERE AFTER WE HAVE ALL PARAMETERS DEF R4 AND OPEN THE FILE DEF DCB DEF ERROR DEF NAME DEF ZERO DEF SEC DEF CR R4 LDA ERROR CPA D7 MUST BE TYPE 7 FILE (ABSOLUTE BINARY) RSS JMP ERR4 CLOSE FILE AND REPORT ERROR * RD JSB READF GET A RECORD FROM THE FILE DEF R5 DEF DCB DEF ERROR DEF BUFIN DEF D500 DEF LEN R5 LDA ERROR SZA JMP ERR5 * LDA LEN SZA,RSS JMP RD IGNORE ZERO LENGTH RECORDS * SSA EOF? JMP FINI YES * CMA,INA ADA D500 SZA,RSS DID WE TRUNCATE THE INPUT TO THE BUF SIZE? JMP ERR7 YES! * LDA BUFIN+1 STA ADDR SET STARTING ADDRESS FOR TARGET IN MEMORY LDA BUFIN ALF,ALF GET RECORD LENGTH CMA,INA STA WCTR SET WORD COUNTER NEGATIVE STA B SAVE FOR CHECKSUM COMPUTATION LDA BPTR STA PTR SET POINTER IN INPUT BUFFER LDA ADDR START CHECKSUM COMPUTATION ADA PTR,I ISZ PTR INB,SZB JMP *-3 * CPA PTR,I DOES CHECKSUM MATCH? RSS YES JMP ERR6 NO * LDA BPTR RESET STA PTR THE BUFFER POINTER NEXT LDA PTR,I GET WORD FROM INPUT BUFFER STA VALU JSB IPUT DEF *+3 DEF ADDR DEF VALU ISZ ADDR ISZ PTR ISZ WCTR JMP NEXT * JMP RD * ERR7 ISZ N RECORD TOO LARGE ERR6 ISZ N CHECKSUM DOESN'T COMPUTE! ERR5 ISZ N NOT USED ERR4 ISZ N FILE TYPE NOT 7 (ABS BINARY) ERR3 ISZ N 2ND PARM NOT ASCII FILE NAME ERR2 ISZ N 1ST PARM NOT INTEGER LU ERR1 ISZ N NOT USED LDA N ADA A60 OCTAL 60 = BASE FOR ASCII NUMBER STA ERN ERROR NUMBER TO REPORT JSB EXEC DEF FINI DEF D2 WRITE REQUEST DEF TERM TO THIS TERMINAL DEF MESS ERROR MESSAGE DEF D9 FINI JSB CLOSE DEF DONE DEF DCB DEF ERROR DONE JSB EXEC DEF *+2 DEF D6 ZERO NOP D1 DEC 1 D2 DEC 2 D3 DEC 3 D6 DEC 6 D8 DEC 8 D9 DEC 9 D7 DEC 7 D14 DEC 14 D15 DEC 15 D500 DEC 500 LOG NOP N NOP ERROR # STORED HERE M80 DEC -80 A60 ASC 1, 0 * ERROR NOP STR NOP MESS ASC 8, PATCH ERROR : * ERN NOP ERROR NUMBER STORED HERE IN ASCII BPTR DEF BUFIN+2 START OF DATA IN ABSOLUTE BINARY RECORD DCB BSS 144 BUFIN BSS 500 END START END$