R1 EQU 65 B11 EQU 11 A0 EQU 12 A1 EQU 13 A2 EQU 14 A3 EQU 15 A4 EQU 16 A5 EQU 17 S1 EQU 13 S2 EQU 12 S3 EQU 11 S4 EQU 10 S5 EQU 9 S6 EQU 8 H1 EQU 2 H2 EQU 1 XU EQU 017 U EQU 016 BCW EQU 6 BUFFER CONTROL WORD INDEX BLUL EQU 7 BUFFER LENGTH- USER LENGTH WORD INDEX UIL EQU 8 USER LOCATOR WORD INDEX BIL EQU 9 BUFFER LOCATOR WORD INDEX ICW EQU 10 IMAGE CONTROL WORD INDEX $(1). SDFI* L A1,BIL,A0 BUFFER IMAGE LOCATOR L A2,UIL,A0 USER IMAGE LOCATOR L A3,0,*A1 GET IMAGE CONTROL WORD S A3,ICW,A0 SET ICW IN FCT S A1,BIL,A0 UPDATE BUFFER IMAGE LOCATOR SSL A3,30 TE,U A3,077 SDF END OF FILE J $+4 NO AN,U A1,1 YES S A1,BIL,A0 J 1,B11 EOF RETURN L A3,ICW,A0 SSA A3,24 GET IMAGE WORD COUNT JP A3,$+2 IS IMAGE A CONTROL IMAGE L,S2 A3,ICW,A0 YES GET LENGTH TG,H2 A3,BLUL,A0 IWC GREATER THAN USER IMAGE AREA L,H2 A3,BLUL,A0 YES SDFXF L,H2 A4,BIL,A0 GET BUFFER IMAGE LOCATION A A4,A3 ADD IMAGE WORD COUNT L,H2 A5,BCW,A0 GET BUFFER LOCATION A,H1 A5,4,A0 ADD BUFFER LENGTH AN A4,A5 JP A4,SDFRD JUMP IF IMAGE OVERFLOWS BUFFER SDFBT L R1,A3 SET REPEAT COUNT BT A2,0,*A1 TRANSFER IMAGE S A1,BIL,A0 UPDATE BUFFER IMAGE LOCATOR L A3,ICW,A0 GET IMAGE WORD COUNT SSA A3,24 JP A3,$+2 IS IMAGE A CONTROL IMAGE L,S2 A3,ICW,A0 YES GET LENGTH AN,H2 A3,BLUL,A0 JN A3,2,B11 NORMAL RETURN IF IWC NOT GREATER THAN UL SDFEND L,H2 A4,BIL,A0 GET BIL A A4,A3 ADD IMAGE OVERFLOW WORD COUNT S,H2 A4,BIL,A0 SAVE BUFFER IMAGE LOCATOR L,H2 A5,BCW,A0 GET BUFFER LOCATION A,H1 A5,4,A0 ADD BUFFER LENGTH AN A4,A5 JN A4,2,B11 NORMAL EXIT IF NO BUFFER OVERFLOW SDFOV AN A3,A4 TP 3,A0 I/O COMPLETE ER WAIT$ . WAIT FOR IO L A5,5,A0 A,H1 A5,BLUL,A0 S A5,5,A0 UPDATE MASS STORAGE ADDRESS L,S1 A5,3,A0 GET STATUS JZ A5,$+5 IO ERROR TE,U A5,5 UNASSIGNED AREA J 0,B11 NO TNZ,H2 3,A0 YES-ANY WORDS READ J 0,B11 NO L A5,BCW,A0 GET BCW S,H2 A5,4,A0 SET BUFFER ADDRESS IN ACCESS WORD SSC A5,18 SWITCH BUFFERS S A5,BCW,A0 SAVE BCW S,H2 A5,BIL,A0 UPDATE BUFFER IMAGE LOCATOR ER IO$ . $W READ L A3,A4 SET OVERFLOW WORD COUNT J SDFEND SDFRD AN A3,A4 L R1,A3 SET REPEAT COUNT BT A2,0,*A1 TRANSFER PARTIAL IMAGE L A3,A4 TP 3,A0 I/O COMPLETE ER WAIT$ . WAIT FOR IO L A5,5,A0 A,H1 A5,BLUL,A0 S A5,5,A0 UPDATE MASS STORAGE ADDRESS L,S1 A5,3,A0 GET STATUS JZ A5,$+5 IO ERROR TE,U A5,5 UNASSIGNED AREA J 0,B11 NO TNZ,H2 3,A0 YES-ANY WORDS READ J 0,B11 NO L A5,BCW,A0 GET BUFFER CONTROL WORD S,H2 A5,4,A0 SET BUFFER ADDRESS IN ACCESS WORD SSC A5,18 SWITCH BUFFERS S A5,BCW,A0 SAVE BCW S,H2 A5,BIL,A0 UPDATE BUFFER IMAGE LOCATOR ER IO$ . READ L A1,BIL,A0 BUFFER IMAGE LOCATOR J SDFXF SDFIO* L A1,BCW,A0 S,H2 A1,4,A0 SET BUFFER ADDRESS IN ACCESS WORD S,H2 A1,BIL,A0 SET BUFFER IMAGE LOCATOR SSC A1,18 SWITCH BUFFERS ER IOW$ . READ AND WAIT L A5,5,A0 A,H1 A5,BLUL,A0 S A5,5,A0 UPDATE MASS STORAGE ADDRESS L,S1 A5,3,A0 GET STATUS CODE JZ A5,$+5 IO ERROR TE,U A5,5 UNASSIGNED AREA J 0,B11 NO TNZ,H2 3,A0 YES-ANY WORDS READ J 0,B11 NO S,H2 A1,4,A0 SET BUFFER ADDRESS IN ACCESS WORD SSC A1,18 SWITCH BUFFERS S A1,BCW,A0 ER IO$ . READ J 1,B11 NORMAL RETURN SDFIC* TP 3,A0 I/O COMPLETE ER WAIT$ . WAIT FOR IO L A5,5,A0 A,H1 A5,BLUL,A0 S A5,5,A0 UPDATE MASS STORAGE ADDRESS J 0,B11 NORMAL RETURN END