1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-11 23:53:12 +00:00
PDP-10.its/bin/librm4/pio.fbin5

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>