* I$PBI-I$PB FEB 4 2006 - VERSION 1 * * READ BINARY RECORD FROM HIGH SPEED PAPERTAPE READER * * HONEYWELL X16 16 BIT COMPUTER SOFTWARE * * PROGRAM LENGTH: 107 WORDS * * THIS SOURCE IS RECREATED FROM THE EXISTING OBJECT FILE (WHICH ORIGINATES * FROM HONEYWELL) * * THE SOURCE IS RECREATED BY: THEO ENGEL (THEO.ENGEL@HETNET.NL) * * CALLING SEQUENCE: * CALL I$PB * DAC ADDRESS 60 WORD DATABUFFER * (END OF MESSAGE RETURN) * (NORMAL RETURN) * * CALL I$PBI * DAC ADDRESS 60 WORD DATABUFFER * (END OF MESSAGE RETURN) * (NORMAL RETURN) * * I$PBI SETS I$PB IN THE STATE OF AN EOM RECORD READ AS LAST RECORD, SO * STARTS LOOKING FOR A SOM, SKIPPING LEADER, ETC. * SUBR I$PB SUBR I$PBI,INIT REL INIT DAC *-* NEW TAPE START, SKIP TO 1ST BLOCK SSM A1=1 STA TEMP TEMP WITH A1=1; EOM FLAG LDA INIT STA I$PB SET RETURN ADDRESS JMP I$PB+1 * I$PB DAC *-* LDA 0 STA XSV SAVE X OCP 1 START READER LDA* I$PB GET BUF POINTER ADD INDX + INDEX STA BUFF SET BUFFER POINTER JST CLBF CLEAR BUFFER LDA MBL X=BUFFER LENGTH (60 WORDS) STA 0 LDA TEMP LAST BLOCK WAS EOM? SNZ JMP I1 NO; A=0 I2 JST GET6 YES; A<>0 NEW BLOCK, SKIP TO SOM ERA SOM SOM? SNZ JMP I1 SOM ERA N002 NOT SOM; EOM? SZE JMP I2 NOT EOM JMP EXIT+1 EOM I1 JST GETW GET 16B WORD FROM 3 466 OCTADS STA* BUFF IRS 0 JMP I1 LDA M1 RECORD OVERRUN HLT JMP EXIT GETW DAC *-* JST GET6 GET JST GET6 GET JST GET6 GET LGL 1 LRR '012 MAKE 6.6.4 IN A JMP* GETW CLBF DAC *-* CLEAR BUFFER LDA MBL STA 0 CRA STA* BUFF IRS 0 JMP *-2 JMP* CLBF GET6 DAC *-* LGL 1 A1 => C LLR 6 6 BITS TO B(LSB) INA '1001 JMP *-1 CAS XOFF XOFF? JMP *+2 JMP XOF YES XOFF LGL '011 7BIT => A-LEFT C=BIT 8 CAS N177 177000? JMP C1 > 177000 LDA TAB = 177000 => 123 CAS TAB+1 < 177000 ; 176? SOM OCT 041000 LDA TAB+2 =176 => 121 CAS TAB+3 175? OCT 221 LDA TAB+4 =175 => 112 CAS TAB+5 174? N177 OCT 177000 LDA TAB+6 =174 => 5 C1 SRC CH8? ERA CH6 FLIP CH6 IF CH8 00174 JMP* GET6 XOF JST GET6 OCP '101 STOP READER ERA SOM SOM? SNZ JMP E1 SOM ERA N002 EOM? SZE JMP E1 NOT EOM SSM EOM SET A1 = 1 STA TEMP TEMP=-0 JMP EXIT+1 E1 STA TEMP TEMP=0 EXIT IRS I$PB SET NORMAL RETURN IRS I$PB SET EOM RETURN LDA XSV RESTORE X STA 0 JMP* I$PB * * WORKSPACE * TEMP OCT 100000 BUFF OCT 0 INDEXED BUFFER POINTER XSV OCT 0 TAB OCT 123000 (165) OCT 176000 OCT 121000 OCT 175000 OCT 112000 OCT 174000 OCT 005000 CH6 OCT 040000 CHANNEL 6 XON OCT 221 M1 OCT 177777 RECORD OVERRUN XOFF OCT 223 N002 OCT 002 MBL OCT 177704 =-60 INDX OCT 040074 END