DataMuseum.dk

Presents historical artifacts from the history of:

Philips Data Systems

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Philips Data Systems

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦f638cf44a⟧

    Length: 7998 (0x1f3e)
    Notes: pts_type(SC)
    Names: »SPOOL.SC«

Derivation

└─⟦38a30a456⟧ Bits:30009662 Philips computer tape "600104"
    └─⟦this⟧ »OD-KOM/SPOOL.SC« 
└─⟦d2cdd233a⟧ Bits:30009674 Philips computer tape "600204"
    └─⟦this⟧ »OD-KOM/SPOOL.SC« 

PTS(SC)

 IDENT SPOOL 830919 EV
 DDUM KMD08 
 PDIV 
 ENTRY SAINIT 


 EXT MASK 
 EXT CRF



 INCLUDE EQUATE 
 EJECT
SAINIT
 TBT SKEDOK,SPOOL10 
 DELAY CBIN3
 B SAINIT 
SPOOL10 

* SET NO TIME OUT FOR FIRST READ

 MOVE SSBINW1,=W'-1' NO TIME OUT
 DSC1 SII,X'0B',SSBINW1 
 DSC1 SIO,X'0B',SSBINW1 
 MOVE SSBINW1,=W'134' 
 READ SII,ICIBUF,SSBINW1 FIRST READ 
 BNOK SPOOL10 

* SET TIME OUT FOR FOLLOWING READS

 GETID TASKID 
 XCOPY SSBINW9,CBIN0,CBIN2,TASKID,CBIN0 
 SUB SSBINW9,=C'S@' 
			SSBINW9=TIME OUT VALUE 
 MOVE SSBINW9,TIMOUT(SSBINW9) 
 DSC1 SII,X'0B',SSBINW9 
 DSC1 SIO,X'0B',SSBINW9 
 B SPOOL30

SPOOL20 
			NOT FIRST READ 
  MOVE SSBINW1,=W'134'
 READ SII,ICIBUF,SSBINW1
 BNERR SPOOL30
 XSTAT SII,SSBINW1 GET EXT. STATUSBYTE
 MOVE SSBINW2,CBIN7 TEST FOR BIT 9 = TIMEOUT
 CALL MASK,SSBINW1,SSBINW2
 BNZ SPOOL20 BRANCH IF BIT CLEARED
* TIMEOUT HAS ACCURRED
 CBE SSCURFIL,=C'        ',SPOOL10 NO FILE ACTIVE 
 SET AUTOCLOS 
 B SP2120 GO AND CLOSE FILE 
SPOOL30 CBL SSBINW1,CBIN2,SPOOL20 INVALID LENGTH
 MOVE CALLING,ICIBUF TASKID 
 XCOPY SSBINW1,CBIN0,CBIN2,ICIBUF,CBIN2 FUNCTION
 XCOPY SSBINW2,CBIN0,CBIN2,ICIBUF,CBIN4 LENGTH
 MOVE RETTASK,=C'S0'
 TBF SPASGERR,SP0000 ASSIGNERROR
 B SPOOLER1 
 EJECT
SP0000
 IB SSBINW1,SP9000,SP2000,SP3000
 B SP9000 


SP2000
* WE NOW HAVE A PRINTLINE WHICH HAS TO BE 
* WRITTEN TO THE DISK 
 CBNE SSCURFIL,=C'        ',SP2100 SPOOLFILE ACTIVATED? 
* NO CURRENT FILE YET 
* SEE IF TASKID IS IN INDEXRECORD 
 MOVE SSBINW7,CUSEDLN 
 MOVE SSBINW4,CBIN0 
 MOVE SSBINW5,CBIN0 
 MOVE SSBINW6,CBIN0 
