* (O$AL) - TYPING ROUTINES * * * PROGRAM TITLE: O$AL (O$AL,O$AE,O$AH,O$AC,O$AF) * ASR TYPING ROUTINES * * REVISIONS: * 1.0 (5.2.2005) - FIRST STABLE VERSION * 1.1 (10.2.2005) - ADDED FORGOTTEN ASR START SEQUENCE * * AUTHOR * * PHILIPP HACHTMANN * * * PURPOSE * * ASR OUTPUT ROUTINES FOR LISTING * * * RESTRICTIONS * * THESE ARE NOT THE ORIGINAL * * * 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 ********************************************* * CONFIGURATION HDS DEC 1 EMPTY LINES BEFORE HEADING SPC DEC 2 EMPTY LINES BETWEEN HEADING AND TEXT PGS DEC 50 DATA LINES PER PAGE (WITHOUT HEADING ETC.) WIDH DEC 36 (2-CHAR) WORDS PER LINE SFF DEC 4 SKIPS TO SIMULATE FORM FEED * * 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 * * 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 ******************************************************************************** * * 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 * ******************************************************************************** * **** FORM FEED ROUTINE FF DAC ** 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 * * XR DEC 0 SAVED X REGISTER 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 * * ******************************************************************************** * *** AB HIER ABGESCHRIEBENER CODE! T1 DAC ** STX XR JST ASUP START TTY LDA* T1 ADD WIDH ADD ='40000 STA T6 IRS T1 LDA WIDH TCA STA 0 T3 LDA* T6 CAS ='120240 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 ='120240 JMP *+2 JMP T10 LDA T12 STA 0 LDA ='120240 JMP T4 T12 *** ** * T14 DAC ** NOP NOP NOP LRL 8 OTA 4 JMP *-1 LLL 8 OTA 4 JMP *-1 JMP* T14 * * ******************************************************************************** * T20 DAC ** JST ASUP START TTY LDA =13 OTA 4 JMP *-1 OTA 4 JMP *-1 JMP* T20 * ******************************************************************************** * T30 DAC ** JST ASUP START TTY LDA =10 OTA 4 JMP *-1 JMP* T30 * * FIN WRITE OUT LITERALS * * PUH..... END (O$AL)