* O$PB-O$PS FEB 4 2006 - VERSION 1 * * PUNCH BINARY RECORD FROM HIGH SPEED PAPERTAPE PUNCH * * HONEYWELL X16 16 BIT COMPUTER SOFTWARE * * PROGRAM LENGTH: 87 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) * * O$PB: PUNCH BINARY RECORD FROM HIGH SPEED PAPERTAPE PUNCH * CALLING SEQUENCE: * CALL O$PB * DAC ADDRESS DATABUFFER * (NORMAL RETURN) * * 1ST DATAWORD OF BUFFER = BUFFER LENGTH IN WORDS * * O$PS: PUNCH EOM (END OF MESSAGE) RECORD TO CLOSE A PAPERTAPE * CALLING SEQUENCE: * CALL O$PS * (NORMAL RETURN) * SUBR O$PB SUBR O$PS REL O$PB DAC ** PUNCH BINARY LDA 0 STA SX SAVE X SKS '102 PUNCH ENABLED? OCP 2 ENABLE PUNCHER LDA* O$PB GET BUFFER ADDRESS STA BPTR BUFFER ADDRESS LDA* BPTR GET BUFFER LENGTH (WORDS) TCA STA 0 X = - BUFFER LENGTH (WORDS) LDA* O$PB GET BUFFER ADDRESS ADD* BPTR + BUFFER LENGTH (WORDS) ADD FIDX + INDEX BIT STA BIDX INDEXED BUFFER ADDRESS LDA SOM JST PBYT NEXT LDA* BIDX GET 16 BIT OF DATA LRL '20 TO B, A=0 JST P466 PUNCH WORD IN 466 FORMAT IRS 0 JMP NEXT JMP PEND END OF BUFFER P466 DAC ** PUNCH WORD IN 466 FORMAT LLL 4 JST PBB JST PBB JST PBB JMP* P466 PBB DAC ** PUNCH BYTE IN BIN FORMAT LGL '13 CAS C1 JMP *+2 LDA C2 CAS C3 JMP *+2 LDA C4 CAS C5 JMP *+2 LDA C6 CAS C7 JMP *+2 LDA C8 SRC ERA C9 ALR 5 JST PBYT LLL 6 NEXT 6 BITS JMP* PBB C1 OCT 24000 C2 OCT 160003 C3 OCT 50000 C4 OCT 164003 C5 OCT 104000 C6 OCT 170003 C7 OCT 114000 C8 OCT 174003 C9 OCT 4 * PBYT DAC ** PUNCH A BYTE OTA 2 JMP *-1 JMP* PBYT * EXIT PEND LDA XOFF CLOSE PUNCHED RECORD JST PBYT LDA RUB JST PBYT IRS O$PB AJUST RETURN ADDRESS LDA SX RESTORE X STA 0 JMP* O$PB * O$PS DAC ** PUNCH EOM SKS '102 SKIP IF PUNCH ON OCP 2 ENABLE PUNCH LDA EOM JST PBYT LDA XOFF JST PBYT LDA RUB JST PBYT JMP* O$PS * * WORKSPACE * BIDX OCT 0 INDEXED BUFFER POINTER BPTR OCT 0 BUFFER ADDRESS SX OCT 0 EOM OCT 203 RUB OCT 377 XOFF OCT 223 SOM OCT 201 FIDX OCT 40001 BUFFER ADDR INDEX BIT END