*** empty log message ***
[h316.git] / lib / iolib / src / o$pa.asm
diff --git a/lib/iolib/src/o$pa.asm b/lib/iolib/src/o$pa.asm
new file mode 100644 (file)
index 0000000..0e52687
--- /dev/null
@@ -0,0 +1,131 @@
+* (O$LA)
+*
+*    
+* PROGRAM TITLE:  O$LA  (O$LA,O$LE,O$LH,O$LC,O$LF) 
+*                 LINE PRINTER ROUTINES
+*
+* REVISIONS: 
+*            1.0 (2005-02.04)
+*
+* AUTHOR
+*
+*    PHILIPP HACHTMANN
+*
+*
+* PURPOSE
+*
+*    THESE ARE THE LIBRARY ROUTINES FOR HACHTI'S LINE PRINTER INTERFACE
+*    
+*
+* RESTRICTIONS
+*
+*    DEPENDS ON HACHTI'S HARDWARE AND FORTRAN IV COMPILER TAPE
+*
+*
+* STORAGE
+*
+*    420 (OCTAL)
+*    271 (DECIMAL)
+*
+*
+* USE
+*
+*              CALL     O$LA
+*              DAC      (BUFFER ADDRESS)
+*              NORMAL
+*
+*    THIS PRINTS ONE LINE OF LISING TEXT
+*    (60 2-CHAR WORDS MAX) TO THE LINE PRINTER.
+*         
+*    
+*
+********************************************************************************
+*
+       SUBR    O$PA    TYPE A COMPLETE LINE WITH CR/LF, HEADING ETC.
+*
+********************************************************************************
+*
+       REL             RELOCATEABLE MODE
+*
+O$PA   DAC     **
+       LDA*    O$PA    BUFFER ADDRESS
+       STA     LBUF    STORE
+       JST     T1      PUNCH THE RECORD
+LBUF   OCT     0       ADDRESS OF LINE BUFFER  
+       JST     T20     CARRIAGE RETURN
+       JST     T30     LINE FEED
+       IRS     O$LA    MAKE RETURN ADDRESS
+       JMP*    O$LA    RETURN
+
+************************************************************
+*
+* OUTPUT LINE
+T1     DAC     **
+       STX     XR      SAVE CALLER'S INDEX REGISTER
+       LDA*    T1      LOAD BUFFER ADDRESS
+       ADD     LNW     LINE WIDTH
+       ADD     ='40000 SET INDEXING TAG
+       STA     T6
+       IRS     T1      INCREMENT RETURN ADDRESS
+       LDA     LNW     LINE WIDTH
+       TCA             NEGATE
+       STA     0       PUT INTO INDEX REG
+T3     LDA*    T6
+       CAS     ='120240
+       JMP     *+2
+*
+       JMP     T8
+T4     JST     T14
+       IRS     0
+       JMP     T3
+       LDX     XR      RESTORE CALLER'S INDEX REGISTER
+       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     **
+       ICA
+       OTA     0
+       JMP     *-1
+       ICA
+       OTA     0
+       JMP     *-1
+       JMP*    T14
+****
+*
+* CARRIAGE RETURN
+T20    DAC     **
+       LDA     =13     CR CHARACTER
+       OTA     0       OUTPUT
+       JMP     *-1     
+       JMP*    T20     RETURN
+*
+* LINE FEED
+T30    DAC     **
+       LDA     =10     LF CHARACTER
+       OTA     0       OUTPUT
+       JMP     *-1     RETURN
+       JMP*    T30
+*
+*
+       FIN             WRITE OUT LITERALS
+*
+* PUH.....
+*
+       END