ASMB,R,L,C HED COMPILER LIBRARY OPEN ROUTINE NAM OPN.C,7 92064-18237 780407 REV. 1805 $CLIB * * *************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * * REPRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * *************************************************************** * * * * SOURCE PART NUMBER : 92060-18054 * * * * * OPEN DEFAULT FILE * * THIS ROUTINE WILL INSPECT THE FILE CONTROL BLOCK AND DETERMINE * WHETHER TO OPEN A 'FMGR' FILE, SCRATCH FILE OR LOGICAL UNIT. * IN THE CASE OF THE 'FMGR' FILE IT WILL SET UP THE PARAMETERS * AND CALL 'GEX.C'. IF IT IS A SCRATCH FILE IT WILL GET A TRACK * FOR RTE OR A SCRATCH FILE IN THE CASE OF OF RTE-M. * * * * * * CALLING SEQUENCE: * * A REGISTER CONTAINS THE PROMPT CHARACTERS * * JSB OPN.C * DEF FCB * ERROR RETURN * NO ERROR RETURN * * ON RETURN A < 0 INDICATES ERROR * A = 0 INDICATES NO ERROR * * * * ENTRY POINT: * ENT OPN.C * * EXTERNALS: * EXT EXEC SYSTEM EXEC EXT GEX.C CREATE-OPEN ROUTINE EXT LURQ LOCK LU ROUTINE EXT CRE.C CREATE ROUTINE EXT ADS.C FCB ADDRESS PASSER ROUTINE EXT C.TRN ASCII STRING CONTAINING TURN ON LIST FROM 'NAMR' EXT .MVW MOVE WORD ROUTINE EXT C.HLK HEAD OF FCB LINKED LIST EXT C.LNK FCB LINK WORD EXT C.FCB ADDRESS OF FCB EXT C.FID FCB ID WORD EXT C.FLU FCB LOGICAL UNIT WORD EXT C.STR FCB CURRENT EXTENT TRACK NUMBER WORD EXT C.SSC FCB CURRENT EXTENT SECTOR NUMBER WORD EXT C.EXT FCB EXTENT NUMBER WORD EXT C.RSC FCB EXTENT OFFSET NUMBER EXT C.S/T FCB NUMBER OF BLOCKS/TRACK WORD EXT C.#SC FCB NUMBER OF BLOCKS/EXTENT WORD EXT C.BFF FCB BUFFER ADDRESS WORD EXT C.WRD FCB CURRENT WORD POINTER WORD EXT C.FAD FCB DIRECTORY ADDRESS FROM D.RTR WORDS EXT C.HTR FCB START OF FILE TRACK NUMBER WORD EXT C.HLU FCB HEAD LOGICAL UNIT NUMBER EXT C.SLU FCB SECONDARY LOGICAL UNIT NUMBER WORD EXT C.RC# FCB RECORD NUMBER EXT C.?? FCB PROMPT CHARACTERS EXT C.GRW FCB REWIND GUARANTEE ROUTINE ADDRESS EXT C.INS FCB $INCLUDE ROUTINE ADDRESS EXT C.CNT FCB CONTROL ROUTINE ADDRESS * EXT C.NAM DEFAULT FILE NAME EXT C.SC DEFAULT FILE SECURITY CODE EXT C.CR DEFAULT FILE CARTRIDGE OR LU NUMBER EXT C.FTY DEFAULT FILE TYPE EXT C.FSZ DEFAULT FILE SIZE EXT C.TYP 'NAMR' TYPE EXT C.FCB ADDRESS OF FCB EXT C.FST FIRST CHARACTER OF SOURCE NAMR * EXT D.RP1 RETURN PARAMETERS EXT D.RP2 OF OPEN CREATE ROUTINE 'GEX.C' EXT D.RP3 EXT D.RP4 EXT D.RP5 EXT D.RP6 EXT D.RP7 * * * A EQU 0 B EQU 1 * OPN.C NOP JSB ADS.C SET UP FILE CONTROL BLOCK ADDRESSES DEC 0 STA PRMPT SAVE PROMPT CHARACTERS CLA STA C.EXT,I STA C.RSC,I INITIALIZE STA C.WRD,I FCB FOR STA C.LNK,I RESTART STA C.RC#,I STA C.??,I LDA C.FID,I ELA,CLE,ERA CLEAR OUT DEVICE TYPE FLAG STA C.FID,I LDA TRNON JSB INDCK MAKE DIRECT STA TRNON LDA TOADD JSB INDCK STA TOADD MAKE DIRECT * LDA C.FID,I EXTRACT ALF,RAL DEFAULT PARAMETER AND B17 NUMBER JSB GTNAM MOVE DEFAULT PARAMETER TO BUFFER * * DETERMINE TYPE OF OPERATION * * THE FCB CONTAINS THE OPERATION TYPE AS FOLLOWS: * * TYPE = 0 IS READ SOURCE FILE(OR LU) * = 1 IS WRITE BINARY FILE(OR LU) * = 2 IS WRITE SCRATCH FILE * = 3 IS WRITE LIST FILE(OR LU) * = 4 IS READ SOURCE AND GUARANTEE REWINDABLITY * LDA C.FID,I EXTRACT AND B17 FCB OPERATION TYPE STA B STA OPTYP SAVE FILE OPEN TYPE CPB .2 WRITE SCRATCH JMP WRTSC YES, CREATE SCRATCH FILE * LDA C.TYP ISOLATE AND .3 PARAMETER TYPE CPA .1 INTEGER(LOGICAL UNIT!) JMP OPNLU YES! CPA .3 FILE NAME? JMP *+3 YES! SZA NULL? JMP E200 NO SUCH TYPE! * CPB .1 WRITE BINARY? JMP WRITB YES , CREATE BINARY FILE! CPB .3 WRITE SOURCE? JMP WRITS YES, CREATE SOURCE FILE * * READ SOURCE FILE OPEN * SZA,RSS NULL SOURCE NAMR? JMP E202 YES! CCA STA TMP SET UP READ SOURCE FLAG FOR SECURITY CODE CHECK LDA C.NAM ISOLATE FIRST AND HIMSK CHARACTER STA C.FST AND SAVE FOR LIST AND BINARY CHECK * * * * GEX.C IS CALLED TO OPEN A FILE, ON RETURN FROM GEX.C * THE FOLLOWING PARAMETERS ARE PASSED BACK IN D.RP1 THRU D.RP7 * * D.RP1 = ERROR CODE, IF > 0 THEN THE # OF SECTORS IN THE FILE * D.RP2 = TRACK AND LOGICAL UNIT * D.RP3 = OFFSET AND SECTOR NUMBER * D.RP4 = TRACK NUMBER (LU IF TYPE = 0) * D.RP5 = NUMBER OF SECTORS IN TRACK AND SECTOR NUMBER * D.RP6 = SECURITY CODE OF THE FILE * D.RP7 = TYPE OF THE FILE * * OPEN LDA .2 CALL LDB C.CR ROUTINE TO JSB GEX.C OPEN A FILE DEF C.NAM JMP ERR * LDA D.RP7 CHECK TO SEE IF FILE TYPE MATCHES LDB OPTYP CPB .1 BINARY FILE OPEN?? JMP BIN YES! CPB .3 LIST FILE OPEN? JMP LST YES! * CKSC LDA D.RP6 IS SECURITY CPA C.SC CODE OF FILE SAME AS USER SUPPLIED? JMP RETRN YES, OK! SSA FILE WRITE PROTECTED? JMP E7 YES, ILLEGAL SECURITY CODE! ISZ TMP SOURCE FILE READ? JMP E7 NO, NO CAN WRITE ON EITHER! RETRN LDB D.RP1 TYPE 0 FILE? LDA D.RP4 A=LU#,B=#SECTRS SZB,RSS JMP OPNL1 YES JSB SETUP SET UP THE FCB * * LINK THE FCB INTO THE LIST - HEAD IS GLOBAL CALLED C.HLK * LDA C.HLU,I SET TRACK LU STA C.FLU,I INTO PRIMARY LU RET1 CLA,INA STA C.WRD,I CLEAR WORD PTR LDA C.HLK GET HEAD LDB C.FCB GET ADDRESS OF FILE CONTROL BLK STB C.HLK AND SET IT IN HEAD POINTER SZA HEAD LINK PTR EMPTY? STA C.FCB,I NO, SO PLACE ADDRESS IN NEW FCB CLA CLEAR ERROR RETRUN JMP EXIT TAKE P+2 EXIT * BIN CPA .5 BINARY FILE? JMP CKSC YES! JMP E16 NO, ILLEGAL FILE TYPE * LST CPA .3 SOURCE FILE? JMP CKSC YES! CPA .4 SOURCE FILE? JMP CKSC YES! JMP E16 NO ,ILLEGAL FILE TYPE * E202 LDA M202 NO SOURCE NAMR RSS E15 LDA M15 BAD NAMR RSS E16 LDA M16 ILLEGAL TYPE RSS E201 LDA M201 NO BINARY ERROR RSS E200 LDA M200 BAD FCB FORMAT ERROR RSS TAKE P+1 ERROR EXIT E7 LDA M7 SECURITY CODE ERROR RSS EXIT ISZ OPN.C TAKE P+2 EXIT ERR JMP OPN.C,I EXIT * * WRITE BINARY (TYPE=5) FILE * WRITB LDA C.TYP IS NAME SZA,RSS A NULL? JMP E201 YES SET ERROR TO 201 SO NOT TO OUTPUT BINARY LDA C.NAM IS AND HIMSK FIRST CPA MINUS CHARACTER A MINUS? RSS YES , USE SOURCE NAME EXECPT FOR FIRST CHAR JMP CRE CREATE A TYPE 5 FILE! SMNAM CLA,INA GET SOURCE JSB GTNAM NAMR LDA C.FST IS FIRST CHARCTER CPA AMPSD AND AMPERSAND? RSS YES! JMP E15 NO! LDA C.NAM USE SOURCE AND B377 IOR PERCT NAMR EXCEPT STA C.NAM REPLACE FIRST CHAR BY % CRE LDB PERCT SET UP FOR POSSIBLE DUPLICATE FILE NAME CHECK LDA .5 JMP CREAT CREATE FILE OR OPEN IT * * * WRITE SOURCE FILE - LIST(CREATE TYPE 4 FILE) * WRITS LDA C.TYP IS NAMR SZA,RSS A NULL? JMP LU6 YES, SET LU TO 6 LDA C.NAM IS AND HIMSK FIRST CPA MINUS CHARACTER A MINUS? RSS YES, CREATE OR OPEN FILE WITH SAME NAME AS SOURCE JMP CRE1 CREATE FILE NAME WITH SOURCE NAMR * CLA,INA GET LIST JSB GTNAM NAMR LDA C.FST IS FIRST CPA AMPSD CHARACTER OF SOURCE NAME AN AMPERSAND? RSS YES, CREATE OR OPEN ('NAMR) JMP E15 ILLEGAL NAME LDA C.NAM STUFF IN AND B377 IOR APOST APOSTROPHE STA C.NAM CRE1 LDA .4 CREATE TYPE 4 FILE LDB APOST SET UP CREAT STB TMP APOSTROPHE FOR POSSIBLE DUPLICATE FILE NAME CHECK JSB CRE.C AND GO TO TO IT NOP ERROR, DO SPECIAL CHECK CPA M2 DUPLICATE NAME? JMP CKNAM YES, CHECK IF SAME AS SOURCE NAMR SSA,RSS ANY OTHER ERROR? JMP RETRN SETUP FCB JMP ERR YES, PASS ON THRU * * CHECK NAME TO SEE IF IT STARTS WITH A (') FOR LIST OR (%) FOR * BINARY. IF SO OPEN IT AND USE IT IF NOT THEN ERR 15. * CKNAM LDA C.NAM GET AND HIMSK FIRST CHARACTER CPA TMP IS IT A (') FOR LIST OR (%) FOR BINARY? JMP OPEN YES, OPEN EXISTING FILE JMP E15 NO, GIVE ERROR * * * * * WRITE SCRATCH FILE (GET TRACK FOR RTE-II,RTE-III, AND RTE-IV) * (OPEN SCRATCH FILES FOR RTE-M) * WRTSC LDA .4 JSB GEX.C GET SCRATCH FILE JMP ERR JMP RETRN SET UP FCB * * * * OPEN LOGICAL UNIT DEVICE * LU6 LDA .6 DEFAULT TO LU 6 RSS OPNLU LDA C.NAM GET LU FROM OPNL1 STA LU SET CONTROL LU IOR B600 SET V AND K BITS TO ECHO AND PRINT COLUMN ONE ON LP CPB .1 BINARY? JMP WRTBN YES! CPB .4 SOURCE INPUT? JMP INSRC YES! SZA,RSS INPUT SOURCE-GUARANTEE REWINDABILITY? JMP INSRC YES! STA C.FLU,I SET LU SSA CMA,INA STA LU * DTTY2 JSB EXEC REQUEST STATUS DEF RT1 DEF .13 DEF LU DEF EQ5 DEF EQ4 DEF SPC * * RT1 LDA EQ5 CHECK FOR DVR00 AND TYPE SZA,RSS JMP GOOD YEP--TAKE GOOD EXIT * ADA NDVR5 CHECK FOR DVR05 SZA,RSS JMP SBCNL YEP--SO FAR SO GOOD--GO CHECK FOR SUB CHNL 0 * JMP LULK * SBCNL LDA SPC FETCH SUB CHNL AND B77 SZA JMP LULK NOT ZERO * GOOD LDA PRMPT SET PROMPT STA C.??,I CHARACTERS UP OPN1 LDA C.FID,I SET SIGN IOR SIGN BIT TO SHOW STA C.FID,I IT IS AN LU. LDA C.FID,I IS THIS AND B17 A REWINDABLE SOURCE CPA .2 READ OPERATION? RSS YES! JMP RET1 NO! * LDA .4 GET SCRATCH JSB GEX.C FILE JSB ERR JSB SETUP SET UP FCB LDA C.HLU,I AND ALSO STA C.SLU,I SETUP SECONDARY LU JMP RET1 * LULK JSB LURQ LOCK DEF *+4 DEF B101 THE DEF C.FLU,I DEF .1 DEVICE CPA .1 LU ALREADY LOCKED? JMP OPN1 YES! SZA,RSS REQUEST MAKE IT? JMP OPN1 YES! JSB EXEC NO RESCHEDULE DEF *+6 DEF .12 DEF .0 AGAIN 15 SECONDS FROM NOW DEF .2 DEF .0 DEF M15 JMP LULK * WRTBN IOR B100 SET BINARY STA C.FLU,I FLAG LDA LU IOR B1000 SET OUTPUT LEADER CONT STA LU JSB EXEC OUTPUT CONTROL FUNCTION DEF *+3 DEF .3 DEF LU JMP DTTY2 * INSRC LDA LU IOR B700 SET END-OF PAPER TAPE JMP CONT * SIGN DEF 0,I * * INDIRECT ROUTINE * INDCK NOP RSS LDA A,I RAL,CLE,SLA,ERA JMP *-2 JMP INDCK,I * * GET THE DEFAULT FILE NAMR INTO GLOBAL STORAGE * * CALLING SEQUENCE: * A = DEFAULT PARAMETER NUMBER * JSB GTNAM * * GTNAM NOP ADA M1 COMPUTE MPY .10 OFFSET WITHIN BUFFER ADA TRNON LDB TOADD MOVE DATA JSB .MVW TO BUFFER DEF .8 NOP LDA C.CR IS CARTRIDGE SZA,RSS NUMBER SUPPLIED? LDA C.TRN+5 NO, USE SOURCE CR! STA C.CR JMP GTNAM,I RETURN * * * SET UP DATA IN FCB * SETUP NOP LDB C.BFF LDA B100K SET UP BUFFER STA B,I CCA INB STA B,I FLAGS LDA D.RP1 MAKE SECTORS/FILE INTO BLOCKS/FILE RAR STA C.#SC,I AND SAVE IN FCB LDA D.RP2 AND B77 ISOLATE FILE LU AND STA TMP SAVE IT CMA,INA SET MINUS LU STA C.TRN+5 SOURCE FILE NAMR FOR LIST, BINARY DEFAULTS LDB C.#SC,I GET FILE SIZE LDA D.RP4 GET START STA C.STR,I TRACK AND SET IN FCB STA C.HTR,I IN BOTH CURRENT AND HEAD TRACK LDA TMP DISC FILE! IOR PROBT OR IN DISC UNPROTECT BITS STA C.HLU,I SET IN FCB LDA D.RP5 EXTRACT AND B377 START SECTOR STA C.SSC,I SET START BLOCK XOR D.RP5 EXTRACT ALF,ALF #BLOCKS/TRACK RAR STA C.S/T,I SET UP NUMBER OF BLOCKS/TRACK IN FCB JMP SETUP,I * * * * * CONSTANTS AND BUFFERS * TRNON DEF C.TRN TOADD DEF C.NAM TURN ON STRING ADDRESS TMP BSS 1 OPTYP BSS 1 .0 DEC 0 .1 DEC 1 .2 DEC 2 .3 DEC 3 .4 DEC 4 .5 DEC 5 .6 DEC 6 .8 DEC 8 .10 DEC 10 .12 DEC 12 .13 DEC 13 M1 DEC -1 M2 DEC -2 M7 DEC -7 M15 DEC -15 M16 DEC -16 M200 DEC -200 M201 DEC -201 M202 DEC -202 B17 OCT 17 B77 OCT 77 B100 OCT 100 B377 OCT 377 B600 OCT 600 B700 OCT 700 B1000 OCT 1000 HIMSK OCT 177400 TYPE OCT 37400 NDVR5 OCT -2400 EQ4 NOP EQ5 NOP LU NOP SPC NOP B101 OCT 100001 B100K OCT 100000 PROBT OCT 74000 PRMPT BSS 1 MINUS OCT 26400 MINUS CHARACTER AMPSD OCT 23000 AMPERSAND PERCT OCT 22400 PERCENT CHARACTER APOST OCT 23400 APOSTROPHE CHARACTER SPC 2 END