SP2020
 XCOPY SSSTRG4,CBIN0,CBIN4,CUSED,SSBINW4
 MOVE SSSTRG2,SSSTRG4 
 CBNE SSSTRG2,CALLING,SP2050
 XCOPY SSBINW5,CBIN1,CBIN1,SSSTRG4,CBIN2 MOVE FILEID
 CBL SSBINW5,SSBINW6,SP2030 FIND HIGHEST FILEID 
 MOVE SSBINW6,SSBINW5 AND SAVE IT 
SP2030
 ADD SSBINW4,CBIN4
 CBL SSBINW4,CUSEDLN,SP2020 
* 
SP2050
SP2060
 MOVE SSSTRG4,=X'00' FIND PLACE FOR NEW FILE
 MOVE SSBINW4,CBIN0 
 MOVE SSBINW7,CUSEDLN 
 MATCH CUSED,SSBINW4,SSBINW7,SSSTRG4,CBIN0,CBIN4
 XCOPY CUSED,SSBINW4,CBIN2,CALLING,CBIN0 TASKID 
 ADD SSBCDCUR,=D'1' NEW CURRENT FILE
 MOVE SSBINW6,SSBCDCUR
 ADD SSBINW4,CBIN2
 XCOPY CUSED,SSBINW4,CBIN1,SSBINW6,CBIN1 FILEID 
 SET CSAVEIX
 EDIT SSCURFIL,FMCURFIL SPOOLXXX
 ADD SSBINW4,CBIN1
 MOVE SSSTRG1,=C'F' BEING FILLED
 XCOPY CUSED,SSBINW4,CBIN1,SSSTRG1,CBIN0
** CREATE FILE VIA TOSSUTILITIES
 MOVE PBLK,=X'00' 
 EDIT PBLK,FRMCRF 
 CALL CRF,PBLK,RC1,RC2
 CBNE RC1,CBIN0,SPOOLER2
 PERF SENDMSG,CBIN1,CALLING 
SP2090
 MOVE ASVOL,CVOL(CBIN1) 
 ASSIGN SPOOL,1,SSBINW1,SSCURFIL,ASVOL
 BNOK SPOOLER1
 MOVE SSSTRG2,=C'11' FORM FEED
 XCOPY ICIBUF,CBIN6,CBIN2,SSSTRG2,CBIN0 
SP2100
* NOW SEQ.WRITE CAN BE DONE 
 MOVE TDISKBUF,CBLANKS CLEAR BUFFER 
 XCOPY SSBINW2,CBIN0,CBIN2,ICIBUF,CBIN4 GET LENGTH
 XCOPY TDISKBUF,CBIN0,SSBINW2,ICIBUF,CBIN6
 WRITE SPOOL,TDISKBUF 
 BOFL SP2120
 BNOK SPOOLER2
SP2110
 B SPOOLRET 



SP2120
* SEGMENT FILLED. 
* THIS SEGMENT IS TO BE CLOSED. 
* IF IT WAS BECAUSE OF OVERFLOW (AUTOCLOS=FALSE)
* A NEW ONE IS TO BE CREATED AND THE MASTERINDEX
* MUST BE UPDATED 
 DSC0 SPOOL,CLOSE CLOSE CURRENT FILE
 MOVE SSBCD4,SSCURFIL CURRENT FILE
 MOVE SSBINW2,SSBCD4
 MOVE SSBINW1,CBIN0 
 MOVE SSBINW3,CBIN0 
SP2130
 XCOPY SSSTRG4,CBIN0,CBIN4,CUSED,SSBINW1
 XCOPY SSBINW3,CBIN1,CBIN1,SSSTRG4,CBIN2 FILEID 
 CBNE SSBINW3,SSBINW2,SP2140
 MOVE SSSTRG1,CBLANKS 
 TBF AUTOCLOS,SP2135
 CBG SSBINW9,=W'200',SP2135 
			TIME OUT VALUE LESS THAN 
			20 SECONDS HAS OCCURRED, 
			MUST BE HARDCOPY 
			MEANING: SET PRINT 
 MOVE SSSTRG1,=C'P' 
