* (O$AL) - TYPING ROUTINES * * * PROGRAM TITLE: O$AL (O$AL,O$AE,O$AH,O$AC,O$AF) * ASR TYPING ROUTINES * * REVISIONS: * 1.0 (05.02.2005) - FIRST STABLE VERSION * 1.1 (10.02.2005) - ADDED FORGOTTEN ASR START SEQUENCE * 1.2 (25.07.2005) - CORRECTED ASR START SEQUENCE * 1.2.1 (27.07.2005) - RECORRECTED START SEQUENCE * 1.3 (03.04.2006) - SOME SORTING TO GET IT SMALLER * * AUTHOR * * PHILIPP HACHTMANN * * * PURPOSE * * ASR OUTPUT ROUTINES FOR LISTING * * * RESTRICTIONS * * THESE ARE NOT THE ORIGINAL ROUTINES * * * STORAGE * * 310 (OCTAL) * 200 (DECIMAL) * * * ********************************************************************** SUBR O$AL,OSAL TYPE A COMPLETE LINE WITH CR/LF, HEADING ETC. SUBR O$AH,OSAH INITIALISE HEADING SUBR O$LL,OSAL TYPE A COMPLETE LINE WITH CR/LF, HEADING ETC. SUBR O$HH,OSAH INITIALISE HEADING SUBR O$AP,T1 TYPE A LINE, NO CR SUBR O$AC,T20 RETURN THE CARRIAGE SUBR O$AF,T30 ADVANCE TO NEXT LINE SUBR O$AE,FF EJECT PAGE * SUBR O$A1,HDS EMPTY LINES BETWEEN TOP OF PAGE AND HEADING SUBR O$A2,SPC EMPTY LINES BETWEEN HEADING AND MAIN TEXT SUBR O$A3,PGS PURE TEXT LINES PER PAGE SUBR O$A4,WIDH PURE TEXT LINES PER PAGE SUBR O$A5,SFF SKIPS TO SIMULATE FORM FEED ********************************************************************** REL RELOCATABLE MODE ********************************************* * OSAL DAC ** STX XR LDA* OSAL BUFFER ADDRESS STA BUF1 STORE FOR LATER USE LDA LINE LINE COUNTER SZE STILL LINES LEFT? JMP PGOK NO NEW PAGE JST FF JST NP NEW PAGE REQUIRED PGOK IRS LINE BUMP COUNTER NOP JST T1 PRINT THE LINE BUF1 DAC ** ADDRESS OF LINE BUFFER JST T20 CARRIAGE RETURN JST T30 LINE FEED IRS OSAL MAKE RETURN ADDRESS LDX XR JMP* OSAL RETURN * * XR DEC 0 SAVED X REGISTER OSAH DAC ** INIT HEADING STX XR LDA* OSAH STA P1 POINTER TO SOURCE LDA HBUP STA P2 POINTER TO TARGET LDA WIDH LINE LENGTH TCA COMPLEMENT STA CNT HL1 LDA* P1 STA* P2 IRS P1 IRS P2 IRS CNT READY? JMP HL1 NO JST NP INIT PAGE IRS OSAH ADJUST ADDRESS LDX XR JMP* OSAH RETURN ******************************************************************************** * * PGS DEC 50 DATA LINES PER PAGE (WITHOUT HEADING ETC.) HDS DEC 1 EMPTY LINES BEFORE HEADING NP DAC ** PREPARE NEW PAGE LDA PGS LOAD LINES PER PAGE TCA NEGATE STA LINE STORE PAGE COUNTER LDA HDS SNZ JMP NHDS NO SPACE BEFORE HEADING TCA STA CNT S1 JST T30 IRS CNT JMP S1 NHDS JST T1 TYPE HBUF HBUP DAC HBUF ADDRESS OF HEADER BUFFER JST T20 CARRIAGE RETURN LDA SPC NUMBER OF SPACES BEFORE TEXT TCA NEGATE STA CNT TO COUNTER SP1 JST T30 LINE FEED IRS CNT DEC COUNTER, SKIP IF READY JMP SP1 NOT READY JMP* NP SPC DEC 2 EMPTY LINES BETWEEN HEADING AND TEXT * ******************************************************************************** * **** FORM FEED ROUTINE SFF DEC 4 SKIPS TO SIMULATE FORM FEED FF DAC ** JST ASUP OUTPUT MODE LDA SFF TCA STA CNT LDA =10 FF1 OTA 4 SEND LINE FEED JMP *-1 WAIT IRS CNT JMP FF1 JMP* FF RETURN * * * ASR START ROUTINE ASUP DAC ** SKS '104 JMP *-1 OCP '104 JMP* ASUP * * CNT DEC 0 HBUF BCI 20, BCI 20, BCI 20, P1 DEC 0 POINTER 1 P2 DEC 0 POINTER 2 LINE DEC -40 NEG LINES LEFT ON PAGE * * ******************************************************************************** * *** FROM HERE COPIED ORIGINAL HONEYWELL CODE! * WIDH DEC 36 (2-CHAR) WORDS PER LINE CC4 OCT 40000 T1 DAC ** STX XR JST ASUP START TTY LDA* T1 ADD WIDH ADD CC4 STA T6 IRS T1 LDA WIDH TCA STA 0 T3 LDA* T6 CAS CS1 JMP *+2 * JMP T8 T4 JST T14 IRS 0 JMP T3 LDX XR JMP* T1 T6 *** ** * T8 LDA 0 STA T12 T10 IRS 0 JMP *+2 JMP* T1 LDA* T6 CAS CS1 JMP *+2 JMP T10 LDA T12 STA 0 LDA CS1 JMP T4 CS1 OCT 120240 T12 *** ** * T14 DAC ** NOP NOP NOP LRL 8 OTA 4 JMP *-1 LLL 8 OTA 4 JMP *-1 JMP* T14 * * ******************************************************************************** * C13 DEC 13 T20 DAC ** JST ASUP START TTY LDA C13 CARRIAGE RETURN OTA 4 JMP *-1 OTA 4 JMP *-1 JMP* T20 * ******************************************************************************** * T30 DAC ** JST ASUP START TTY LDA =10 LINE FEED OTA 4 JMP *-1 JMP* T30 * * FIN WRITE OUT LITERALS * * PUH..... END (O$AL)