mirror of
https://github.com/PDP-10/its.git
synced 2026-01-11 23:53:12 +00:00
267 lines
7.6 KiB
Plaintext
267 lines
7.6 KiB
Plaintext
'<PCODE "1ITSIO">
|
|
|
|
"**************************************************************
|
|
1. ADD STATISTICS TO CHANP
|
|
|
|
2. CONSIDER ADDING PRINT MESSAGES TO OTHER FUNCTIONS (READP, PRINTP ETC.)
|
|
***********************************************************************"
|
|
|
|
<PACKAGE "PIO">
|
|
|
|
<ENTRY CHANP OPENP CLOSEP FLUSHP RESETP UPDATEP READP PRINTP LENGTHP NAMEP>
|
|
|
|
<ENTRY ALLOCP DALLOCP>
|
|
|
|
<ENTRY PIO-PRINT-ACTION>
|
|
|
|
<ENTRY PIOCHANVCT PIOPAGEVCT PIO-REF-COUNT>
|
|
|
|
<ENTRY PIO-PAGE-LIMIT PIO-PAGE-COUNT PIO-DEFAULT-PAGE-LIMIT PIO-DEFAULT-IO-MODE>
|
|
|
|
<ENTRY PIO-MAX-EXTRA-ALLOCATION PIO-MIN-EXTRA-ALLOCATION PIO-EXTEND-BY-PAGES?>
|
|
|
|
<ENTRY PIO-HANG-ON-UNMAP?>
|
|
|
|
<ENTRY PIO-CLEAR-PAGE>
|
|
|
|
<ENTRY PIO-ERROR-VECTOR>
|
|
|
|
<NEWTYPE CHANP VECTOR>
|
|
|
|
<SETG PIO-TENEX? <>>
|
|
|
|
"*********** OS-DEPENDENT HAND-CODED RSUBRS ******************"
|
|
|
|
<USE "ITSIO">
|
|
|
|
<NEWTYPE JFN WORD>
|
|
|
|
"********* OS-INDEPENDENT HAND-CODED RSUBRS *************"
|
|
|
|
<USE "PIOSUB">
|
|
|
|
<SETG PIO-PRINT-ACTION <>>
|
|
|
|
<GDECL (PIOCHANVCT) <VECTOR [REST <OR CHANP FALSE>]> (PIOPAGEVCT) <VECTOR [REST
|
|
<OR UVECTOR FALSE> <OR CHANP FALSE>]> (PIOREQVCT PIOREQVCT1 PIOREQVCT2) VECTOR (
|
|
PIO-REF-COUNT PIO-RECURSION-COUNT) FIX (PIO-PAGE-LIMIT PIO-PAGE-COUNT
|
|
PIO-DEFAULT-PAGE-LIMIT) FIX (PIO-DEFAULT-IO-MODE) ANY (PIO-MAX-EXTRA-ALLOCATION
|
|
PIO-MIN-EXTRA-ALLOCATION) FIX (PIO-EXTEND-BY-PAGES? PIO-HANG-ON-UNMAP?
|
|
PIO-TENEX?) ANY (PIO-ERROR-VECTOR) <VECTOR [REST STRING]> (PIO-UNIT-UV
|
|
PIO-SCRATCH-SINGLE-UVECTOR) UVECTOR>
|
|
|
|
<SETG PIOCHANVCT <IVECTOR 10 <>>>
|
|
|
|
<SETG PIOPAGEVCT <IVECTOR 40 <>>>
|
|
|
|
<SETG PIOREQVCT <IVECTOR 40 <>>>
|
|
|
|
<SETG PIOREQVCT1 <IVECTOR 8 <>>>
|
|
|
|
<SETG PIOREQVCT2 <IVECTOR 8 <>>>
|
|
|
|
<SETG PIO-REF-COUNT 0>
|
|
|
|
<SETG PIO-RECURSION-COUNT 0>
|
|
|
|
<SETG PIO-PAGE-COUNT 0>
|
|
|
|
<SETG PIO-PAGE-LIMIT 20>
|
|
|
|
<SETG PIO-DEFAULT-PAGE-LIMIT 6>
|
|
|
|
<SETG PIO-DEFAULT-IO-MODE <>>
|
|
|
|
<SETG PIO-UNIT-UV <IUVECTOR 1 0>>
|
|
|
|
<SETG PIO-SCRATCH-SINGLE-UVECTOR <IUVECTOR 1 0>>
|
|
|
|
<SETG PIO-MAX-EXTRA-ALLOCATION 10>
|
|
|
|
<SETG PIO-MIN-EXTRA-ALLOCATION 10>
|
|
|
|
<SETG PIO-EXTEND-BY-PAGES? T>
|
|
|
|
<SETG PIO-HANG-ON-UNMAP? <>>
|
|
|
|
<SETG PIO-ERROR-VECTOR ["#1 - Unspecified error" "#2 - Illegal mode to OPENP"
|
|
"#3 - File not found" "#4 - File Busy" "#5 - Invalid CHANP supplied"
|
|
"#6 - Address is not a FIX" "#7 - Negative address not allowed"
|
|
"#8 - Attempt to READ past end of file"
|
|
"#9 - Can't PRINT to a READ-ONLY channel" "#10 - CHANP not in DEFER mode"
|
|
"#11 - No cache file in DEFER mode CHANP" "#12 - File inconsistent, use UPDATEP"
|
|
"#13 - Cache file is empty"]>
|
|
|
|
"**************** OFFSETS ON 'CHANP' TYPE *********************"
|
|
|
|
<SETG PIOFSPC 1>
|
|
|
|
<SETG PIOMODE 2>
|
|
|
|
<SETG PIOFPTR 3>
|
|
|
|
<SETG PIOFLNT 4>
|
|
|
|
<SETG PIOCFIL 5>
|
|
|
|
<SETG PIOCLNT 6>
|
|
|
|
<SETG PIOPLIM 7>
|
|
|
|
<SETG PIOPNUM 8>
|
|
|
|
<SETG PIOPMAP 9>
|
|
|
|
<SETG PIOCSIZ 10>
|
|
|
|
<SETG PIOCMAP 11>
|
|
|
|
<SETG PIOPMOD 12>
|
|
|
|
<SETG PIOFSTA 13>
|
|
|
|
<SETG PIOFTBL 14>
|
|
|
|
<SETG PIOXFLG 15>
|
|
|
|
<GDECL (PIOFPTR PIOFSPC PIOMODE PIOPLIM PIOPMOD PIOCFIL PIOPNUM PIOPMAP PIOCMAP
|
|
PIOFTBL PIOXFLG PIOFLNT PIOFSTA PIOCSIZ PIOCLNT) FIX>
|
|
|
|
<MANIFEST PIOFPTR PIOFSPC PIOMODE PIOPLIM PIOPMOD PIOCFIL PIOPNUM PIOPMAP
|
|
PIOCMAP PIOFTBL PIOXFLG PIOFLNT PIOFSTA PIOCSIZ PIOCLNT>
|
|
|
|
<GDECL (PIOWBIT PIOTBIT PIOLHWBIT PIORHWBIT) BITS (PIOTBIN PIOTRMAP PIOTRWMAP
|
|
PIOTCWMAP PIOTUNMAP PIOTNWPAG) FIX>
|
|
|
|
<SETG PIOLHWBIT <BITS 18 18>>
|
|
|
|
<SETG PIORHWBIT <BITS 18 0>>
|
|
|
|
<SETG PIOWBIT <BITS 1 35>>
|
|
|
|
<SETG PIOTBIT <BITS 3 30>>
|
|
|
|
<SETG PIOTBIN 1>
|
|
|
|
<SETG PIOTRMAP 2>
|
|
|
|
<SETG PIOTRWMAP 3>
|
|
|
|
<SETG PIOTCWMAP 4>
|
|
|
|
<SETG PIOTUNMAP 5>
|
|
|
|
<SETG PIOTNWPAG 6>
|
|
|
|
<MANIFEST PIOLHWBIT PIORHWBIT PIOWBIT PIOTBIT PIOTBIN PIOTRMAP PIOTRWMAP
|
|
PIOTCWMAP PIOTUNMAP PIOTNWPAG>
|
|
|
|
"******** FUNCTIONS PREFIXED WITH 'PIO' ARE OPERATING-SYSTEM-DEPENDENT **********"
|
|
|
|
<SETG PIO-FILE-OPEN %<RSUBR-ENTRY '[IOT-FILE PIO-FILE-OPEN #DECL ("VALUE" <OR
|
|
CHANNEL FALSE> <OR STRING CHANNEL> FIX)] 453>>
|
|
|
|
<SETG PIO-FILE-CLOSE ,CLOSE>
|
|
|
|
<SETG PIO-FILE-FLUSH ,CLOSE>
|
|
|
|
<SETG PIO-NAME-OF-FILE %<RSUBR-ENTRY '[IOT-FILE PIO-NAME-OF-FILE #DECL ("VALUE"
|
|
STRING CHANNEL)] 685>>
|
|
|
|
<SETG PIO-FILE-LENGTH %<RSUBR-ENTRY '[IOT-FILE PIO-FILE-LENGTH #DECL ("VALUE"
|
|
FIX CHANNEL)] 705>>
|
|
|
|
<SETG PIO-SET-DIRECTION %<RSUBR-ENTRY '[IOT-FILE PIO-SET-DIRECTION #DECL (
|
|
"VALUE" ANY CHANNEL FIX)] 750>>
|
|
|
|
<SETG PIO-READP-FILE %<RSUBR-ENTRY '[IOT-FILE PIO-READP-FILE #DECL ("VALUE" <OR
|
|
FALSE FIX UVECTOR> CHANNEL <OR UVECTOR FIX> FIX FIX)] 913>>
|
|
|
|
<SETG PIO-READW-FILE %<RSUBR-ENTRY '[IOT-FILE PIO-READW-FILE #DECL ("VALUE" <OR
|
|
FALSE WORD> CHANNEL FIX)] 1026>>
|
|
|
|
<SETG PIO-PRINTP-FILE %<RSUBR-ENTRY '[IOT-FILE PIO-PRINTP-FILE #DECL ("VALUE" <
|
|
OR FALSE FIX UVECTOR> CHANNEL <OR UVECTOR FIX> FIX FIX)] 1125>>
|
|
|
|
<SETG PIO-PRINTW-FILE %<RSUBR-ENTRY '[IOT-FILE PIO-PRINTW-FILE #DECL ("VALUE" <
|
|
OR FALSE FIX> CHANNEL FIX FIX)] 1242>>
|
|
|
|
<SETG PIO-PMAP-FILE %<RSUBR-ENTRY '[IOT-FILE PIO-PMAP-FILE #DECL ("VALUE" ANY <
|
|
OR CHANNEL FIX> FIX FIX FIX)] 1344>>
|
|
|
|
<SETG PIO-EXTEND-FILE %<RSUBR-ENTRY '[IOT-FILE PIO-EXTEND-FILE #DECL ("VALUE" <
|
|
OR ATOM FALSE> CHANNEL FIX FIX)] 1572>>
|
|
|
|
<SETG PIO-FORCE-FILE %<RSUBR-ENTRY '[IOT-FILE PIO-FORCE-FILE #DECL ("VALUE" <OR
|
|
CHANNEL FALSE> CHANNEL)] 1688>>
|
|
|
|
"********** INTERNAL FUNCTIONS WHICH ARE OS-INDEPENDENT ****************"
|
|
|
|
<SETG FIXUP-EXTENSIONS %<RSUBR-ENTRY '[IOT-FILE FIXUP-EXTENSIONS #DECL ("VALUE"
|
|
<OR ATOM FALSE> CHANP)] 1749>>
|
|
|
|
<SETG FLUSH-PAGE %<RSUBR-ENTRY '[IOT-FILE FLUSH-PAGE #DECL ("VALUE" <OR FALSE <
|
|
UVECTOR FIX ANY FIX>> CHANP UVECTOR "OPTIONAL" ANY)] 1838>>
|
|
|
|
<SETG ASSIGN-CACHE-PAGE %<RSUBR-ENTRY '[IOT-FILE ASSIGN-CACHE-PAGE #DECL (
|
|
"VALUE" FIX CHANP FIX ANY)] 2085>>
|
|
|
|
<SETG FIND-LRU-PAGE %<RSUBR-ENTRY '[IOT-FILE FIND-LRU-PAGE #DECL ("VALUE" <OR
|
|
FALSE <UVECTOR <OR FIX FLOAT>>> UVECTOR)] 2186>>
|
|
|
|
<SETG GET-PAGE %<RSUBR-ENTRY '[IOT-FILE GET-PAGE #DECL ("VALUE" UVECTOR CHANP)]
|
|
2244>>
|
|
|
|
<SETG FIND-PAGE %<RSUBR-ENTRY '[IOT-FILE FIND-PAGE #DECL ("VALUE" <OR FALSE FIX>
|
|
"OPTIONAL" ANY)] 2353>>
|
|
|
|
<SETG GIVE-PAGE %<RSUBR-ENTRY '[IOT-FILE GIVE-PAGE #DECL ("VALUE" FIX FIX)] 2564
|
|
>>
|
|
|
|
<SETG GET-CLEAR-PAGE %<RSUBR-ENTRY '[IOT-FILE GET-CLEAR-PAGE #DECL ("VALUE" FIX)
|
|
] 2591>>
|
|
|
|
<SETG GET-ALLOC-TABLE %<RSUBR-ENTRY '[IOT-FILE GET-ALLOC-TABLE #DECL ("VALUE" <
|
|
OR FALSE UVECTOR> CHANP)] 2648>>
|
|
|
|
<SETG SAVE-ALLOC-TABLE %<RSUBR-ENTRY '[IOT-FILE SAVE-ALLOC-TABLE #DECL ("VALUE"
|
|
<OR ATOM FALSE> CHANP)] 2797>>
|
|
|
|
"************ ENTRY POINTS OF 'PIO' PACKAGE *****************"
|
|
|
|
<SETG CHANP %<RSUBR-ENTRY '[IOT-FILE CHANP #DECL ("VALUE" CHANP <OR JFN CHANNEL>
|
|
STRING FIX FIX ANY <OR JFN CHANNEL FALSE> FIX <OR FIX FALSE>)] 2930>>
|
|
|
|
<SETG OPENP %<RSUBR-ENTRY '[IOT-FILE OPENP #DECL ("VALUE" <OR CHANNEL CHANP
|
|
FALSE> STRING STRING "OPTIONAL" FIX ANY <OR FALSE STRING>)] 3032>>
|
|
|
|
<SETG CLOSEP %<RSUBR-ENTRY '[IOT-FILE CLOSEP #DECL ("VALUE" ATOM CHANP)] 3266>>
|
|
|
|
<SETG FLUSHP %<RSUBR-ENTRY '[IOT-FILE FLUSHP #DECL ("VALUE" <CHANP ANY ANY ANY
|
|
ANY ANY ANY ANY FIX [4 ANY] FALSE> CHANP)] 3363>>
|
|
|
|
<SETG RESETP %<RSUBR-ENTRY '[IOT-FILE RESETP #DECL ("VALUE" ANY CHANP)] 3484>>
|
|
|
|
<SETG READP %<RSUBR-ENTRY '[IOT-FILE READP #DECL ("VALUE" <OR FALSE UVECTOR WORD
|
|
> CHANP FIX "OPTIONAL" <OR UVECTOR <PRIMTYPE WORD> FALSE> <OR FIX FALSE> ANY)]
|
|
3573>>
|
|
|
|
<SETG PRINTP %<RSUBR-ENTRY '[IOT-FILE PRINTP #DECL ("VALUE" <OR FALSE FIX> CHANP
|
|
FIX <OR UVECTOR <PRIMTYPE WORD>> "OPTIONAL" <OR FIX FALSE> ANY FIX)] 4408>>
|
|
|
|
<SETG UPDATEP %<RSUBR-ENTRY '[IOT-FILE UPDATEP #DECL ("VALUE" <OR ATOM FALSE> <
|
|
OR CHANP STRING> "OPTIONAL" STRING)] 6043>>
|
|
|
|
<SETG LENGTHP %<RSUBR-ENTRY '[IOT-FILE LENGTHP #DECL ("VALUE" FIX CHANP)] 6584>>
|
|
|
|
<SETG NAMEP %<RSUBR-ENTRY '[IOT-FILE NAMEP #DECL ("VALUE" <OR FALSE STRING>
|
|
CHANP)] 6609>>
|
|
|
|
<SETG ALLOCP %<RSUBR-ENTRY '[IOT-FILE ALLOCP #DECL ("VALUE" <OR FALSE FIX> CHANP
|
|
FIX "OPTIONAL" FIX ANY)] 6635>>
|
|
|
|
<SETG DALLOCP %<RSUBR-ENTRY '[IOT-FILE DALLOCP #DECL ("VALUE" <OR ATOM FALSE>
|
|
CHANP FIX)] 7099>>
|
|
|
|
<ENDPACKAGE>
|