File SP.TK

Directory of image this file is from
This file as a plain text file

/******* MULTI8 SPOOL FILE XFER TASK *******

/NAME:	SP
/LENGTH: 2 PAGES +2 PAGE BUFFER.
/FUNCTION:THIS MODULE PERFORMS BLOCK TRANSFERS FROM A FILE-
/	ORIENTED MASS STORAGE DEVICE OR A CHARACTERORIENTED
/	INPUT DEVICE TO A CHARACTERORIENTED OUTPUT DEVICE.
/	SINCE THE FOREGROUND IS NOT ALLOWED TO WRITE ONTO
/	THE BACKGROUND DISK,THIS TASK CAN ONLY DRAIN INFOR-
/	MATION FROM THE DISK AND OTHER MASS STORAGE DEVICES.
/	IT IS CONTROLLED BY THE FOLLOWING TYPE-IN:
/	*PP:<PR:
/	*FILENA.ME,FILE2.AS,FILE3.LS....ETC.
/	*PP:<DK1:FILE.EX.........ETC
/	ALSO RECOGNISES UNIT NUMBERS.
/	*[OUTPUT MOD."<"][MASS INPUT MOD.][FILENAME][EXT]
/	THE COMMAND STRING *:FILENA.ME
/	TAKES DEFAULT DEVICES LP AND SY.
/	SPOOL RECOGNIZES THE FILE-ORIENTED DEVICE BY THE
/	FACT THAT A FILENAME HAS BEEN ENTERED.
/	WHEN A CR IS TYPED IMMEDIATELY BEHIND THE *,THEN
/	THE DEFAULT COMMAND:
/	*LP:<SY:1.LS,2.LS,3.LS,4.LS,5.LS
/	WILL BE EXECUTED.
/	WHEN A DIRECTORY SAME DOES
/	NOT EXIST, T FIND THE NEXT
/	ONE SPNG FILES CAN BE PRINTED E MODULE READS A LINE FROM THE LINE INPUTTER, PER-
/	FORMS A DIRECTORY SEARCH ON THE MASS INPUT DEVICE,
/	AND TRANSFERS BLOCKS FROM INPUT TO OUTPUT DEVICE.
/	THE INTERMEDIATE BUFFER IS LOCATED WITHIN SPOOL.
/	THIOOL DURING EXECUTION.
/NTLY AFTER THE TYPE-IN: MODULE TO STOP.
/
/NOTN TYPING THE COMMAND LINE, SIN-
/	CE NO CHECK IS IMPLEMENTED, WHETHER THE TYPED NAME
/	INDEED CORRESPONDS TO A BLOCKDRIVER. THIS CAN BLOW
/	UP THE SYSTEM !
/
/ERRORS:1) LINE INPUTTER NOT THERE
/	2) DIRECTORY SEARCHER NOT THERE
/	3) ERRONEOUS COMMAND LINE
/	4) CTRL/B  TYPED IN COMMAND LINE
/	5) MONITOR HAS NO ROOM FOR BUFFER
/	6) I/O ERRORS
/MODULES USED:DIRECTORY SEARCHER;LINE INPUTTER;COMMANDINPUT;
/	COMMAND OUTPUT(ECHO);OUTPUT MODULE;INPUT MODULE
/USE:	TAD ("K^100+"1&3777  /ENTRY DEVICE NAME IN AC
/	JMS MONITOR	    /OR AC=0: DEFAULT "K1","T1"
/	   CALL		   /
/	   "S^100+"P&3777 /SPOOL
/	 ERROR RETURN	 /SPOOL NOT AVAILABLE; AC UNCHANGED
/	NORMAL RETURN	/AC=0;DF=ANY VALUE

IDEV="K^100+"1&3777 /COMMAND INPUT DEVICE ODEV="L^100+"P&3777 /OUTPUT DEVICE MDEV="S^100+"Y&3777 /DEFAULT MASS DEVICE *200 SPNTR1, "S^100+"P&3777 /NAME SP 1000 /4 PAGES; NO CONNECTS SPI1, SPLINE /A NUMBER OF INDIRECT REFERENCES SPI2, SPFIL SPI3, SPDTV SPI4, SPMDEV SP SPI7, SPODEV SPI9, SP14, SPSTALL SPI17, SPDTRELOCATORS SPNTR2=ZTEM2F NO NAME, TAKE DEFAULT DCA I SPI1 /SET UP INPUT DEVICE SPINPT, TAD SPI1 /READ ONE LINE JMS MONITOR CALL "I^100+"N&3777 /IN JMS I SPI14 /NOT THERE? OR BUSY? RETRY SZA CLA /ERROR? JMP SPXIT /LIAD SPI5 /SET UP PNTR1 /LOOK INTO THE BUFFER 375+215 SZA CLA /FIRS JMP SPC2 /NO, DECODE LINE /HERE WHEN ONLY "CR" OR ALTMODE IS TYPED IN. SPDFLT, ISZ SPNTR1 /SKIP PAST CR AND READ THE REST ISZ SPNTR1 JMP SPC2 SPERR, CLA TAD (202 /FORCE "IN" TO PRINT "?CRLF" DCA I SPNTR1 JMP SPINPT /IS SUPPOSED TO JMP TO EXIT /HERE AFTER "," SPCOMA, JMS I SPI6 /DO ONE FILE
/READ 6 CHARACTER FILENAME SPC2, TAD SPI3 /PNTR2 TO FILENA DCA SPNTR2 ACM3 DCA ZTEM3 /6 CHARS TO FETCH SP3, JMS SPREAD AND C77 IFZERO PDPTYP-PDP8E <BSW /ONE HALF > IFNZRO PDPTYP-PDP8E < CLL RTL RTL RTL /ONE HALF > DCA I SPNTR2 ACM1 /REMEMBER THERE WAS A FILENAME DCA SPSWIT /SET SWITCH JMS SPREAD /OTHER HALF AND C77 TAD I SPNTR2 DCA I SPNTR2 ISZ SPNTR2 ISZ ZTEM3 /6 DONE? JMP SP3 /N SPIGNORE,JMS SPREAD /IGNORE FURTHER CHARACTERS CLA JMP SPIGNORE /Y:IGNORE THE REST UNTIL "." /HERE AFTER ":" SPCOLON,TAD I SPI3 SNA JMP SPC2 AND (40 SNA CLA IFNZRO PDPTYP-PDP8E < TAD (100 > IFZERO PDPTYP-PDP8E < IAC BSW > DCA I SPI2 /SAVE MDEV H: NO FILENAME DCA I SO PDPTYP-PDP8E <BSW> IFL RTR RTR RTR > AND C7 DCA I SPI9 DCA I SPI12 DCA I SPI17 JMP SPC2 /ENTRY HERE AFTER "." SPDOT, TAD C3 /DO AS IN SPCOLON JMP SPC2 /EXCESSIVE CHARS DON'T HARM
/HERE AFTER "<" SPI, TAD I SPI2 O ROOM FOR THIS ON A 8IA JMP .+4 /YES, OK CLA /PP: ? JMP SPERR2 > DCA I SPI7 TAD I SPI4 DCA I SPI2 /RESET MDEV JMP SPC2 SPREAD, .-. /FETCH NEXT CHAR AND BRANCH TAD I SPNTR1 TAD M215 SZA TAD (-375+215 SNA JMP SPCR ISZ SPNTR1 /MUST BE AFTER TEST FOR CR OR AM TAD (-"<+375 SNA JMP SPI TAD C2 /(-":+"< SNA JMP SPCOLON TAD (-".+": SNA JMP SPDOT TAD C2 /(-",+". SNA JMP SPCOMA TAD (-260+", SPA JMP SPERR TAD C260 JMP I SPREAD SPCR, JMS I SPI6 /DO LAST FILE SPXIT, JMS MONITOR /EXIT EXIT+SWPOUT PAGE
SPI10, SPSWIT SPI11, SPDTV /A NUMBER OF INDIRECT REFERENCES SPI13, SPFIL SPI15, SPBUF SPI16, SPERR SPDO, .-. /DO ONE FILE TAD SPFIL DCA SPMDEV /SAVE MDEV ISZ I SPI10 /HAS FILENAME BEEN TYPED? JMP SPDO2 /N;SET BLKCOUNTER TO HIGH VALUE TAD SPI13 /SPFIL JMS MONITOR CALL /CALL THE DIRECTORY SEARCHER "D^100+"I&3777 JMS SPSTALL /NOT THERE? WAIT .1 SEC, JMP .-4 SZA CLA JMP SPRET /ERROR FILE NOT FOUND TAD SPDTV /SAVE -LENGTH;# OF BLOCKD SPI15 /BUFFER ADDRESSER ADDRESS TAD MYCDF /CA SPEND /FOR SURE RDFFUNCTIONWORD TAD C200 /ONE BLOCK;READ TAD SPDEV /ADD UNIT# DCA SPDTV /CALL THE INPUT BLOCK DRIVER SPLOOP, TAD SPMDEV /SET FOR INPUT DCA SPIN CDTOIF /DF AND AC AS POINTER TO DTV SPLUP, CLA CLL /L=0 FOR DECTAPE BACKWD MOTION TAD SPI11 JMS MONITOR CALL SPIN, 0 /NAME OF INPUT OR OUTPUT MODULE JMS SPSTALL /BUSY ? OR NON-EXISTING ? DCA SPSLOT /SAVE INTERRUPT SLOT JMS MONITOR /WAIT FOR COMPLETION WAIT SPSLOT, 0 SNA /ERROR? JMP SPNOER /NO TAD M10 /OR END OF MEDIUM ? SZA CLA JMP SPEND /I/O ERROR ACM1 DCA SPCNT /CHANGE CODE SPNOER, AC4000 /4000 FLIPS THE R/W BIT TAD SPDTV DCA SPDTV SNL JMP SP2 /L=0 IF WRITE AFTER A READ ISZ SPDTV+2 /NEXT BLOCK:COMES A READ AFTER A WRITE ISZ SPCNT /ALL DONE? SPREND, JMP SPLOOP /N
SPEND, 0 /BECOMES CORRECT CDF TO BUFFER SPRET, CLA DCA SPDTV /CLEAR FILENA.ME LOCATIONS DCA SPDTV+1 DCA SPDTV+2 DCA SPDTV+3 DCA I SPI10 /AND FILE SWITCH JMP I SPDO /FILE READYP SPLOOP+1 SPSTALL,.- JMS DEFER SMA CLA G MODULE JMS MONITOR TRY EVERY SECOND TAD M7 /AC=2, SPSTALL POINTS TO RETURN ADDR. TAD SPSTALL /SO SPSTALL+2-7 POINTS TO CALL.ADDR-4 DCA SPSTALL JMP I SPSTALL /AC=0
/INPUT LINE BUFFER SPBUFL=46 /LENGTH OF INPUT STRING BUFFEREV -SPBUFL /MAX LENGTE INPUT SPCNT, 0 /THEREINEINPUTTER) /THE DEFAU", "2;".;"L;"S;", "3;".;"L;"S;", "4;".;"L;"S;", "5;".;"L;"S 215 /TERMINATOR;WATCH IT! ZBLOCK SPLINE+SPBUFL+2-. /LARGE ENOUGH SPMDEV, MDEV /MASS DEVICE SPODEV, ODEV /OUTPUT DEVICE SPFIL, MDEV /REQUEST BLOCK FOR DIR SEARCH SPDEV, 0 /UNIT # 0-7 SPDTV, 0 /DTV STARTS HERE 0 /CORE ADDRESS 0 /BLOCK # 0 /EXTENSION 0 /IN CASE MORE CHARS TYPED 0 PAGE SPBUF=. /THE BUFFER O=SPBUF+377 /END OF BUFFER. $$$$



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search