ASMB,R,L,C,N HED TEXEC 91703-16102 * (C) HEWLETT PACKARD CO. 1976 NAM TEXEC,3 91703-16102 REV A 760203 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 2 SPC 1 **************************************** * *TEXEC TERMINAL EXEC FOR BCS TO RUN UNDER DS1/B * *SOURCE PART # 91703-18102 * *REL PART # 91703-16102 * *WRITTEN BY: LARRY POMATTO * *DATE WRITTEN: 11-29-74 * *MODIFIED BY: BOB SHATZER (04-07-75) * DAN GIBBONS (01-07-76) * J-P BAUDOUIN (01-21-76) * DAN GIBBONS (01-27-76) * BOB SHATZER (02-03-76) * ***************************************** SPC 1 * * * THIS VERSION OF TEXEC SUPPORTS THE USE OF $DDT * THROUGH THE USE OF THE 'Z' ASSEMBLY OPTION. * * * * ENT RLOAD ENT ATTEN ENT CHAIN ENT RNPGM ENT RMESG ENT IDLE ENT PTPON,PTPOF,ESCON ENT HALT ENT .ENTR,GETLU ENT RMPAR,CLRIO * EXT STBSY,RESET EXT .IOC.,REXEC,RCRET EXT .MEM. EXT RPURG EXT RCLOS EXT RNAME EXT #TAM EXT $BUSY,$ESC EXT ATTN EXT PARMB IFZ EXT $DDT XIF SUP * A EQU 0 B EQU 1 * * * NOTE THAT TEXEC MAKES AN INITIALIZATION CALL TO #TAM PRIOR * TO MAKING ANY CALLS TO THE COMM LINK. THIS CALL SETS UP * THE PROPER LU FOR D.65 AND INITIALIZES THE CORRECT TIMEOUT * VALUE. HED OPERATOR PROMPT (BCS) * (C) HEWLETT PACKARD CO. 1976 *********************** * QUERY THE OPERATOR. ****************************** *********************** * JMP MSTRT MANUAL START ADDR = 2000B. IDLE NOP ENTRY. HALT EQU IDLE LDA WHERE ESTABLISH BAIL-OUT ADDR. JSB ATTN QUERY JSB WAIT * JSB INITL INITILIZE .MEM. TABLE * CLA CLEAR STANDBY FLAG. STA STBYF STA $BUSY CLEAR COMMUNICATIONS BUSY FLAG. STA $ESC CLEAR ESCAPE FLAG. * JSB WAIT WAIT FOR TTY TO COMPLETE JSB .IOC. DISPLAY ":" PROMPT. OCT 020002 JMP *-2 DEF COLON DEC 1 * JSB WAIT * LDA DM40 STA TEMP SET UP -40 LOOP COUNTER LDB .BUFR GET BUFFER ADDRESS LDA BLNKW AND DOUBLE BLANK STA B,I STORE BLANKS INTO BUFFER INB ISZ TEMP BUMP POINTERS AND COUNTERS JMP *-3 CONTINUE UNTIL BUFFER IS BLANKED * JSB .IOC. INPUT THE COMMAND. OCT 010401 JMP *-2 .BUFR DEF BUFFR DEC -80 * JSB .IOC. WAIT FOR INPUT COMPLETION OCT 40001 STATUS OF INPUT DEVICE SSA DEVICE STILL BUSY? JMP *-3 YES...WAIT UNTIL DONE * STB WAIT SAVE CHARACTER COUNT CLE,ERB CONVERT TO WORD COUNT SEZ IF ODD # OF WORDS INB INCREMNET WORD COUNT FOR ODD CHAR STB MSLEN SAVE WORD LENGTH LDB WAIT GET CHARACTER COUNT JSB TMESS GO PROCESS THE COMMAND. JMP QUERY * WAIT NOP JSB .IOC. I/O STATUS WAIT. OCT 40002 SSA JMP *-3 JMP WAIT,I * COLON ASC 1,:_ PROMPT CHARACTER. * * OPERATOR ATTENTION KEY WAS PRESSED. * WHERE DEF ATTEN ATTEN LDA DCRLF OUTPUT CR/LF. LDB B1 JSB OPDIS JSB WAIT JSB ABORT DO SOME HOUSEKEEPING. * * OPERATOR ERROR MESSAGES * M0950 LDA ETAM3 "SYNTAX ERROR". LDB B6 JSB OPDIS * JMP QUERY SPC 1 ETAM3 DEF MTAM3 MTAM3 ASC 6,SYNTAX ERROR DM40 DEC -40 HED OPDIS (OPERATOR DISPLAY ROUTINE) * (C) HEWLETT PACKARD CO. 1976 * * DISPLAY OPERATOR MESSAGE ON TERMINAL DISPLAY DEVICE. * * CALLING SEQUENCE: * * (A) = ASCII MESSAGE ADDRESS. * (B) = + WORD COUNT OR - CHARACTER COUNT. * JSB OPDIS * OPDIS NOP * STA OPD1 STB OPD2 * JSB WAIT * JSB .IOC. OCT 020002 JMP *-2 OPD1 NOP BUFFER. OPD2 NOP COUNT. * JMP OPDIS,I SPC 5 STNBY NOP DISPLAY "STANDBY" MESSAGE. LDA STBYF SZA JMP STN INA STA STBYF LDA STNDF LDB B4 JSB OPDIS STN LDA $ESC ALLOW ESCAPE. SZA JSB ABORT LDB DELAY DELAY LOOP. INA,SZA JMP *-1 INB,SZB JMP *-3 JMP STNBY,I * STNDF DEF *+1 ASC 4,STANDBY HED OPERATOR INPUT DECIPHER ROUTINE * (C) HEWLETT PACKARD CO. 1976 ******************************** * DECIPHER OPERATOR MESSAGES. ********************** ******************************** * * CALLING * SEQUENCE: JSB TMESS * B CONTAINS # CHARACTERS. * DATA IN BUFFR. * TMESS NOP ENTRY. CLA STA TEMP+2 CLEAR CHARACTER FLAG. SZB,RSS CHECK IF COUNT ZERO. JMP TMESS,I YES, SO EXIT. STB MLEN SAVE CHARACTER LENGTH CMB,INB STB TEMP+3 NEGATIVE CHAR. COUNT. * LDB MD33 CLEAR PARAMETER AREA. STB TEMP LDB PARPT STA B,I INB ISZ TEMP JMP *-3 * LDB BUFAD INPUT BUFFER CLE,ELB BYTE ADDRESS. STB TEMPP LDA INIT STA TEMP+5 INITIAL PARAM POINTER. LDA TEMP+5,I STA TEMP+4 INITIAL STORE POINTER. ADA MD1 STA TEMP+6 PARAM CHAR COUNT ADDR. * DEC10 LDB TEMPP FETCH NEXT BYTE. CLE,ERB LDA B,I SEZ,RSS CHECK IF TO EXAMINE UPPER/LOWER. ALF,ALF UPPER, SO ROTATE. AND M377 ISOLATE CHARACTER. * CPA COM CHECK FOR JMP DEC60 COMMA OR CPA BLNK BLANK JMP DEC65 DELIMITER. CPA COLN OR IS IT A ":" JMP DEC60 * LDB TEMP+6,I ADD -1 TO ADB MD1 CHARACTER STB TEMP+6,I COUNT. * LDB TEMP+2 CHECK IF TO BE UPPER/LOWER. SZB UPPER. JMP DEC40 LOWER. * ALF,ALF POSITION. STA TEMP+4,I STORE. ISZ TEMP+2 SET FLAG TO LOWER CHARACTER. JMP DEC50 GO INCREMENT DATA CHAR. * DEC40 IOR TEMP+4,I COMBINE UPPER/LOWER. STA TEMP+4,I STORE. CLA STA TEMP+2 RESET FLAG TO UPPER CHAR. ISZ TEMP+4 BUMP STORE LOCATION. LDA TEMP+4 DELIMIT "TELLOP". CPA PMEND JMP M0000 * DEC50 ISZ TEMPP BUMP BUFFER ADDR. ISZ TEMP+3 BUMP CHAR. COUNT. JMP DEC10 GO PROCESS NEXT CHAR. DEC55 ISZ PARAM DONE- BUMP PARAM COUNT. JMP M0000 GO TO EXIT. * DEC65 LDA PARAM FIRST PARAM? SZA,RSS JMP DEC60 YES, BLANK = DELIMITER. ISZ TEMPP NO, IGNORE BLANKS. ISZ TEMP+3 JMP DEC10 GO PROCESS NEXT CHARACTER. JMP DEC55 DEC60 CLA STA TEMP+2 RESET UPPER CHAR FLAG. * ISZ TEMP+5 BUMP PARAM POINTER. ISZ PARAM BUMP PARAM COUNT. LDA PARAM CPA B10 EIGHT PARAMS? JMP M0000 YES, GO PROCESS. * LDA TEMP+5,I STA TEMP+4 ADA MD1 STA TEMP+6 PARAM CHAR COUNT ADDR. JMP DEC50 GO INCREMENT DATA BUFFER. SPC 2 COLN OCT 72 HED MESSAGE PROCESSOR * (C) HEWLETT PACKARD CO. 1976 ********************************** * SEARCH COMMAND MNEMONIC TABLE. ******************* ********************************** * M0000 CLA CLEAR EQUIVALENCE STA EQCNT COUNTER. LDA OPCNT INITIALIZE # MNEMONICS STA TEMP COUNTER. * LDA LDOPC SET UP MNEMONIC STA TEMP+1 TABLE STA T.PTR POINTER. * RSET LDA TAB FORM BYTE ADDR RAL OF INPUT COMMAND STA I.PTR MNEMONIC. * LDA OP1 # CHAR IN INPUT. SZA,RSS JMP M0950 ERROR IF NULL. ADA MD1 STA CHCNT NEG. CHAR COUNT -1. * GET LDA I.PTR GET NEXT INPUT BYTE. ISZ I.PTR ISZ CHCNT ANY MORE CHARACTERS? JMP *+2 YES. JMP MTCH? NO. CLE,ERA E=0 IF LEFT BYTE, ELSE =1. LDA A,I SEZ,RSS ALF,ALF POSITION. AND M377 ISOLATE. STA B SAVE. * LDA T.PTR,I GET TABLE MNEMONIC BYTE. SEZ,RSS ALF,ALF POSITION. AND M377 ISOLATE. SEZ ISZ T.PTR * CPA B COMPARE - EQUAL? JMP EQ YES * LOOP LDA TEMP+1 ADVANCE TO NEXT ENTRY ADA B5 IN MNEMONIC STA TEMP+1 TABLE. STA T.PTR CLA STA EQCNT ISZ TEMP BUMP MNEMONIC COUNTER. JMP RSET GO COMPARE. JMP M0500 END OF MNEMONICS, ERROR. * EQ ISZ EQCNT COUNT THIS MATCH. JMP GET GO TO NEXT CHAR. * MTCH? LDA TEMP+1 DID WE GET A MATCH ADA B3 LDA A,I CPA EQCNT ON THIS MNEMONIC? JMP *+2 YES. JMP LOOP NO. * * MATCH FOUND. GO TO PROCESSOR. * LDA TEMP+1 FETCH PROCESSOR ADDR. ADA B4 LDA A,I JMP A,I GO TO PROCESSOR. HED LOAD XXXXX COMMAND * (C) HEWLETT PACKARD CO. 1976 * * LOAD XXXXX * GENERATE AN RLOAD SUBROUTINE CALL TO * LOAD INTO THE TERMINAL THE PROGRAM XXXXX WHICH * RESIDES ON THE CENTRAL STATION DISC. * M0100 JSB NAMCK * M0110 JSB RLOAD DEF *+5 DEF STATS DEF IERR DEF P1 DEF IADR * JSB LDERR CHECK FOR NPRGL ERRORS. SSB,RSS SZB,RSS WAS PROGL DORMANT? * JMP QUERY YES. JSB STNBY NO, STANDBY. JMP M0110 TRY AGAIN. * NAMCK NOP LDA CP1 IS THERE A NAME? SZA,RSS JMP M0950 NO. LDA TAB+1 JSB TRAIL FILL TRAILING BLANKS. JMP NAMCK,I * LDERR NOP LDA STATS LDB IERR ANY PROGL ERRORS? SSB,RSS INA,SZA ANY LINE ERRORS RSS YES...PROGL OR LINE ERRORS JMP LDERR,I NO. B=IERR= 0 OR 1. LDA EPRGL CPB MD1 LDA EFIND YES, CAN'T FIND PROGRAM. CPB MD6 JMP LDERR,I LDB B6 JSB OPDIS JMP QUERY * EFIND DEF MTAM7 MTAM7 ASC 6,CAN'T LOCATE EPRGL DEF MPRGL MPRGL ASC 6,NPRGL ERROR HED RUN COMMAND * (C) HEWLETT PACKARD CO. 1976 * * RUN[*,P1,P2,P3,P4,P5] * * RUNAT NNN [,P1,P2,P3,P4,P5] * * RUN XXXXX [,P1,P2,P3,P4,P5] * * P1...P5 = OPTIONAL PARAMETERS. * NNN = START ADDRESS. * XXXXX = PROGRAM NAME. * M0200 LDA CP1 IS 1ST PARAM NULL OR "*"? LDB P1 SZA CPB ASTER JMP MOVIT YES. * LDA TAB+1 JSB TRAIL M0215 JSB RLOAD MUST BE A PROGRAM NAME. DEF *+5 LOAD THE PROGRAM. DEF STATS DEF IERR DEF P1 DEF IADR * JSB LDERR CHECK FOR PROGL ERRORS. SSB,RSS SZB,RSS WAS PROGL DORMANT? JMP MOVIT YES. JSB STNBY NO. JMP M0215 * * HERE WE COME FOR "RUNAT" COMMAND * GETAD LDA CP1 IS ADDRESS SUPPLIED? SZA,RSS JMP M0950 NO...ERROR JSB CVT1 CONVERT ADDRESS DEF P1 DEF CP1 STA IADR SAVE AS STARTING ADDRESS * MOVIT JSB MOVE JMP RUNIT YES. * * CONVERT OPTIONAL PARAMETERS TO BINARY AND STORE. * MOVE NOP LDA TAB+2 STA DCVTA ADDR OF DATA BUFFER. ADA MD1 STA DCVTB ADDR OF CHAR COUNT. * LDA DO.P1 STA TEMP+4 DESTINATION ADDR. LDA MD5 STA TEMP+5 COUNTER * TRANS LDA DCVTB,I CHAR. COUNT. SZA,RSS ZERO? JMP STORE YES, STORE ZERO. * JSB CVT1 CONVERT TO BINARY. DCVTA DEF * DCVTB DEF * * STORE STA TEMP+4,I STORE VALUE. ISZ TEMP+4 LDA DCVTA ADA B4 STA DCVTA LDA DCVTB ADA B4 STA DCVTB * ISZ TEMP+5 DONE? JMP TRANS NO. JMP MOVE,I * RUNIT JSB RNPGM GO RUN THE PROGRAM. DEF *+7 DEF IADR DO.P1 DEF O.P1 DEF O.P2 DEF O.P3 DEF O.P4 DEF O.P5 * * WON'T COME BACK UNLESS NO START ADDRESS. * START LDA ENSA "NO START ADDRESS" LDB B6 JSB OPDIS JMP QUERY * O.P1 OCT 0 O.P2 OCT 0 O.P3 OCT 0 O.P4 OCT 0 O.P5 OCT 0 * ASTER OCT 025000 ENSA DEF NSA NSA ASC 6,NO START ADR HED ABORT COMMAND * (C) HEWLETT PACKARD CO. 1976 * * ABORT * * ABORT THE PROGRAM CURRENTLY RUNNING AT TERMINAL. * MSTRT JSB #TAM STARTUP PROCESSOR DEF *+2 MAKE INITIALIZATION CALL TO #TAM OCT 0 RSS ABORT NOP M0300 BSS 0 CLA STA $BUSY STA $ESC JSB .IOC. CLEAR I/O OCT 0 * JSB IDLE HED TELLOP COMMAND * (C) HEWLETT PACKARD CO. 1976 * * TELLOP * * DISPLAY A MESSAGE ON THE REMOTE OPERATOR DISPLAY * M0400 LDA MSLEN ADJUST WORD COUNT. ADA MD3 SZA,RSS ZERO? JMP M0950 YES, ERROR. STA MSLEN * JSB RMESG SEND THE MESSAGE. DEF *+4 DEF STATS DEF BUFFR+3 DEF MSLEN * JMP QUERY HED ALL RTE COMMANDS * (C) HEWLETT PACKARD CO. 1976 * M0500 LDA B7 SET UP STREAM TYPE STA STYP CLA SET FOR REQUEST STA RRSW CLA,INA SET TO SEND REQ JSB PTPON SET LINE BUSY DEF *+1 CLA,INA SET FOR REQUEST JSB #TAM DEF *+4 DEC 6 DEF STYP DEC -50 25 WORD BUFFER INA,SZA ANY ERRORS? JMP LINER YES...LINE ERROR M0501 CLA,INA SET FOR REQUEST JSB #TAM DEF *+4 DEC 5 DEF STYP PUT REPLY BACK IN REQUEST BUFFER DEC -50 MAX OF 25 WORDS INA,SZA LINE ERROR JMP LINER YES LDA STYP GET FIRST WORD JSB RPYCK SEE IF REPLY JMP M0501 NOT REPLY...IGNORE JSB PTPOF TURN OF LINE BUSY FLAG DEF *+1 LDA BUFAD GET OUTPUT BUFFER ADDRESS LDB MLEN GET LENGTH OF REPLY INB AND MAKE LENGTH INTO WORDS CLE,ERB CONVERT TO WORDS SZB ANYTHING TO PRINT JSB OPDIS SEND REPLY JMP QUERY AND RETURN SPC 2 LINER LDA ETAM2 SEND COM LINE MESSAGE LDB B6 JSB OPDIS "COM LINE ERR" JSB PTPOF TURN OFF LINE BUSY DEF *+1 JMP QUERY AND RETURN TO USER SPC 1 ETAM2 DEF MTAM2 MTAM2 ASC 6,COM LINE ERR HED CREATE XXXXXX COMMAND * (C) HEWLETT PACKARD CO. 1976 * * CREATE XXXXXX,KKK,NNNN,TT,S,CR * * XXXXXX = FILE NAME. * KKK = # BLOCKS. * NNNN = RECORD SIZE, OPTIONAL, .LE. 128 WORDS. * TT = FILE TYPE, OPTIONAL. * S = SECURITY CODE, OPTIONAL. * CR =CART. REF, OPTIONAL. * M0800 JSB NAMCK * LDA CP2 BLOCKS PARAM? SZA,RSS JMP M0950 NO, ERROR. JSB CVT1 CONVERT # BLOCKS. DEF P2 DEF CP2 STA TEMP * LDB CP3 RECORD SIZE? SZB,RSS JMP M0802 NO, IGNORE. JSB CVT1 YES, CONVERT. DEF P3 DEF CP3 STA TEMP+1 SZA SSA LEGAL SIZE? JMP M0950 NO, ERROR. ADA MD129 SSA,RSS JMP M0950 * M0802 LDA B3 LDB CP4 FILE TYPE? SZB,RSS JMP M0810 NO, SET DEFAULT = 3. JSB CVT1 YES, CONVERT. DEF P4 DEF CP4 M0810 STA TEMP+4 * CLA LDB CP5 SECURITY CODE? SZB,RSS JMP M0820 NO, SET DEFAULT = 0. JSB CVT1 YES, CONVERT. DEF P5 DEF CP5 M0820 STA SECUR * CLA LDB CP6 SEE CR SUPPLIED SZB,RSS SUPPLIED? JMP M0840 NO JSB CVT1 YES...CONVERT TO DEC DEF P6 DEF CP6 M0840 STA P6 SAVE CR * JSB RCRET CREATE A REMOTE FILE. DEF *+8 DEF STATS DEF IERR DEF P1 FILE NAME. DEF TEMP # BLOCKS, REC. SIZE. DEF TEMP+4 FILE TYPE. DEF SECUR SECURITY CODE. DEF P6 * JSB FMGER CHECK IF WE HAD A FMGR ERROR JMP M1000 GO CLOSE THE FILE * M0830 JSB FMGER FILE MANAGER ERROR? * JMP QUERY HED RENAME COMMAND * (C) HEWLETT PACKARD CO. 1976 * * RENAME XXXXXX,YYYYYY,S,CR * * XXXXXX = OLD FILE NAME. * YYYYYY = NEW FILE NAME. * S = SECURITY CODE, OPTIONAL. * CR =CART REF, OPTIONAL * M0900 JSB NAMCK IS OLD NAME SPECIFIED? * LDA CP2 IS NEW NAME SPECIFIED? SZA,RSS JMP M0950 NO, ERROR. LDA TAB+2 YES. JSB TRAIL * CLA LDB CP3 SECURITY CODE? SZB,RSS JMP M0910 NO, SET DEFAULT = 0. JSB CVT1 YES, CONVERT. DEF P3 DEF CP3 M0910 STA SECUR * CLA LDB CP4 SEE IF CR SUPPLIED SZB,RSS JMP M0920 NOT SUPPLIED JSB CVT1 CONVERT TO BINARY DEF P4 DEF CP4 M0920 STA P4 SAVE FOR RENAME * JSB RNAME RENAME A REMOTE FILE. DEF *+7 DEF STATS DEF IERR DEF P1 OLD NAME. DEF P2 NEW NAME. DEF SECUR DEF P4 * JMP M0830 HED CLOSE COMMAND * (C) HEWLETT PACKARD CO. 1976 * * CLOSE XXXXXX * * XXXXXX = FILE NAME. * M1000 JSB NAMCK IS THERE A FILE NAME? * JSB RCLOS CLOSE A REMOTE FILE. DEF *+4 DEF STATS DEF IERR DEF P1 FILE NAME. * JMP M0830 HED PURGE COMMAND * (C) HEWLETT PACKARD CO. 1976 * * PURGE XXXXXX,S * * XXXXXX = FILE NAME * S = SECURITY CODE, OPTIONAL. * CR =CART REF, OPTIONAL * M1100 JSB NAMCK NAME GIVEN? * CLA LDB CP2 SECURITY CODE? SZB,RSS JMP M1110 NO, SET DEFAULT = 0. JSB CVT1 YES, CONVERT. DEF P2 DEF CP2 M1110 STA SECUR * CLA LDB CP3 SEE IF CR SUPPLIED SZB,RSS JMP M1120 NOT SUPPLIED JSB CVT1 CONVERT TO BINARY DEF P3 DEF CP3 M1120 STA P3 SAVE FOR PURGE * JSB RPURG PURGE A REMOTE FILE. DEF *+6 DEF STATS DEF IERR DEF P1 DEF SECUR DEF P3 * JMP M0830 HED DLIST PROCESSOR * (C) HEWLETT PACKARD CO. 1976 * *DLIST [FILTER][,MSEC CODE][,CR][,TYPE] * * WHERE: *MSEC CODE=MASTER SECURITY CODE *CR =DISK LU *TYPE =FILE TYPE FILTER * M1200 LDA CP1 MOVE NAME TO PARMB SZA NAME SUPPLIED? JSB NAMCK YES...SPACE FILL LDA P1 MOVE NAME TO PARMB STA DLSN1 LDA P1+1 STA DLSN1+1 LDA P1+2 STA DLSN3 LDA CP2 MASTER SECURITY CODE SZA,RSS SUPPLIED? JMP M1201 NO JSB CVT1 YES...CONVERT IF DEF P2 DEF CP2 M1201 STA DMCOD SAVE MASTER SECURITY CODE LDA CP3 SEE IF CART LU SUPPLIED SZA,RSS NOT SUPPLIED JMP M1202 JSB CVT1 CONVERT TO BINARY DEF P3 DEF CP3 M1202 STA MDCR SAVE CART. LU LDA CP4 IS IF TYPE FILTER SUPPLIED CLE,SZA,RSS SUPPLIED? JMP M1203 NO JSB CVT1 YES...CONVERT IF DEF P4 DEF CP4 CCE SET FOR SUPPLIED M1203 RAL,ERA SET IN SIGN BIT IF SUPPLIED STA DTYP CLA SET FOR NEW REQ STA NEWRQ M1204 CLA,INA SET IN STREAM TYPE STA DSTRM LDA DEC27 54 CHAR LINE STA DLEN SAVE LENGTH JSB PTPON SET LINE BUSY DEF *+1 CLA SET FOR RECIEVE DATA JSB #TAM DEF *+6 DEC 8 DEF DSTRM DEC -50 PRMBA DEF PARMB DEC -54 INA,SZA ANY ERRORS? JMP LINER YES M1205 CLA,INA SET TO RECIEVE REQ JSB #TAM DEF *+4 DEC 5 DEF DSTRM DEC -50 INA,SZA ANY ERRORS? JMP LINER YES LDA DSTRM GET FIRST WORD OF REPLY JSB RPYCK SEE IF REPLY JMP M1205 NOT...IGNORE JSB PTPOF TURN OFF LINE BUSY DEF *+1 LDA DLST SEE IF WE ARE DONE SZA DONE? JMP QUERY YES LDA PRMBA LDB DLEN SEND OUT LINE JSB OPDIS JSB WAIT WAIT FOR TTY TO COMPLETE JMP M1204 GET ANOTHER LINE SPC 1 DEC27 DEC 27 HED RLOAD PROCESSING * (C) HEWLETT PACKARD CO. 1976 * *RLOAD...LOAD A REMOTE PROGRAM * CALLING SEQUENCE * JSB RLOAD * DEF *+5 * DEF LINE STATUS * DEF FILE MANAGER ERROR STATUS * DEF NAME * DEF STARTING ADDRESS * * STATUS ERROR CODES * =#TAM ERROR CODES * * ERROR CODE * 1=PROGL BUSY...TRY LATTER * 0=NO ERROR * -1=OPEN ERROR ON FILE * -2=FILE READ ERROR * -3=TRANSMISSION ERROR * -4=TRANSMISSION ERROR * -5=FILE CLOSE ERROR (MEMORY PROTECT) * -6=NO STARTING ADDRESS * SPC 2 PRGST NOP PRGER NOP PRGNM NOP PRGSA NOP RLOAD NOP JSB .ENTR GET PRAMS DEF PRGST LDA PRGSA GET STARTING ADDRESS LOC (OPTIONAL) STA PGSTA SAVE FOR LATTER JSB .IOC. OCT 40000 SSA DRIVERS ALL DONE JMP *-3 NO JSB PTPON SET LINE BUSY DEF *+1 CLA CLEAR OUT TEMPS STA PRGER,I CLEAR OUT ERROR WORD STA LSTAT STATUS WORD STA LODAD ADDRESS (OF DATA STA LDERR ERROR WORD STA LSC SECURITY CODE STA LDNFG DONE FLAG STA LNWRQ NEW REQUEST FLAG STA 3 CLEAR OUT TRANSFER ADDRESS STA PRGSA AND OPTIONAL STARTING ADDRESS STA FATAL CLEAR OUT FATAL FLAG * LDB MD3 MOVE IN NAME LDA LPNMA GET ADDRESS OF NAME AREA IN PARMB STA RLODA SAVE IN TEMP RLOD1 LDA PRGNM,I MOVE IN NAME STA RLODA,I SAVE NAME ISZ PRGNM ISZ RLODA INB,SZB DONE? JMP RLOD1 NO * * NOW GET THE PROGRAM * RLOD2 LDA $ESC DO THEY WANT OUT? SZA,RSS ? JMP RLD22 NO STA LDNFG YES...TELL PROGL STA FATAL SET FATAL NON ZERO RLD22 LDA B3 SET IN STREAM TYPE STA LSTRM CLA,INA JSB #TAM SEND REQ DEF *+4 DEC 6 DEF LSTRM DEC -50 JSB CKLST CHECK LOADER STATUS RLD23 CLA,INA READ REPLY JSB #TAM DEF *+4 DEC 5 DEF LSTRM DEC -50 JSB CKLST LDA LSTRM GET FIRST WORD OF REPLY JSB RPYCK SEE IF REPLY JMP RLD23 NOT REPLY...IGNORE LDA LSTAT READ THE STATUS CPA B1 IS THERE DATA? RSS YES JMP RLOD3 NO JSB MEMCK CHECK MEMORY BOUNDS LDA PLNGH GET LENGTH CLE,ELA CONVERT TO NEGATIVE BYTES CMA,INA STA DLNGH SAVE LENGTH CLA SET TO READ DATA JSB #TAM DEF *+4 DEC 5 DEF LODAD,I LOAD ADDRESS DLNGH NOP JSB CKLST CHECK STATUS JMP RLOD2 GET NEXT RECORD SPC 2 * * HERE IF NO DATA THERE * RLOD3 SSA ERROR? JMP LODER YES LDB FATAL ANY PREVIOUS ERRORS? SZB JMP RDON YES...GET OUT CPA B3 ID SEG COMING? JMP RLOD4 YES JSB #TAM DON'T WANT IT SEND STOP DEF *+2 DEC 2 * RLOD4 LDA LPNAM+1 GET STARTING ADDRESS LDB LODAD SEE IF STARTING ADDRESS SUPPLIED SZB,RSS ZERO...NOT SUPPPLIED CLA STA 3 SET IN STARTING ADDRESS LDB PGSTA DO THEY WANT STARTING ADDRESS SZB STA B,I LDB MD6 SZA,RSS STB PRGER NO..TELL THEM RDON JSB RESET SEE IF BUSY SET JSB PTPOF CLEAR EXC KEY DEF *+1 JMP RLOAD,I AND RETURN SPC 1 SPC 2 * * ROUTINE TO GET LOAD ERROR * LODER CLB SET IN CORRECT ERROR CODE CPA MD2 FILE MANAGER ERROR? CCB YES...-1 ERROR CPA MD3 BUSY? CLB,INB YES...SET TO +1 SZB,RSS HAVE AN ERROR CODE? LDB MD2 NO...NOW WE DO STA PRGER,I SAVE ERROR CODE JMP RDON AND GET OUT SPC 1 * * SUBROUTINE TO CHECK ON LINE STATUS * CKLST NOP STA PRGST,I SAVE STATUS INA,SZA ANY ERRORS? JMP RDON YES JMP CKLST,I NO