* O$AH/O$AL -- MAY 24 2006 -- VERSION 1-01 * * TTY DRIVER FOR PRINTING THE ASSEMBLED LISTINGS OF DAP-16 * THIS IS THE REDUCED LISTING DRIVER: * LINES ARE PRINTED IN PARTS, NO TRAILING BLANK SUPPRESSION * SHORT HEADER OF 42 CHARS * * HONEYWELL X16 16 BIT COMPUTER SOFTWARE * * PROGRAM LENGTH: 135 WORDS (INCLUDING BUFFER) * * THIS SOURCE IS RECREATED FROM THE EXISTING SLST FILE: * - SLST-DAP-16.IMG (WHICH ORIGINATES FROM HONEYWELL) * * THE SOURCE IS RECREATED BY: THEO ENGEL (THEO.ENGEL@HETNET.NL) * SUBR O$AH SUBR O$AL REL * * INIT THE HEADING BUFFER OF THE ASSEMBLY LISTING * FOR PRINTING THE LISTING ON THE TTY. * THIS INITIALIZATION ROUTINE DOES PRINT THE HEADER. * CALLING SEQUENCE: * CALL O$AH * DAC HEADER BUFFER (42 CHARS ARE MOVED) * THE X REGISTER IS UNCHANGED * O$AH DAC *-* LDA 0 STA SVX SAVE X LDA* O$AH EXTERNAL HEADER BUFFER ADDRESS ADD HIDX STA HPTR INDEXED HDR POINTER (SOURCE) LDA MO25 ='-25 (21 WORDS/42 CHARS LONG) STA 0 P1 LDA* HPTR MOVE 21 HEADER WORDS/42 CHARS TO STA HBUF,1 HDR BUFFER (DESTINATION) IRS 0 JMP P1 JST OMOD SET OUTPUT MODE JST PAGE SKIP TO NEW PAGE JST PHDR PRINT HEADER LDA SVX STA 0 RESTORE X IRS O$AH SET RETURN ADDRESS JMP* O$AH RETURN * * - PRINT (PART OF) ONE LINE OF THE ASSEMBLED LISTING ON TTY * - SKIP TO NEW PAGE AND PRINT HEADER IN CASE OF PAGE COMPLETION * - NO PAGE NUMBERS ARE PRINTED BY THIS VERSION * - FOR PRINT ON COMPLETE LINE, THIS ROUTINE IS CALLED MULTIPLE TIMES * * - CALLING SEQUENCE: * CALL O$AL * DAC LINE BUFFER (MAX 12 WORDS/ 24 CHARS ARE PRINTED) * * - THE X REGISTER IS UNCHANGED * O$AL DAC *-* LDA 0 STA SVX SAVE X JST OMOD SET TTY IN OUTPUT MODE LDA* O$AL BUFFER ADDRESS ADD LIDX + LINE INDEX STA LPTR = INDEXED LINE POINTER LDA MO14 ='-14 STA 0 LDA* LPTR CHAR 1 AND 2 ERA SPSP ? SZE JMP P4 NO, THEN PRINT ON SAME LINE LDA CRLF YES, THEN NEW LINE JST WOUT PRINT 2 CHARS FROM A P4 LDA MO16 ='-16 (32 CHARS) STA 0 LDA CRCR JST WOUT PRINT 2 CHARS FROM A P3 LDA* LPTR PRINT THE LINE PART JST WOUT PRINT 2 CHARS FROM A IRS 0 JMP P3 IRS LCTR LINE PRINTED, NOW THE ADMIN LDA LCTR CAS LPP CHECK LINE COUNTER JMP P2 JMP P2 JMP EXIT < MAX, READY P2 LDA MO12 MAX NUMBER OF LINES ON PAGE STA 0 X = '-12 P5 LDA LFLF SKIP TO NEW PAGE JST WOUT IRS 0 JMP P5 JST PHDR PRINT THE HEADER JST PAGE SKIP TO NEW PAGE EXIT LDA SVX RESTORE SAVED X STA 0 IRS O$AL SET RETURN ADDRESS JMP* O$AL RETURN * WOUT DAC *-* PRINT 2 BYTES FROM A LRL '10 OTA '4 JMP *-1 LLL '10 OTA '4 JMP *-1 JMP* WOUT * PHDR DAC *-* OUTPUT HEADER CRA STA LCTR LINECOUNTER=0 LDA MO27 HEADER LENGTH STA 0 LDA HH,1 JST WOUT IRS 0 JMP *-3 JMP* PHDR * OMOD DAC *-* SET TTY IN OUTPUT MODE IF READY SKS '104 READY ? JMP *-1 OCP '104 SET OUTPUT MODE JMP* OMOD * PAGE DAC *-* SKIP TO NEW PAGE LDA LFLF JST WOUT LDA LFRB JST WOUT LDA MO16 ='-16 STA 0 LDA SPSP JST WOUT IRS 0 JMP *-2 JMP* PAGE * * WORKSPACE AND INTERNAL BUFFER * LPTR OCT 0 INDEXED POINTER TO LINE SVX OCT 0 SAVED X * HLT NOT USED?? HPTR OCT 0 INDEXED PTR TO SOURCE HEADER * INTERNAL HEADER BUFFER OCT 105377 BCI 21, HBUF OCT 106615 HEADER, AS LOADED HH EQU * HEADER TO PRINT (HEADER BUFFER END) LCTR OCT 0 LINE COUNTER ON PAGE LPP OCT 64 MAX LINES PER PAGE (52) LFRB OCT 105377 MO27 OCT 177751 LFLF OCT 105212 MO12 OCT 177766 CRCR OCT 106615 MO16 OCT 177762 CRLF OCT 106612 SPSP OCT 120240 MO14 OCT 177764 LIDX OCT 40016 MO25 OCT 177753 HIDX OCT 040043 HEADER INDEX (SOURCE) END