. . BUILD I/O FCT FROM FDT . . . (C) Copyright 1972-1978 John Walker . . This software is in the public domain . AXR$ DEFUNCT$ FANG PURE CODE . . LA,U A1,<FDT> . LMJ A2,IOGET . <RETURN> A0 = FCT REST: ZAP!! . IOGET* BGET IOL ALLOCATE AN I/O TABLE SA A1,IOFDT,A0 SAVE FDT POINTER DL A3,FDIN,A1 LOAD INTERNAL NAME FROM FDT DS A3,IOFN,A0 PUT INTO I/O PACKET SZ IOSTATUS,A0 INSURE STATUS IS POSITIVE SZ IOWAD,A0 CLEAR WORD-ADDRESSABLE FLAG SZ IOMASS,A0 CLEAR MASS STORAGE FLAG SZ IOOPT,A0 CLEAR I/O OPTIONS (MODE) FLAG LA A3,FDEQT,A1 LOAD EQUIPMENT CODE SSL A3,3 SHIFT OFF SUBTYPE TNE,U A3,2 WORD ADDRESSABLE STORAGE ? SNONZ IOWAD,A0 YES. MARK IT AS SUCH TG,U A3,2 AND IS IT MASS STORAGE ? SNONZ IOMASS,A0 YES. FLAG IT LA A3,FDBLEN,A1 LOAD ASSUMED BLOCK LENGTH SA A3,IOBLEN,A0 STORE INTO FCT FOR BUFFER ALLOCATION PUR LA A3,A1 SAVE FDT ACROSS INITBB LA A1,LOOKAHEAD LOAD I/O BUFFERING DEPTH AA,U A0,IOBB ADVANCE TO BOUNDED BUFFER ADDRESS INITBB . INITIALISE THE I/O BOUNDED BUFFER ANA,U A0,IOBB BACK UP TO START OF FCT LA A1,A3 RESTORE FDT ADDRESS . UPDATE FACILITY STATUS INFORMATION SA A0,A3 SAVE FCT ADDRESS LA,U A0,,A1 LOAD ADDRESS OF FDT LXI,U A0,11 GET LENGTH OF INFORMATION TO TRANSFER TZ IOMASS,A3 IS IT A TAPE FILE ? LXI,U A0,10 NO. TRANSFER CORRECT WORD COUNT (GRRRR! FITEM$ . UPDATE FACILITY INFORMATION tz iomass,a3 is this a mass storage file ? j iogntp yes. don't ask for tape position dl a4,x5 save original x5, x6 sa a1,x5 save the FDT address lmj x6,uptpos update tape position lx a1,x5 reload I/O FCT address ds a4,x5 restore original x5, x6 iogntp LA A0,A3 RESTORE FCT POINTER LA A3,FDBEXT,A1 LOAD BLOCKS EXTENDED FROM STATUS TNZ IOMASS,A0 IS IT A TAPE FILE ? SA A3,FDBLKN,A1 UPDATE CURRENT BLOCK IN FDT LA A3,FDMSAD,A1 LOAD BLOCK NUMBER / ADDRESS SA A3,FDIPLC,A1 PUT ADDRESS IN OUTSIDE WORLD WORD SA A3,IODRAD,A0 PUT INTO I/O PACKET J 0,A2 RETURN . . BUILD NON I/O FCT (FOR PRINT, ETC.) . . LMJ A2,IOGNF . <RETURN> A0 = FCT . IOGNF* BGET IOL ALLOCATE AN FDT LA A1,LOOKAHEAD LOAD I/O BUFFERING DEPTH AA,U A0,IOBB ADVANCE POINTER TO BOUNDED BUFFER INITBB . INITIALISE THE BOUNDED BUFFER ANA,U A0,IOBB BACK UP POINTER TO FCT START SZ IOMASS,A0 CLEAR MASS STORAGE FLAG SZ IOWAD,A0 CLEAR W. A. D. MODE SZ IOOPT,A0 CLEAR OPTIONS J 0,A2 RETURN END