A large commit.
[pdp8.git] / sw / os8 / v3d / sources / extensions / dectapes / dectape2 / geniox.sb
diff --git a/sw/os8/v3d/sources/extensions/dectapes/dectape2/geniox.sb b/sw/os8/v3d/sources/extensions/dectapes/dectape2/geniox.sb
new file mode 100644 (file)
index 0000000..aa5618b
--- /dev/null
@@ -0,0 +1,321 @@
+/
+/      COPYRIGHT 1971, DIGITAL EQUIPMENT CORPORATION,
+/                      MAYNARD, MASSACHUSETTS 01754
+/      UTILITY SUBROUTINE PACKAGE
+/              VERSION UTILTY.V7A (OCTOBER 26,1971)
+/                      (VERS. CHG. V07 TO V7A 4/25/77 MH)
+/
+       ENTRY   OPEN         /INITIALIZING AND FLAG SETTING ROUTINE
+       ENTRY   GENIO
+       ENTRY   EXIT            /EXIT TO DISK MONITOR SYSTEM
+       ENTRY   ERROR
+       ENTRY   CKIO    /USELESS ROUTINE
+       OPDEF   KRS     6034
+       OPDEF   KCC     6032
+       OPDEF   RIF     6224
+       OPDEF TADI 1400
+       OPDEF DCAI 3400
+       OPDEF   JMSI    4400
+       OPDEF JMPI 5400
+/      CARD READER IOT'S
+       OPDEF   RCSE    6672
+       OPDEF   RCSP    6671
+       OPDEF   RCSF    6631
+       OPDEF   RCRA    6632
+/LINE PRINTER IOT'S
+       OPDEF   LLB     6666
+       OPDEF   LSF     6661
+
+       LAP
+
+U17,   17              /*** MUST BE FIRST LOC IN PAGE ***
+
+IOER,  1117
+       0522            /"IOER" ERROR
+GENIO, BLOCK 2         /GENERAL INPUT/OUTPUT ROUTINE
+       DCA     7       /SAVE ENTRY AC
+GENLP, TAD     7
+       RTL
+       RTL
+       RAL
+U200,  AND     U17
+       TAD     JMPITB
+       DCA     DSPACH  /INDEX JUMP TABLE BY DEVICE NUMBER
+       TAD     U200
+       KRS
+       TAD     UM203
+       SNA CLA
+       KSF             /CHECK FOR ^C ON TELETYPE
+DSPACH,        NOP             /NO ^C - DISPATCH TO I/O ROUTINE
+       CALL    0,EXIT
+
+JMPITB,        JMPI    DEVTAB
+DEVTAB,        TTYOUT
+       HSPOUT
+       IOERR
+       GENOUT
+       TTYIN
+       HSRIN
+       IOERR
+       GENIN
+       IOERR
+       IOERR
+       IOERR
+       IOERR
+       IOERR
+       IOERR
+       IOERR
+       IOERR
+
+HSPOUT,        PSF
+       JMP     GENLP
+       TAD     7
+       PLS
+GENRTN,        CLA
+       RETRN   GENIO
+
+HSRIN, ISZ     T1
+       JMP     HSRSF
+       TAD     U336    /TIME OUT-PRINT '^'
+       TLS
+HLP,   KSF
+       JMP     HLP
+       AND     U200    /GET 200 INTO AC 
+       KRS             /READ THE CHAR.
+       TAD     UM203
+       SZA     CLA     /IS IT CONTROL C?
+       KCC             /NO-CLEAR FLAG
+       RFC             /USER TYPED-TICKLE RDR-FALL THRU RFC
+HSRSF, RSF
+       JMP     GENLP
+       DCA     T1
+       RRB RFC
+       JMP     GENRTN#
+U336,  336
+T1,    0
+
+UM203, -203
+
+
+       PAGE
+\fU377, 377             /MUST BE FIRST LOC IN THIS PAGE
+GENIN, 6201
+       TADI    IHNDLR
+       SNA CLA         /OPEN INPUT FILE?
+       JMP     IOERR   /NO
+       6202
+       JMS I   FICHAR  /GET A CHAR
+       JMP     IOERR   /INPUT ERROR
+UU200, AND     U377
+GRTN2, RETRN   GENIO
+
+GENOUT,        6201
+       TADI    OHNDLR
+       SNA CLA         /OPEN OUTPUT FILE?
+       JMP     IOERR   /NO
+       6202
+       TAD     7       /GET CHAR TO BE OUTPUT
+       AND     U377
+       JMS I   FOCHAR  /PUT A CHARACTER
+       JMP     IOERR   /OUTPUT ERROR
+       JMP     GRTN2
+
+IHNDLR,        122             /***ALL THESE LOCATIONS ARE VERY VOLATILE!! ***
+FICHAR,        606             /*******
+OHNDLR,        121             /*******
+FOCHAR,        651             /******************
+BATIN, 5400            /**************************
+BATOUT,        7400            /**************************
+BATVFY,        5600            /**************************
+BATVAL,        -2214           /**************************
+
+/
+/      INITIALIZING SUBROUTINE CALLED BY FORTRAN
+/      CLEARS FLOATING AC AND SETS FLAGS
+/
+OPEN,  BLOCK   2
+       PLS
+       RFC
+       CALL    0,CLEAR
+CDFX,  6201
+       DCAI    IHNDLR
+       DCAI    OHNDLR          /ZERO DEVICE-INDEPENDENT IO FLAGS
+       DCA TTFLAG      /BEGINNING OF LINE
+       TADI (7777      /GET BATCH FIELD
+       AND (70
+       TAD CDFX        /MAKE A CDF
+       DCA CDFB
+       TADI (7777      /GET BATCH RUNNING BIT
+       RAL
+       SMA CLA
+       JMP IOERR       /BATCH NOT RUNNING
+CDFB,  HLT
+       TADI BATVFY     /CHECK CRUCIAL LOCATION
+       TAD BATVAL      /FOR RL'S INITIALS
+       SZA CLA
+       JMP IOERR
+       TAD CDFB
+       IAC             /MAKE A CIF
+       DCA CIFB1
+       TAD CIFB1
+       DCA CIFB2
+       RIF             /MAKE A CDF TO HERE
+       TAD CDFX
+       DCA CDFH
+       RETRN   OPEN
+
+
+TTYIN,
+CIFB1, 0               /CIF BATCH
+       JMSI BATIN      /GET A CHAR
+               JMP TTEOF1      /EOF
+       DCA     7       /SAVE KEYBOARD CHAR
+       TAD     7
+       TAD (-"$        /IS IT A "$"?
+       SZA CLA
+       JMP TTFUJ1      /NO
+       ISZ TTFLAG      /WAS LAST CHAR <CR>?
+       JMP TTYEOF      /YES - EOF
+TTFUJ1,        CLA CMA
+       DCA TTFLAG      /RESET FLAG FOR NON <CR>
+       TAD     7
+       TAD     (-215
+       SNA CLA
+       DCA TTFLAG      /CLEAR FLAG TO INDICATE <CR>
+TYRTN, TAD     7
+       JMP     GRTN2   /RETURN WITH CHAR IN AC
+
+TTFLAG,        0               /INITIALLY AT BEGINNING OF LINE
+
+TTYEOF,        6201            /CDF
+       TADI (7777      /GET WORD FROM FIELD 0
+       RTR
+       CLL CML RTL     /SET BIT 10
+       DCAI (7777      /REPLACE IT
+CDFH,  0               /CDF HERE
+TTEOF1,        JMP IOERR       /WHAT TO DO?
+
+
+TYPE,  0
+       TAD     7
+CIFB2, 0               /CIF BATCH
+       JMSI BATOUT     /SEND A CHAR TO THE BATCH OUTPUT STREAM
+       JMPI    TYPE
+
+TTYOUT,        JMS     TYPE
+       JMP     GRTN2
+
+IOERR, CALL    1,ERROR
+       ARG     IOER
+
+
+       PAGE
+\f
+PMESG, MESG
+MESG,  7777
+       7777
+       4005
+       2222
+       1722
+       4001
+       2440
+       1417
+       0340
+LIT7,  0007
+
+ERROR, BLOCK 2         /ERROR PROCESSOR
+U7600, 7600
+       TAD     ERROR
+       DCA     TEM1
+TEM1,  NOP             /SET DATA FIELD OF "CALL ERROR"
+       TADI    ERROR#
+       DCA     TEM3
+       INC     ERROR#
+E60,   CLA CMA CML     /CML IS WINDOW DRESSING
+       TADI    ERROR#
+       DCA     10
+       INC     ERROR#
+TEM3,  NOP             /DATA FIELD OF MESSAGE&ENTRY POINT
+       DCA     CKIO    /ZERO "FATAL ERROR" FLAG
+       TADI    10
+       RAL
+       SZL             /NON-FATAL BIT ON?
+       ISZ     CKIO    /YES - SET "FATAL FLAG" TO NON-FATAL
+       CLL RAR         /STRIP NON-FATAL BIT FROM MESSAGE
+       DCA     MESG
+       TADI    10      /SECOND WORD OF MESSAGE
+       DCA     MESG#
+       TADI    10
+       DCA     TEM1
+       TADI    10
+       DCA     TEM3    /CALLING ADDRESS
+       TAD     PMESG
+       DCA     TEM2
+
+ERLP,  TAD I   TEM2
+       RTR
+       RTR
+       RTR
+       JMS     PR6BIT
+       TAD I   TEM2
+       JMS     PR6BIT
+       INC     TEM2
+       JMP     ERLP
+
+PRLOC, TAD     TEM1
+       RTR
+       RTR
+       JMS     ERTTY   /PRINT CALLING FIELD
+       TAD     (-4
+       DCA     TEM2
+NUMLP, TAD     TEM3
+       RTL
+       RAL
+       DCA     TEM3
+       TAD     TEM3
+       JMS     ERTTY
+       ISZ     TEM2
+       JMP     NUMLP
+       TAD     (215
+       DCA     7
+       JMS     TYPE
+       CLA CLL CMA RTL
+       JMS     TYPE
+       TAD     CKIO    /GET THE FATAL ERROR FLAG
+       SNA CLA         /WHADDOWEDO??
+       JMP     EXITX
+       RETRN   ERROR   /HE SAYS ITS NON-FATAL - LET HIM HANDLE IT
+
+ERTTY, 0       /DIGIT PRINTING ROUTINE
+       RAL
+       AND     LIT7
+       TAD     E60
+       JMS     PR6BIT
+       JMP I   ERTTY
+
+PR6BIT,        0               /6BIT TO 8BIT CONVERTOR
+       AND     (77
+       SNA
+       JMP     PRLOC   /MESSAGE OVER
+       TAD     (7740
+       SPA
+       TAD     (100
+       TAD     (240
+       CALL    0,GENIO /LOOK FOR ^C WHILE TYPING
+       JMP I   PR6BIT
+
+/
+/EXIT TO DISK MONITOR SYSTEM
+/
+EXIT,  BLOCK   2
+EXITX, CALL    0,CKIO
+       6203
+       JMPI    U7600   /RETURN TO MONITOR
+
+CKIO,  0
+TEM2,  0       /DUMMY SUBROUTINE TO WAIT FOR I/O COMPLETE
+       RETRN   CKIO
+
+
+       END
+\f