SP2135
 XCOPY SSSTRG4,CBIN3,CBIN1,SSSTRG1,CBIN0
 XCOPY CUSED,SSBINW1,CBIN4,SSSTRG4,CBIN0
 SET CSAVEIX
  B SP2150
SP2140
 ADD SSBINW1,CBIN4
 CBL SSBINW1,CUSEDLN,SP2130 
SP2150
 TBF AUTOCLOS,SP2060
 CLEAR AUTOCLOS 
 MOVE SSCURFIL,CBLANKS CLEAR CURRENT FILE 
 B SPOOL10
 EJECT
SP3000
* EXPLICIT CLOSE
 DSC0 SPOOL,CLOSE CLOSE FILE
 MOVE SSBCD4,SSCURFIL CURRENT FILE
 MOVE SSBINW2,SSBCD4
 MOVE SSBINW1,CBIN0 
 MOVE SSBINW3,CBIN0 
SP3010
 XCOPY SSSTRG4,CBIN0,CBIN4,CUSED,SSBINW1
 XCOPY SSBINW3,CBIN1,CBIN1,SSSTRG4,CBIN2 FILEID 
 CBNE SSBINW3,SSBINW2,SP3020
 XCOPY SSSTRG4,CBIN3,CBIN1,CBLANKS,CBIN0
 XCOPY CUSED,SSBINW1,CBIN4,SSSTRG4,CBIN0
 SET CSAVEIX
 B SP3030 
SP3020
 ADD SSBINW1,CBIN4
 CBL SSBINW1,CUSEDLN,SP3010 
SP3030
 MOVE SSCURFIL,CBLANKS
 B SPOOLRET 




SP9000
 B SPOOLER6 
 EJECT
SPOOLER1
 MOVE ICOBUF,=C'1' ASSIGN ERROR 
 B SPOOLERR 
SPOOLER2
 MOVE ICOBUF,=C'2' I/O ERROR
 B SPOOLERR 
SPOOLER6
 MOVE ICOBUF,=C'6' UNDEFINED FUNCTION 
 B SPOOLERR 
SPOOLERR
 SET CIGNORE
 B SPOOLRT1 

SPOOLRET
 MOVE ICOBUF,=C'0'
SPOOLRT1
 MOVE SSSTRG2,ICOBUF
 RWRITE SIO,SSSTRG2,RETTASK 
 B SPOOL20
 EJECT
SENDMSG PROC P,ADR
 EDIT ICOBUF,MSGFRM(P)
 CBL ADR,=C'TC',SENDM90 
SENDM10 
 MOVE SSBINW2,ADR 
 RWRITE SIO,ICOBUF,SSBINW2
 BERR SENDM10 
SENDM90 
 RET
 PEND 


MSGFRM FTABLE MSG1

MSG1 FRMT 
 FILLR ' ',1
 FCOPY ='SPOOLFILE '
 FMEL '999',SSBCDCUR
 FTEXT ' OPRETTET.' 
 FILLR X'00',40 
 FMEND
 EJECT
FRMCRF FRMT 
 FILLR X'00',4 BUF1,BUF2
 FILLR X'00',1 FC1
 FILLR X'00',1 PRINT DEVICE 
 FILLR 'S',1 FILEORG
 FILLR X'00',1
 FCOPY SSCURFIL FILENAME
 FCOPY CVOL(CBIN1) VOLUMENAME 
 FILLR ' ',18 UNUSED VOLUMENAMES
 FMEL '999999',CMASKDAT 
 FILLR '0',3 RET.PERIOD 
 FILLR X'02',1 BLOCKFACTOR
 FILLR X'00',1 RECLEN 
 FILLR X'86',1 -
 FILLR X'00',3 KEYADR+NO.INDEXFILES 
 FILLR X'00',1
 FTEXT X'01F4' 500 RECORDS
 FILLR X'00',6
 FMEND


FMCURFIL FRMT 
 FTEXT 'SPOOL'
 FMEL '999',SSBCDCUR
 FMEND


 END

Full view