* O$PH-O$PL FEB 4 2006 - VERSION 1 * * PUNCH LISTING AND HEADING ROUTINES * * HONEYWELL X16 16 BIT COMPUTER SOFTWARE * * PROGRAM LENGTH: 143 WORDS (INCL. HEADER BUFFER) * * 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$PH: STORES HEADER AND PUNCHES A HEADING OF A PUNCHED LISTING * CALLING SEQUENCE: * CALL O$PH * DAC ADDRESS HEADERBUFFER (30 WORDS, 60 CHARACTERS) * (NORMAL RETURN) * * O$PL: PUNCH A LINE OF A PUNCHED LISTING * CALLING SEQUENCE: * CALL O$PL * DAC ADDRESS LINEBUFFER * (NORMAL RETURN) (35 WORDS, 70 CHARACTERS) * SUBR O$PH SUBR O$PL REL O$PH DAC ** LOAD LISTING HEADER IN HEADER BUFFER AND PUNCH LDA 0 STA SX SAVE X LDA* O$PH GET BUFFER ADDRESS ADD HIB + INDEX STA BPTR INDEXED EXTERNAL HEADER POINTER LDA M36 =-30 STA 0 H1 LDA* BPTR PUT HEADER IN INTERNAL BUFFER STA IBUF+30,1 IRS 0 JMP H1 JST STRP START PUNCHER JST NPAG LDA CRLF JST PWRD LDA SX STA 0 RESTORE X IRS O$PH JMP* O$PH * O$PL DAC ** PUNCH LINE OF LISTING LDA 0 STA SX SAVE X JST STRP START PUNCHER LDA* O$PL GET BUFFER POINTER ADD IDX + INDEX BIT STA BPTR ADD N35 + 35, BUFFER LENGTH (WORDS) STA BEND INDEXED PTR TO BUFFER END CRA STA 0 X = 0 P2 LDA* BEND REMOVE TRAILING SPACES ERA SPSP SPACES ? SZE JMP P1 NO TRAILING SPACES ANYMORE LDA 0 2 TRAILING SPACES FOUND ADD M1 STA 0 X = X - 1 ADD N35 SZE BUFFER START? JMP P2 NO P1 LDA N36 CORRECT BUFFER LENGHT FOR TRAILING SPACES ADD 0 STA BL TRAILING SPACES REMOVED ADD BPTR AND CORRECT INDEX POINTER AS WELL STA BEND FOR TRAILING SPACES LDA BL TCA STA 0 P3 LDA* BEND PUNCH BUFFER JST PWRD PUNCH WORD IRS 0 JMP P3 IRS LNBR LINENUMBER + 1 LDA LNBR END OF PAGE ? CAS O64 JMP P6 END OF PAGE JMP P6 END OF PAGE JMP EXIT NO, NORMAL EXIT P6 LDA M12 PAGE BREAK STA 0 P4 LDA CRLF SKIP TO NEW PAGE JST PWRD IRS 0 JMP P4 JST NPAG AND OUTPUT HEADER EXIT LDA CRLF JST PWRD LDA SX STA 0 RESTORE X IRS O$PL JMP* O$PL * PWRD DAC ** PUNCH WORD (2 ASCII BYTES) LRL '10 OTA 2 JMP *-1 LLL '10 OTA 2 JMP *-1 JMP* PWRD * NPAG DAC ** NEW PAGE: PUNCH HEADER CRA STA LNBR RESET LINE NUMBER LDA M36 STA 0 P5 LDA IBUF+30,1 JST PWRD IRS 0 JMP P5 JMP* NPAG * STRP DAC ** START PUNCHER SKS '102 OCP 2 JMP* STRP * * WORKSPACE * BEND OCT 0 INDEXED POINTER TO BUFFER END SX OCT 0 SAVED X BL OCT 0 ACTUAL BUFFER LENGTH (TRAILING SPACES REMOVED) BPTR OCT 0 INDEXED BUFFER POINTER IBUF BSZ 34 INTERNAL HEADER BUFFER LNBR OCT 0 LINE NUMBER O64 OCT 64 =54, ='66 M12 OCT 177766 =-10, ='-12 N36 OCT 44 =36, ='44 M1 OCT 177777 =-1 SPSP OCT 120240 N35 OCT 43 =35, ='43 IDX OCT 40000 INDEX BIT CRLF OCT 106612 M36 OCT 177742 =-30, ='-36 HIB OCT 40043 INDEX BIT + BUFFERLENGTH END