X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;ds=sidebyside;f=sw%2Fos8%2Fv3d%2Fsources%2Fextensions%2Fdectapes%2Fdectape2%2Fgeniox.sb;fp=sw%2Fos8%2Fv3d%2Fsources%2Fextensions%2Fdectapes%2Fdectape2%2Fgeniox.sb;h=aa5618b032594caff531b2f8d043f58a4124c48e;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git 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 index 0000000..aa5618b --- /dev/null +++ b/sw/os8/v3d/sources/extensions/dectapes/dectape2/geniox.sb @@ -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 + U377, 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 ? + JMP TTYEOF /YES - EOF +TTFUJ1, CLA CMA + DCA TTFLAG /RESET FLAG FOR NON + TAD 7 + TAD (-215 + SNA CLA + DCA TTFLAG /CLEAR FLAG TO INDICATE +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 + +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 +