* (O$PB) - COPY OF O$AB * * * COMPUTER: H316 * * PROGRAM CATEGORY: I/O LIBRARY * * PROGRAM TITLE: O$PB (O$PS,O$PLDR) * TO PUNCH BINARY TAPE ON THE HIGH SPEED PUNCH * * REVISIONS: * 1.0 (2005-02.04) * * AUTHOR * * PHILIPP HACHTMANN * * * * STORAGE * * 150 (OCTAL) * 104 (DECIMAL) * * * USE * * CALL O$PB PTP BINARY PUNCH ROUTINE * DAC DATA DATA ADDRESS * NORMAL RETURN * * CALL O$PS END OF MESSAGE ROUTINE * * CALL O$PLDR PUNCH BLANK LEADER * * * CALL O$AB - * * THIS ROUTINE IS USED TO PUNCH BINARY PAPER TAPE, THE ADDRESS * OF THE BINARY WORD COUNT APPEARS IN THE VARIABLE FIELD (DATA) * FOLLOWING THE CALL PSEUDO-OP. THE BINARY INFORMATION TO BE * PUNCHED MUST START AT DATA+1. * THE NORMAL RETURN IS TAKEN WHEN THE NUMBER OF WORDS SPECIFIED * BY THE WORD COUNT HAS BEEN PUNCHED. * * CALL O$AS - * * EOM (203 OCT), X-OFF (223 OCT), AND RUBOUT (377 OCT) CHARACTERS * ARE PUNCHED WHEN THIS ROUTINE IS USED. * RETURN IS TO THE CALLING PROGRAMM * * CALL O$PLDR - * * PUNCH BLANK LEADER. NORMAL RETURN. * * * METHOD * * BINARY INFORMATION IS PUNCHED AS IST APPEARS IN THE BUFFER (DATA+1). * EACH RECORD ON PAPER TAP EWILL HAVE THE FOLLOWING FORMAT: * START OF MESSAGE, BINARY INFORMATION, X-OFF, TWO LEADER CHARS. * * * ******************************************************************************** * * SUBR O$PB SUBR O$PS SUBR O$PLDR,PLDR REL WRU OCT 024000 WRUX OCT 160003 LF OCT 050000 LFX OCT 164003 XON OCT 104000 XONX OCT 170003 XOFF OCT 114000 XOFX OCT 174003 FOUR OCT 000004 O$PB PZE ** PTP PUNCH ENTRY STX XR SAVE INDEX REGISTER FROM CALLING PROGRAMM OCP 2 ACTIVATE PAPER TAPE PUNCH * LDA* O$PB WORD COUNT ADDRESS BIN5 STA TMP LDA* TMP TCA TWOS COMPLEMENT BINARY WORD COUNT STA 0 LDA* O$PB BINARY DATA ADDRESS ADD* TMP DATA ADDRESS+WORD COUNT ADD ='40001 STA DATA DATA ADDRESS + WORD COUNT, 1 JST STP LDA ='201 BEGINNING OF MESSAGE JST BCD8 BIN6 LDA* DATA BINARY WORD TO BE PUNCHED LRL 16 B-REG: BINARY WORD TO BE PUNCHED JST PNCH GO PUNCH BINARY WORD IRS 0 JMP BIN6 CONTINUE PUNCHING BINARY CHARACTERS JMP RETN LEAVE ROUTINE PNCH PZE ** CONVERT AND PUNCH BINARY CHARACTERS LLL 4 JST CHAR PUNCH BINARY WORD (1-4) JST CHAR PUNCH BINARY WORD (5-10) JST CHAR PUNCH BINARY WORD (11-16) JMP* PNCH RETURN FOR ADDITIONAL WORDS CHAR PZE ** LGL 11 CAS WRU JMP *+2 LDA WRUX CAS LF JMP *+2 LDA LFX CAS XON JMP *+2 LDA XONX CAS XOFF JMP *+2 LDA XOFX SRC ERA FOUR ALR 5 OUT JST BCD8 LLL 6 JMP* CHAR BCD8 PZE ** ASCII PUNCH ROUTINE OTA 2 JMP *-1 JMP* BCD8 RETN LDA ='223 X-OFF JST BCD8 LDA ='377 RUBOUT CHARACTER JST BCD8 LEADER CHAR. IRS O$PB INCREMENT FOR NORMAL RETURN LDA XR RESTORE INDEX FOR CALLING PROGRAMM STA 0 JMP* O$PB * O$PS PZE ** PUNCH END OF MESSAGE ENTRY JST STP LDA ='203 PUNCH END OF MESSAGE JST BCD8 LDA ='223 PUNCH X-OFF JST BCD8 LDA ='377 RUBOUT CHARACTER JST BCD8 LEADER CHAR. JMP* O$PS RETURN TO CALLING PROGRAMM * STP DAC ** LDA ='222 JST BCD8 LDA ='377 JST BCD8 JMP* STP DATA PZE 0 XR PZE 0 TMP PZE 0 FIN * LDRC DEC 150 LENGTH OF LEADER PLDR DAC ** PUNCH LEADER ENTRY STX XR SAVE X REGISTER LDA LDRC LENGTH OF LEADER TCA TWOS COMPLEMENT OF LEADER STA 0 OCP 2 CRA LD1 OTA 2 PUNCH! JMP *-1 IRS 0 JMP LD1 LDX XR RESTORE X REGISTER JMP* PLDR RETURN * END O$PB