* O$AB - O$AS DEC 12 2006 - VERSION 1-01 * * PUNCH BINARY RECORD ON TELETYPE PAPERTAPE PUNCHER * * HONEYWELL X16 16 BIT COMPUTER SOFTWARE * * PROGRAM LENGTH: 95 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 O$AB (PUNCH BINARY RECORD) * DAC DATA BUFFER ADDRESS (1ST BUFFERWORD MUST BE BUFFERLENGTH IN WORDS) * ... NORMAL RETURN * * CALL O$AS (PUNCH END OF MESSAGE) * ... NORMAL RETURN * SUBR O$AB SUBR O$AS * ALTERNATIVE ENTRY POINT FOR O$AB SUBR OUPT * ALTERNATIVE ENTRY POINT FOR O$AS SUBR EOM,EEOM REL * OUPT EQU * O$AB DAC *-* LDA 0 STA XSV SAVE X SKS '0104 JMP *-1 OCP '0104 LDA* O$AB STA BUFF BUFFER ADDRESS LDA* BUFF BUFFER LENGTH TCA STA 0 X = - BUFFER LENGTH LDA* O$AB BUFFER ADDRESS ADD* BUFF + BUFFER LENGTH ADD IDX + INDEX BIT (+1) STA PTR = INDEXED PTR TO BUFFER JST STTP START TAPEPUNCHER LDA SOM JST OUT PUNCH SOM P1 LDA* PTR GET WORD TO PUNCH LRL '020 SHIFT TO B JST PWRD PUNCH WORD IN 466 IRS 0 JMP P1 NEXT WORD JMP P2 EXIT PWRD DAC *-* PUNCH WORD IN 466 LLL 4 INIT WITH 1ST 4 BITS JST P6B PUNCH 6 BIT (4 TO START WITH) JST P6B PUNCH 6 BIT JST P6B PUNCH 6 BIT JMP* PWRD * P6B DAC *-* PUNCH 6 LSB BITS OF A LGL '013 SHIFT LEFT 11 CAS TT JMP *+2 LDA TT+1 CAS TT+2 JMP *+2 LDA TT+3 CAS TT+4 JMP *+2 LDA TT+5 CAS TT+6 JMP *+2 LDA TT+7 SRC ERA TT+8 ALR 5 JST OUT LLL 6 JMP* P6B TT OCT 024000 OCT 160003 OCT 050000 OCT 164003 OCT 104000 OCT 170003 OCT 114000 OCT 174003 OCT 000004 * OUT DAC *-* OTA 4 JMP *-1 JMP* OUT * * EXIT * P2 LDA XOFF JST OUT LDA RUB JST OUT IRS O$AB ADAPT RETURN ADDRESS LDA XSV RESTORE X STA 0 JMP* O$AB * * PUNCH EOM * EEOM EQU * O$AS DAC *-* JST STTP START TAPEPUNCHER LDA EOM JST OUT LDA XOFF JST OUT LDA RUB JST OUT JMP* O$AS * STTP DAC *-* START TAPEPUNCHER LDA TAPE JST OUT LDA RUB JST OUT JMP* STTP * * WORKSPACE * PTR OCT 0 XSV OCT 0 BUFF OCT 0 TAPE OCT 222 EOM OCT 203 RUB OCT 377 XOFF OCT 223 SOM OCT 201 IDX OCT 040001 END