ASMB,R,L,C * NAME: FMGR * SOURCE: 92064-18040 * RELOC: 92064-16017 * PGMR: G.L.M. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. 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. * * *************************************************************** * * NAM FMGR,1,80 92064-16017 REV.1650 761204 * ENT FMGR,N.OPL,O.BUF,ELOG.,AB.FM ENT .E.R,TMP.,MSS.,LODCB EXT OPEN,READF,DTTY,RMPAR,WRITF,.MVW EXT $CON,EXEC,.ENTR,IDCB1,IDCB2,IDCB3 EXT CONV.,OPEN.,CLO,.DRCT,MGLU,IMESS SUP * * CON1 NOP N20K OCT 160000 * ONP1 NOP ONP2 NOP ONP3 NOP ONP4 NOP ONP5 NOP * FMGR JSB RMPAR FETCH DEF *+2 THE ONP1A DEF ONP1 5 TURN ON PARMS * * LDA $CON,I FETCH TERMINAL LU AND B77 ISOLATE IT STA CON1 AND SAVE IT * * 1ST PARM CHECKS * LDA ONP1 FETCH PARM1 LDB N20K FETCH MIN ASCII WD ADB A IS THIS A ANSWER FILE? SSB,RSS WELL? JMP ITNME YES--CONTINUE * SZA,RSS IF DEFAULT USEC LDA CON1 USE CORRECT CONSOLE STA ONP1 SAVE CORRECT VALUE FOR OTHER CHECKS JSB DTTY INTERACTIVE? STA INT. SAVE RESULT (0=NO, NON ZERO = YES) * * GET MAGIC NAME FOR THIS LU * JSB MGLU DEF *+3 DEF ONP1 OBF DEF O.BUF * LDA OBF FETCH ADDRESS OF NAME JSB OPIN GO TRY TO OPEN IT(ERRORS RETURN TO USEC) * JMP USEC BAD RETURN FROM OPEN--USE CONSOLE * LDA ONP2 FETCH LOG (NORMAL RETURN) SZA,RSS DEFAULT? JMP W2K YEP--GO FIND SOMETHING TO USE * * LOG GIVEN--MUST BE INTERACTIVE * JSB DTTY VERIFY THAT IT IS INTERACTIVE LDB ONP2 FETCH LOG IN CASE IT OK SZA WELL? JMP W3K ----IT'S INTERACTIVE----CONTINUE * * LOG NOT INTERACTIVE * ISSUE BAD PARM ERROR CODE * THEN USE CORRECT TERMINAL * LDA .56 FETCH ERROR CODE STA .E.R SET IT JSB ONER USE IMESS FOR BOOT UP ERROR * * * LOG NOT GIVEN OR NOT INTERACTIVE * W2K LDA INT. WAS INPUT INTERACTIVE? LDB ONP1 FETCH IT IN CASE IT WAS SZA,RSS WELL? WKFL LDB CON1 NOPE--USE CONSOLE W3K STB ONP2 SET NEW LOG LU JSB MGLU GO GET MAGIC NAME FOR IT DEF *+3 DEF ONP2 ADDRESS OF NUMBER TO BE CONVERTED DEF O.BUF TEMP AREA FOR RESULT * * GO OPEN HER UP * JSB OPEN DEF O.2R DLO$ DEF LODCB DEF .E.R DEF O.BUF DEF OPOPT * O.2R SSA,RSS ANY PROBLEMS? JMP LSTWK * * ISSUE ERROR MESSAGE THEN TRY AGAIN USING CONSOLE * JSB ONER JMP WKFL * * * OPIN OPENS THE INPUT FILE/DEVICE * LDA ADDR ADDRESS OF NAME TO BE OPENED * JSB OPIN * * P+1=OPEN ERROR WAS FOUND--ERROR HAS BEEN ISSUED * P+2=NORMAL RETURN * OPIN NOP STA INME JSB OPEN DEF O.1R DIN$ DEF INDCB DEF .E.R INME NOP ADDRESS OF BUF HOLDING NAME GOES HERE DEF OPOPT OPEN OPTION * O.1R SSA,RSS ANY ERRORS? JMP GDD NOPE--GO EXIT P+2 * JSB ONER ISSUE ERROR CODE JMP OPIN,I RETURN P+1 (BAD RETURN) * GDD ISZ OPIN ADVANCE TO GOOD RETURN JMP OPIN,I RETURN * * ONER NOP LDA .E.R JSB STER GO SET UP ERROR MESS JSB IMESS DEF RTRN DEF .2 DEF ERMES DEF .5 RTRN JMP ONER,I * * * * SPC 5 * * INPUT IS A FILE NAME * ITNME LDA ONP1A FETCH ADDRESS OF NAME JSB OPIN GO OPEN IT JMP NOGD ERROR FROM OPEN--SET UP TO USE DEFAULTS * LDA DIN$ OPEN WAS OK--NOW ADA .3 SEE IF IT'S INTERACTIVE LDA A,I FETCH LU -DTTY ISOLATES IT STA EX! SAVE THE LU JSB DTTY STINT STA INT. LDB ONP5 FETCH LIST PARM STB ONP3 SET FOR NORMAL LIST PROCESSING SZA,RSS IF INPUT IS INTERACTIVE---SKIP JMP WKFL GO SET CONSOLE AS LOG DEVICE * LDB EX! FETCH INPUT LU JMP W3K GO SET IT AS LOG ALSO * * * * NOGD LDA CON1 FETCH CONSOLE LU STA ONP2 SET AS LOG LDA ONP5 STA ONP3 SET LIST JMP USEC GO DO EVERYTHING DEFAULT * * LSTWK LDA ONP3 FETCH LIST LU SZA,RSS SKIP IF NOT DEFAULT LDA .6 DEFAULT TO LU 6 STA TMP. SAVE IT FOR USE BY SUBS * LDA DIN$ ADDRESS OF INPUT DCB STA IN$ SET AS CURRENT INPUT FILE * JSB CLOAL CLOSE ALL FILES * WHICH MAY HAVE BEEN LEFT OPEN SPC 10 * * COMMAND INPUT FILE OPEN-- * FETCH AND PARSE NEXT COMMAND * NXCM JSB RE.C GO GET A COMMAND CLA CLEAR COMMAND ADDRESS IN CASE STA CMAD ONLY BLANK OR CONTROL IS ENTERED * JSB PARS GO PARSE IT * * LDA CMAD FETCH COMMAND ADDRESS SZA,RSS IF ZERO THEN 0 NON-BLANK CHARS HAVE BEEN ENTERED JSB CMND? ERROR-- * * COMMAND HAS BEEN IDENTIFIED AND ADDRESS IS IN CMAD * CLA STA .E.R CLEAR THE ERROR PARM JSB CMAD,I CALL THE ACTION ROUTINE DEF CALR DEF P.CNT DEF P.RAM DEF .E.R * CALR LDA .E.R SZA,RSS JMP SHUT JMP ELOG. SPC 5 * * INDCB BSS 16 LODCB BSS 16 .E.R NOP * * * TMP. NOP TMP.2 OCT 0,0 SC.L NOP CRLU NOP SPC 10 AB.FM LDA .E.R JMP ELOG. SPC 5 MSCD NOP MSS. NOP JSB .ENTR DEF MSCD LDA MSCD,I * * * ELOG. JSB STER GO SET UP ERROR MESS JSB WRITF DEF ERMS DEF LODCB DEF .E.R DEF ERMES DEF .5 ERMS LDA DLO$ STA IN$ SWITCH TO LOG DEVICE FOR INPUT STA INT. SET INTERACTIVE FLAG * JSB CLO CLOSE THE INPUT FILE DEF INDCB * CLO2 CLB LDA MSS. STB MSS. SZA JMP A,I SHUT JSB CLOAL CLOSE ALL LIBRARY DCBS * CLRTN JMP NXCM GO GET NEXT COMMAND * * * STER NOP LDB BLK IF NOT NEG USE BLANK SSA LDB BSGN STB ESGN SSA CMA,INA STA OLDER SAVE ERROR CODE JSB CONV. DEF CVTN DEF OLDER DEF ECDE DEF .3 CVTN JMP STER,I * * * ZERO NOP ERMES ASC 3,FMGR ESGN NOP ECDE NOP * * * * BSGN ASC 1,- BLK ASC 1, OLDER NOP SPC 5 ERR? CLA LDB IBP FETCH CURRENT BYTE ADDRESS CLE,SLB,ERB DETERMINE WHICH BYTE TO ZAP LDA HBTE SAVE HIGH BYTE AND B,I ELSE USE 0 * IOR B77 INCLUDE "?" SEZ,RSS IF CURRENT BYTE=HIGH RE-POSITION ALF,ALF STA B,I SET BACK INTO INPUT BUFFER * * DETERMINE ECHO LENGTH * ERB SET CHAR FLAG INTO SIGN OF B LDA DNFLG FETCH REMAINING COUNT (1'S COMP & BYTE) SZA SKIP COMP IF ZERO CMA MAKE IT POSITIVE CLE,ERA MAKE IT WORDS CMA,INA SET COUNT NEG ADA ECH ADD TO ORGINIAL COUNT CLE,ELA MAKE IT BYTES SSB,RSS IF IT WAS HIGH BYTE INA BUMP CHAR COUNT CMA,INA SET IT NEG FOR CHAR COUNT STA ECH STORE PRINT LENGHT JSB ECHO GO PRINT IT LDA .10 STA .E.R JMP AB.FM * * HBTE OCT 177400 * SKP * * EX! NOP * JSB CLO DEF INDCB CLOSE THE INPUT FILE * * EXR1 JSB WRITF DEF EXR3 DEF LODCB DEF .E.R DEF ENDM ISSUE END FMGR MESSAGE DEF .5 DON'T NEED TO CLOSE LOG AS IT MUST BE LU * EXR3 JSB CLOAL CLOSE ALL LIBRARY DCBS EXR4 JSB EXEC DEF *+2 DEF .6 TERMINATE * * * CLOAL NOP THIS SUBROUTIONE CLOSES ALL LIBRARY DCBS JSB CLO DEF IDCB1 JSB CLO DEF IDCB2 JSB CLO DEF IDCB3 JMP CLOAL,I * ENDM ASC 5,$END FMGR * * * * SPC 10 * LLTMP NOP LLST NOP LLER NOP * LL! NOP JSB .ENTR DEF LLTMP ISZ LLST JSB OPEN. DEF BKLL DEF IDCB1 DEF LLST,I DEF N.OPL DEF B411 * BKLL LDA LLST,I STA TMP. ISZ LLST DLD LLST,I DST TMP.2 JSB .DRCT DEF N.OPL ASSURE DIRECT ADDRESS LDB A,I STB SC.L INA LDB A,I STB CRLU CLA STA LLER,I JMP LL!,I * B411 OCT 411 OPOPT EQU B411 * * B100 OCT 100 BFAD NOP TIT ASC 3,TITLE> OCT 37137 * * ********WRITE EOF************ * * CODE NOP USE FIRST PARM AS TEMP LST NOP ER NOP * * * WE! NOP JSB .ENTR DEF CODE * LDA LST,I FETCH FIRST PARM TYPE FLAG CPA .1 MUST BE NUMERIC CLA,RSS CLEAR ERROR CODE JMP ERR56 BAD PARAMETER * STA ER,I * ISZ LST ADVANCE TO LU LDA LST,I AND FETCH IT SSA ALLOW POS CMA,INA AND NEG. * IOR B100 INCLUDE EOF CONTROL STA CODE SAVE FOR CONTROL REQUEST * JSB EXEC DEF WE1 DEF CNTRL DON'T ALLOW ABORT DEF CODE WE1 RSS BAD LU JMP WE!,I ALL DONE EXIT * LDA N17 BAD LU STA ER,I SET IT JMP WE!,I GET OUT * * CNTRL OCT 100003 N17 DEC -17 SPC 5 * ******FETCH DIRECT ADDR******** * .ADDR NOP RAL,CLE,ERA SEZ LDA A,I JMP .ADDR,I * ERR56 LDA .56 FETCH ERROR CODE JMP ELOG. GO ISSUE MESSAGE * .56 DEC 56 * * * *********WRITE DIRECTORY ENTRY************* * * * B77 OCT 77 .77 DEC 77 LU NOP USE FIRST AS TEMP LSTD NOP ADDRESS OF PARSE RESULT FIELD ER. NOP * * * WD! NOP JSB .ENTR DEF LU * ISZ LSTD ADVANCE TO NAME PARM EXT NAM.. JSB NAM.. GO SEE IF VALID NAME DEF RTN.. DEF LSTD,I * * RTN.. STA ER.,I SET RETURN CODE(-15 IF BAD NAME) SZA IF ZERO,OK JMP WD!,I NOPE--BAD NAME * * LEGAL FILE NAME * ****BOOT UP SHOULD FETCH DIRECT ADDRS * LDA O.BFA JSB .ADDR FETCH DIRECT ADDR STA BFAD SET ADDRESS OF OUTPUT BUFFER LDB BLNK FETCH ASCII BLANKS STB A,I SET INTO FIRST WORD OF OUTPUT BUFFER STA B INB SET (A)+1 AS DEST OF MOVE * JSB .MVW BLANK OUT -OUTPUT BUFFER DEF .77 NOP * * LDA LSTD,I FETCH FIRST 2 CHARS STA BFAD,I SET INTO BUFFER ISZ BFAD BUMP DEST ADDR ISZ LSTD BUMP SOURCE ADDR DLD LSTD,I FETCH REST OF NAME DST BFAD,I SET REST OF NAME * LDB .2 ADVANCE TO ADB LSTD LU PARM LDA B,I FETCH PARM TYPE FLAG CPA .3 DON'T ALLOW JMP ERR56 BAD PARAMETER * INB LDA B,I FETCH LU SZA,RSS DEFAULT TO THE LEFT CTU LDA .4 SSA ALLOW POS CMA,INA AND NEG LU'S STA LU SAVE FOR EXEC CALL * ADB .4 ADVANCE TO TYPE WORD LDA B,I AND B377 ISOLATE 2ND CHAR CPA ZS ASCII SOURCE? JMP HERE YEP CPA ZR BINARY RELOCATABLE? JMP HERE YEP CPA ZA BINARY ABS? JMP HERE YEP CPA ZD BINARY DATA? JMP HERE YEP CPA ZC AMD CASSETTE? JMP HERE YEP LDB .56 PRE-SET ERROR CODE STB ER.,I FOR BAD PARM SZA DEFAULT? JMP WD!,I NOPE--BAD INPUT * LDA ZS DEFAULT = SOURCE HERE LDB BFAD FETCH OUTPUT BUFFER ADDRESS ADB .2 ADVANCE TO TYPE ADDRESS IOR HBLK ADD A BLANK CHAR TO LEFT BYTE STA B,I AND SET TYPE INTO BUFFER ADB .2 ADVANCE TO COMMENTS FIELD STB BFAD AND SAVE IT'S ADDRESS * * * ISSUE MESSAGE TO LOG DEVICE * REQUESTING COMMENTS * JSB WRITF DEF RTNT DEF LODCB DEF .E.R DEF TIT DEF .4 * RTNT JSB READF DEF RTNR DEF IN$,I DEF ER.,I DEF BFAD,I DEF .36 DEF LEN * RTNR SZA JMP WD!,I IF ANY ERRORS EXIT * LDA LEN FETCH COMMENTS LEGNTH ADA .5 INCLUDE DIRECTORY INFORMATION STA LEN SET WRITE LEGNTH * * * JSB EXEC DEF WRT1 DEF .2 DEF LU DEF O.BUF DEF LEN * WRT1 JMP WD!,I * * .2 OCT 2 .3 OCT 3 .4 OCT 4 .5 OCT 5 .6 OCT 6 .10 DEC 10 .36 DEC 36 HBLK OCT 20000 ZS OCT 123 ZA OCT 101 ZD OCT 104 ZC OCT 103 ZR OCT 122 * * * SPC 10 TCNT NOP TLST NOP TER NOP * TR! NOP JSB .ENTR DEF TCNT ISZ TLST ADVANCE TO NAME/LU * LDA TLST,I FETCH IT SZA,RSS * * TRANSFER BACK TO THE LOG DEVICE * JMP ERMS * * OPITR JSB OPEN. GO OPEN NEW TRANSFER FILE DEF BACK XX DEF INDCB DEF TLST,I DEF N.OPL DEF OPOPT * BACK LDA XX FORCE INPUT DCB TO BE USED STA IN$ ADA .3 ADVANCE TO LU WORD LDA A,I FETCH IT JSB DTTY STA INT. SET INTERACTIVE FLAG JMP TR!,I * SKP * * * * RE.C SHOULD DO THE FOLLOWING: * 1- DETERMINE IF INPUT FROM INTERACTIVE DEVICE * IF SO, PROMPT ON THAT DEVICE * 2- READ FROM INPUT FILE/DEVICE * 3- IF ECHO REQUIRED-DO IT TO LOG * * * GLOBALS * * ECH CMND INPUT LEGNTH * INT. INTERACTIVE FLAG * CAM.I CMND INPUT BUFFER * INDCB INPUT DCB * .1 OCT 1 * RE.C NOP LDA INT. IF NOT INTERACTIVE SZA,RSS JMP WR.1R DON'T PROMPT * JSB WRITF DEF WR.1R DEF IN$,I DEF .E.R DEF PRM DEF .1 * WR.1R JSB READF DEF WR.2R DEF IN$,I DEF .E.R DEF CAM.I DEF .36 DEF ECH LEGNTH PARM * WR.2R SSA IF ANY ERROR JMP WR.1R RETRY * * LDA ECH IF EOF CPA N1 TRANSFER TO JMP ERMS LOG DEVICE * * * DO ECHO IF IN FROM NON INT WORK * * LDA INT. FETCH INTERACTIVE FLAG SZA,RSS JSB ECHO GO DO ECHO JMP RE.C,I IT'S INTERACTIVE SO EXIT * SPC 5 ECHO NOP JSB WRITF DEF ECRT DEF LODCB DEF .E.R DEF CAM.I DEF ECH ECRT JMP ECHO,I IN$ NOP PRM OCT 35137 BACK SPACE AND BACK ARROW * SKP