Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / 20c / jsys.mud
diff --git a/mim/development/mim/20c/jsys.mud b/mim/development/mim/20c/jsys.mud
new file mode 100644 (file)
index 0000000..1297400
--- /dev/null
@@ -0,0 +1,897 @@
+
+<NEWTYPE XGLOC ATOM>
+
+<NEWTYPE JSYS WORD>
+
+<SETG DOJSYS 504>
+
+<SETG HBPS 506>
+
+<SETG MAX-ACS 5>
+
+<SETG MAX-ACS-1 4>
+
+<SETG BEAR-JSYS 9126805504>
+
+<GDECL (MAX-IMMEDIATE) FIX>
+
+<MANIFEST BEAR-JSYS>
+
+<BLOCK (<ROOT>)>
+ALL-JSY
+<ENDBLOCK>
+<BLOCK (<SETG JSYS-OBLIST <MOBLIST JSYS>> <ROOT>)>
+<SETG ALL-JSY
+      '[0
+       JSYS
+       1
+       LOGIN
+       2
+       CRJOB
+       3
+       LGOUT
+       4
+       CACCT
+       5
+       EFACT
+       6
+       SMON
+       7
+       TMON
+       8
+       GETAB
+       9
+       ERSTR
+       10
+       GETER
+       11
+       GJINF
+       12
+       TIME-JSYS
+       13
+       RUNTM
+       14
+       SYSGT
+       15
+       GNJFN
+       16
+       GTJFN-S-S
+       16
+       GTJFN-S-J
+       16
+       GTJFN-L
+       17
+       OPENF
+       18
+       CLOSF
+       19
+       RLJFN
+       20
+       GTSTS
+       21
+       STSTS
+       22
+       DELF
+       23
+       SFPTR
+       24
+       JFNS
+       25
+       FFFFP
+       26
+       RDDIR
+       27
+       CPRTF
+       28
+       CLZFF
+       29
+       RNAMF
+       30
+       SIZEF
+       31
+       GACTF
+       32
+       STDIR
+       33
+       DIRST
+       34
+       BKJFN
+       35
+       RFPTR
+       36
+       CNDIR
+       37
+       RFBSZ
+       38
+       SFBSZ
+       39
+       SWJFN
+       40
+       BIN
+       41
+       BOUT
+       42
+       SIN-JSYS
+       43
+       SOUT
+       44
+       RIN
+       45
+       ROUT
+       46
+       PMAP
+       47
+       RPACS
+       48
+       SPACS
+       49
+       RMAP
+       50
+       SACTF
+       51
+       GTFDB
+       52
+       CHFDB
+       53
+       DUMPI
+       54
+       DUMPO
+       55
+       DELDF
+       56
+       ASND
+       57
+       RELD
+       58
+       CSYNO
+       59
+       PBIN
+       60
+       PBOUT
+       62
+       PSOUT
+       63
+       MTOPR
+       64
+       CFIBF
+       65
+       CFOBF
+       66
+       SIBE
+       67
+       SOBE
+       68
+       DOBE
+       69
+       GTABS
+       70
+       STABS
+       71
+       RFMOD
+       72
+       SFMOD
+       73
+       RFPOS
+       74
+       RFCOC
+       75
+       SFCOC
+       76
+       STI
+       77
+       DTACH
+       78
+       ATACH
+       79
+       DVCHR
+       80
+       STDEV
+       81
+       DEVST
+       82
+       MOUNT
+       83
+       DSMNT
+       84
+       INIDR
+       85
+       SIR
+       86
+       EIR
+       87
+       SKPIR
+       88
+       DIR
+       89
+       AIC
+       90
+       IIC
+       91
+       DIC
+       92
+       RCM
+       93
+       RWM
+       94
+       DEBRK
+       95
+       ATI
+       96
+       DTI
+       97
+       CIS
+       98
+       SIRCM
+       99
+       RIRCM
+       100
+       RIR
+       101
+       GDSTS
+       102
+       SDSTS
+       103
+       RESET-JSYS
+       104
+       RPCAP
+       105
+       EPCAP
+       106
+       CFORK
+       107
+       KFORK
+       108
+       FFORK
+       109
+       RFORK
+       110
+       RFSTS
+       111
+       SFORK
+       112
+       SFACS
+       113
+       RFACS
+       114
+       HFORK
+       115
+       WFORK
+       116
+       GFRKH
+       117
+       RFRKH
+       118
+       GFRKS
+       119
+       DISMS
+       120
+       HALTF
+       121
+       GTRPW
+       122
+       GTRPI
+       123
+       RTIW
+       124
+       STIW
+       125
+       SOBF
+       126
+       RWSET
+       127
+       GETNM
+       128
+       GET-JSYS
+       129
+       SFRKV
+       130
+       SAVE-JSYS
+       131
+       SSAVE
+       132
+       SEVEC
+       133
+       GEVEC
+       134
+       GPJFN
+       135
+       SPJFN
+       136
+       SETNM
+       137
+       FFUFP
+       138
+       DIBE
+       139
+       FDFRE
+       140
+       GDSKC
+       141
+       LITES
+       142
+       TLINK-JSYS
+       143
+       STPAR
+       144
+       ODTIM
+       145
+       IDTIM
+       146
+       ODCNV
+       147
+       IDCNV
+       148
+       NOUT
+       149
+       NIN
+       150
+       STAD
+       151
+       GTAD
+       152
+       ODTNC
+       153
+       INTNC
+       154
+       FLIN
+       155
+       FLOUT
+       156
+       DFIN
+       157
+       DFOUT
+       160
+       CRDIR
+       161
+       GTDIR
+       162
+       DSKOP
+       163
+       SPRIW
+       164
+       DSKAS
+       165
+       SJPRI
+       176
+       ASNDP
+       177
+       RELDP
+       178
+       ASNDC
+       179
+       RELDC
+       180
+       STRDP
+       181
+       STPDP
+       182
+       STSDP
+       183
+       RDSDP
+       184
+       WATDP
+       186
+       GTNCP
+       187
+       GTHST
+       188
+       ATNVT
+       189
+       CVSKT
+       190
+       CVHST
+       191
+       FLHST
+       192
+       GCVEC
+       193
+       SCVEC
+       194
+       SSTYP
+       195
+       GTTYP
+       196
+       BPT
+       197
+       GTDAL
+       198
+       WAIT
+       199
+       HSYS
+       200
+       USRIO
+       201
+       PEEK
+       202
+       MSFRK
+       203
+       ESOUT
+       204
+       SPLFK
+       205
+       ADVIZ
+       206
+       JOBTM
+       207
+       DELNF
+       208
+       SWTCH
+       209
+       TFORK
+       210
+       RTFRK
+       211
+       UTFRK
+       212
+       SCTTY
+       222
+       SETER                                         ;"NEW JSYS'S FOR TOPS-20"
+       320
+       RSCAN
+       321
+       HPTIM
+       322
+       CRLNM
+       323
+       INLNM
+       324
+       LNMST
+       325
+       RDTXT
+       326
+       SETSN
+       327
+       GETJI
+       328
+       MSEND
+       329
+       MRECV
+       330
+       MUTIL
+       331
+       ENQ
+       332
+       DEQ
+       333
+       ENQC
+       334
+       SNOOP
+       335
+       SPOOL
+       336
+       ALLOC
+       337
+       CHKAC
+       338
+       TIMER
+       339
+       RDTTY
+       340
+       TEXTI
+       341
+       UFPGS
+       342
+       SFPOS
+       343
+       SYERR
+       344
+       DIAG
+       345
+       SINR
+       346
+       SOUTR
+       347
+       RFTAD
+       348
+       SFTAD
+       349
+       TBDEL
+       350
+       TBADD
+       351
+       TBLUK
+       352
+       STCMP
+       353
+       SETJB
+       354
+       GDVEC
+       355
+       SDVEC
+       356
+       COMND
+       357
+       PRARG
+       358
+       GACCT
+       359
+       LPINI
+       360
+       GFUST
+       361
+       SFUST
+       362
+       ACCES
+       363
+       RCDIR
+       364
+       RCUSR
+       365
+       MSTR
+       366
+       STPPN
+       367
+       PPNST
+       368
+       PMCTL
+       369
+       LOCK
+       370
+       BOOT
+       371
+       UTEST
+       372
+       USAGE
+       374
+       VACCT
+       375
+       NODE
+       376
+       ADRBK
+       *606* XGVEC
+       408
+       IIT
+       412
+       GTBLT
+       413
+       VTSOP
+       414
+       RTMOD
+       415
+       STMOD
+       416
+       RTCHR
+       417
+       STCHR
+       488
+       SNDIM
+       489
+       RCVIM
+       490
+       ASNSQ
+       491
+       RELSQ
+       504
+       THIBR
+       505
+       TWAKE
+       506
+       MRPAC
+       507
+       SETPV
+       508
+       MTALN
+       509
+       TTMSG
+       *742*
+       OPEN-JSYS
+       *743*
+       CLOSE-JSYS
+       *740*
+       SEND
+       *741*
+       RECV
+       *745*
+       STAT
+       *746*
+       CHANL
+       *747*
+       ABORT
+       *744*
+       SCSLV
+       *767*
+       SMAP
+       *274*
+       ATNVT]>
+<ENDBLOCK>
+
+<DEFINE SETUP-JSY ()
+       <REPEAT ((PNTR ,ALL-JSY) JSY) #DECL ((PNTR) <VECTOR [REST FIX ATOM]>)
+               <COND (<EMPTY? .PNTR> <RETURN>)>
+               <SET JSY <CHTYPE <+ ,BEAR-JSYS <1 .PNTR>> JSYS>>
+               <COND (<AND <GASSIGNED? <2 .PNTR>> <N==? ,<2 .PNTR> .JSY>>
+                      <ERROR JSYS-ALREADY-ASSIGNED <1 .PNTR>>)>
+               <SETG <2 .PNTR> .JSY>
+               <SET PNTR <REST .PNTR 2>>>>
+
+<COND (<GASSIGNED? SETUP-JSY> <SETUP-JSY>)>
+
+<DEFINE SYSOP!-MIMOC (L "AUX" (MUNGED-REG 1) (DEST <>) THING DIR (LBL <>)
+                               TT (LL ()) JSFCN JSATM JSFORM JSNUM XL1 XL2)
+       #DECL ((LL L) LIST)
+       <COND (<EMPTY? .L> <MIMOCERR NO-JSYS-SUPPLIED!-ERRORS>)>
+       <COND (<OR <AND <TYPE? <SET JSFORM <1 .L>> FORM>
+                       <==? <LENGTH .JSFORM> 2>
+                       <==? <1 .JSFORM> QUOTE>
+                       <TYPE? <SET JSATM <2 .JSFORM>> ATOM>
+                       <TYPE? <SET JSATM <LOOKUP <SPNAME .JSATM>
+                                                 ,JSYS-OBLIST>>
+                              ATOM>
+                       <GASSIGNED? .JSATM>
+                       <TYPE? <SET JSNUM ,.JSATM> JSYS>>
+                  <AND <TYPE? <SET JSNUM .JSFORM> FIX JSYS>
+                       <SET JSFORM <MEMQ <CHTYPE <ANDB .JSNUM *777777*> FIX>
+                                          ,ALL-JSY>>
+                       <SET JSATM <2 .JSFORM>>>
+                  <TYPE? .JSNUM ATOM>>
+              <COND (<SET JSFCN <AND <ASSIGNED? JSATM>
+                                     <GETPROP .JSATM SPECIAL-JSYS-FUNCTION>>>
+                     <APPLY .JSFCN .JSATM .L>)
+                    (ELSE
+                     <COND (<EMPTY? <SET L <REST .L>>>)
+                           (<MEMQ <SET THING <1 .L>> '[= + -]>
+                            <COND (<==? .THING =>
+                                   <SET DEST <2 .L>>
+                                   <SET L <REST .L 2>>)>
+                            <COND (<NOT <EMPTY? .L>>
+                                   <SET DIR <1 .L>>
+                                   <SET LBL <2 .L>>)>)
+                           (ELSE
+                            <COND (<SET TT <MEMQ = .L>> <SET DEST <2 .TT>>)>
+                            <COND (<SET TT <OR <MEMQ + .L> <MEMQ - .L>>>
+                                   <SET DIR <1 .TT>>
+                                   <SET LBL <2 .TT>>)>
+                            <REPEAT ((ACL <REST <CHTYPE ,ACS VECTOR> 2>) AC)
+                                    #DECL ((ACL) VECTOR (AC) ATOM)
+                                    <COND (<MEMQ <SET THING <1 .L>>
+                                                 '[+ -]>
+                                           <RETURN>)
+                                          (<==? .THING =>
+                                           <SET DEST <2 .L>>
+                                           <COND (<EMPTY? <SET L <REST .L 2>>>
+                                                  <RETURN>)
+                                                 (ELSE
+                                                  <AGAIN>)>)>
+                                    <COND (<AND <TYPE? .THING LIST>
+                                                <==? <LENGTH .THING> 2>
+                                                <==? <1 .THING> RETURN>>
+                                           <SET MUNGED-REG <2 .THING>>)
+                                          (ELSE
+                                           <SET LL (.THING VALUE <1 .ACL>
+                                                    !.LL)>
+                                           <COND
+                                            (<AND <TYPE? .THING ATOM>
+                                                  <OR <==? .THING .DEST>
+                                                      <AND <WILL-DIE? .THING>
+                                                           <OR <NOT .LBL>
+                                                               <WILL-DIE?
+                                                                .THING
+                                                                <LAB-CODE-PNTR
+                                                                 <FIND-LABEL
+                                                                  .LBL>>>>>>>
+                                                  <DEAD!-MIMOC (.THING) T>)>
+                                           <SET ACL <REST .ACL 2>>)>
+                                    <COND (<EMPTY? <SET L <REST .L>>>
+                                           <RETURN>)>>)>
+                     <UPDATE-ACS>
+                     <GET-INTO-ACS !.LL>
+                     <FLUSH-ACS>
+                     <COND (<AND .LBL <==? .DIR ->>
+                            <LABEL-UPDATE-ACS .LBL <>>)>
+                     <COND (<TYPE? .JSNUM ATOM>
+                            <SMASH-AC O* .JSNUM VALUE>
+                            <OCEMIT XCT O* O*>)
+                           (ELSE
+                            <OCEMIT .JSATM O* O*>)>
+                     <COND (<AND .LBL <==? .DIR ->>
+                            <OCEMIT JUMP TP* <XJUMP .LBL>>
+                            <RESULT-JSYS .MUNGED-REG .DEST>)
+                           (<AND .LBL <==? .DIR +>>
+                            <OCEMIT JUMP TP* <XJUMP <SET XL1 <GENLBL "JS">>>>
+                            <RESULT-JSYS .MUNGED-REG .DEST>
+                            <LABEL-UPDATE-ACS .LBL <>>
+                            <OCEMIT JRST <XJUMP .LBL>>
+                            <LABEL .XL1>)
+                           (<NOT .DEST>
+                            <OCEMIT JUMP P* <XJUMP IOERR>>
+                            <COND (<==? .MUNGED-REG ALL>
+                                   <RESULT-JSYS ALL <>>)>)
+                           (ELSE
+                            <COND (<OR <==? .JSNUM ,SIBE!-JSYS>
+                                       <==? .JSNUM ,SOBE!-JSYS>>
+                                   <OCEMIT CAIA O* O*>
+                                   <OCEMIT JUMPN A2*
+                                           <XJUMP <SET XL1 <GENLBL "JS">>>>)
+                                  (ELSE
+                                   <OCEMIT JUMP TP*
+                                           <XJUMP <SET XL1 <GENLBL "JS">>>>)>
+                            <RESULT-JSYS .MUNGED-REG .DEST>
+                            <OCEMIT JRST <XJUMP <SET XL2 <GENLBL "JS">>>>
+                            <LABEL .XL1>
+                            <OCEMIT MOVEI A1* *400000*>
+                            <OCEMIT GETER O* O*>
+                            <OCEMIT HRRZ B2* A2*>
+                            <OCEMIT MOVSI B1* <TYPE-CODE FIX>>
+                            <OCEMIT MOVEI C1* 0>
+                            <PUSHJ CONS .DEST <> FALSE>
+                            <LABEL .XL2>)>)>)
+             (<ERROR CANT-COMPILE-SYSOP .L>)>>
+
+<DEFINE RESULT-JSYS (MUNGED-REG DEST)
+       <COND (<==? .MUNGED-REG ALL>
+              <SMASH-AC T* <CHTYPE <PARSE "AC-VECTOR"> XGLOC> VALUE>
+              <OCEMIT MOVE T* 1 '(T*)>
+              <MUNGED-AC T*>
+              <REPEAT ((I 0)) #DECL ((I) FIX)
+                      <COND (<G? <SET I <+ .I 1>> ,MAX-ACS> <RETURN>)>
+                      <OCEMIT MOVEM <NTH ,ACS <+ <* .I 2> 1>> <- .I 1> '(T*)>>
+              <COND (.DEST
+                     <OCEMIT DMOVE A1* @
+                             !<OBJ-VAL <CHTYPE <PARSE "AC-VECTOR"> XGLOC>>>
+                     <PUSHJ-VAL .DEST>)>)
+             (.DEST
+              <COND (<N==? .MUNGED-REG 2>
+                     <OCEMIT MOVE A2* .MUNGED-REG>)>
+              <OCEMIT MOVSI A1* <TYPE-CODE FIX>>
+              <PUSHJ-VAL .DEST>)>>
+
+<DEFINE SIN-SOUT (JS L "AUX" (DEST <>) ECHAR JFN) 
+       #DECL ((L) LIST)
+       <COND (<MEMQ = .L>
+              <COND (<==? <LENGTH .L> 7> <SET DEST <7 .L>> <SET ECHAR <5 .L>>)
+                    (<==? <LENGTH .L> 6> <SET DEST <6 .L>>)
+                    (ELSE <MIMOCERR BAD-SIN-SOUT-CALL!-ERRORS>)>)
+             (<==? <LENGTH .L> 5> <SET ECHAR <5 .L>>)
+             (<N==? <LENGTH .L> 4> <MIMOCERR BAD-SIN-SOUT-CALL!-ERRORS>)>
+       <UPDATE-ACS>
+       <COND (<AND <TYPE? <SET JFN <2 .L>> FIX> <L? .JFN ,MAX-IMMEDIATE>>
+              <MUNGED-AC A1*>
+              <OCEMIT MOVEI A1* .JFN>)
+             (ELSE <SMASH-AC A1* .JFN VALUE>)>
+       <SMASH-AC O* <3 .L> TYPE>
+       <SMASH-AC A2* <3 .L> VALUE>
+       <COND (<AND <TYPE? <SET JFN <4 .L>> FIX> <L? .JFN ,MAX-IMMEDIATE>>
+              <MUNGED-AC B1*>
+              <OCEMIT MOVEI B1* .JFN>)
+             (ELSE <SMASH-AC B1* .JFN VALUE>)>
+       <COND (<ASSIGNED? ECHAR>
+              <COND (<AND <==? <PRIMTYPE .ECHAR> WORD>
+                          <L? <SET ECHAR <CHTYPE .ECHAR FIX>> ,MAX-IMMEDIATE>>
+                     <MUNGED-AC B2*>
+                     <OCEMIT MOVEI B2* .ECHAR>)
+                    (ELSE <SMASH-AC B2* .ECHAR VALUE>)>)>
+       <PUSHJ .JS .DEST>>
+
+<SETG GJ-SHORT 262144>
+
+<SETG GJ-FNS 524288>
+
+<DEFINE GTJFN-S-DO (JS L "AUX" (FLAGS <2 .L>) (SOURCE <3 .L>) (DEST <5 .L>))
+       #DECL ((L) LIST)
+       <UPDATE-ACS>
+       <COND (<TYPE? .FLAGS FIX WORD>
+              <SET FLAGS <ORB .FLAGS ,GJ-SHORT <COND (<==? .JS GTJFN-S-J>
+                                                      ,GJ-FNS)(ELSE 0)>>>
+              <MUNGED-AC A1*>
+              <COND (<0? <CHTYPE <ANDB .FLAGS *777777*> FIX>>
+                     <OCEMIT MOVSI A1* <CHTYPE <LSH .FLAGS -18> FIX>>)
+                    (ELSE
+                     <OCEMIT MOVE A1* !<OBJ-VAL .FLAGS>>)>)
+             (ELSE
+              <SMASH-AC A1* .FLAGS VALUE>
+              <OCEMIT TLO A1* <CHTYPE <ORB <LSH ,GJ-SHORT -18>
+                                           <LSH <COND (<==? .JS GTJFN-S-J>
+                                                       ,GJ-FNS)(ELSE 0)>
+                                                -18>>
+                                      FIX>>)>
+       <COND (<==? .JS GTJFN-S-J>
+              <COND (<AND <TYPE? .SOURCE FIX WORD>
+                          <L? <CHTYPE .SOURCE FIX> *777777*>>
+                     <MUNGED-AC A2*>
+                     <OCEMIT MOVEI A2* .SOURCE>)
+                    (ELSE
+                     <SMASH-AC A2* .SOURCE VALUE>)>)
+             (ELSE
+              <SMASH-AC A2* <3 .L> VALUE>
+              <MUNGED-AC B1*>
+              <OCEMIT HRRZ B1* !<OBJ-TYP <3 .L>>>)>
+       <PUSHJ GTJFN .DEST>>
+
+<DEFINE GTJFN-L-DO (JS L "AUX" (LN <LENGTH .L>))
+       #DECL ((L) LIST (LN) FIX)
+       <UPDATE-ACS>
+       <COND (<N==? <NTH .L <- .LN 1>> =>
+              <MIMOCERR NO-PLACE-TO-RETURN!-ERRORS GTJFN>)>
+       <MAPF <>
+             <FUNCTION (ARG)
+                  <COND (<==? .ARG => <MAPLEAVE>)>
+                  <OCEMIT PUSH TP* !<OBJ-TYP .ARG>>
+                  <COND (,WINNING-VICTIM
+                         <SETG STACK-DEPTH <+ ,STACK-DEPTH 1>>)>
+                  <OCEMIT PUSH TP* !<OBJ-VAL .ARG>>
+                  <COND (,WINNING-VICTIM
+                         <SETG STACK-DEPTH <+ ,STACK-DEPTH 1>>)>>
+             <REST .L>>
+       <OCEMIT MOVEI O1* <- .LN 3>>
+       <PUSHJ GTJFNL <NTH .L .LN>>> 
+
+<DEFINE JFNS-DO (JS L "AUX" (DEST <>) ARG1 ARG2 ARG3 ARG4) 
+       #DECL ((L) LIST)
+       <COND (<MEMQ = .L>
+              <COND (<==? <LENGTH .L> 7> <SET DEST <7 .L>>)
+                    (ELSE <MIMOCERR BAD-JFNS-CALL!-ERRORS>)>)
+             (<N==? <LENGTH .L> 5> <MIMOCERR BAD-JFNS-CALL!-ERRORS>)>
+       <COND (<OR <==? <SET ARG1 <2 .L>> .DEST>
+                  <AND <TYPE? .ARG1 ATOM> <WILL-DIE? .ARG1>>>
+              <DEAD!-MIMOC (.ARG1) T>)>
+       <COND (<OR <==? <SET ARG2 <3 .L>> .DEST>
+                  <AND <TYPE? .ARG2 ATOM> <WILL-DIE? .ARG2>>>
+              <DEAD!-MIMOC (.ARG2) T>)>
+       <COND (<OR <==? <SET ARG3 <4 .L>> .DEST>
+                  <AND <TYPE? .ARG3 ATOM> <WILL-DIE? .ARG3>>>
+              <DEAD!-MIMOC (.ARG3) T>)>
+        <COND (<OR <==? <SET ARG4 <5 .L>> .DEST>
+                  <AND <TYPE? .ARG4 ATOM> <WILL-DIE? .ARG4>>>
+              <DEAD!-MIMOC (.ARG4) T>)>
+       <UPDATE-ACS>
+       <GET-INTO-ACS .ARG1 VALUE A1* .ARG2 VALUE A2* .ARG3 VALUE B1*
+                     .ARG4 VALUE B2*>
+       <OCEMIT HRRZ C1* !<OBJ-TYP .ARG1>>
+       <PUSHJ JFNS .DEST>>
+
+<DEFINE RFTAD-DO (JS L "AUX" (DEST <>) ARG1 ARG2 ARG3 TL)
+  #DECL ((L) LIST)
+  <COND (<SET TL <MEMQ = .L>>
+        <SET DEST <2 .TL>>)>
+  <UPDATE-ACS>
+  <MUNGED-AC A1*>
+  <SMASH-AC A1* <2 .L> VALUE>
+  <MUNGED-AC A2*>
+  <SMASH-AC A2* <3 .L> VALUE>
+  <MUNGED-AC B1*>
+  <SMASH-AC B1* <4 .L> VALUE>
+  <PUSHJ RFTAD .DEST>>
+
+<DEFINE ERSTR-DO (JS L "AUX" (DEST <>) ARG1 ARG2 ARG3) 
+       #DECL ((L) LIST)
+       <COND (<MEMQ = .L>
+              <COND (<==? <LENGTH .L> 6> <SET DEST <6 .L>>)
+                    (ELSE <MIMOCERR BAD-ERSTR-CALL!-ERRORS>)>)
+             (<N==? <LENGTH .L> 4> <MIMOCERR BAD-ERSTR-CALL!-ERRORS>)>
+       <COND (<OR <==? <SET ARG1 <2 .L>> .DEST>
+                  <AND <TYPE? .ARG1 ATOM> <WILL-DIE? .ARG1>>>
+              <DEAD!-MIMOC (.ARG1) T>)>
+       <COND (<OR <==? <SET ARG2 <3 .L>> .DEST>
+                  <AND <TYPE? .ARG2 ATOM> <WILL-DIE? .ARG2>>>
+              <DEAD!-MIMOC (.ARG2) T>)>
+       <COND (<OR <==? <SET ARG3 <4 .L>> .DEST>
+                  <AND <TYPE? .ARG3 ATOM> <WILL-DIE? .ARG3>>>
+              <DEAD!-MIMOC (.ARG3) T>)>
+       <UPDATE-ACS>
+       <GET-INTO-ACS .ARG1 VALUE A1* .ARG2 VALUE A2* .ARG3 VALUE B1*>
+       <PUSHJ ERSTR .DEST>>
+
+<DEFINE LOAD-ARG (V AC)
+       <COND (<AND <TYPE? .V FIX WORD>
+                   <L? <SET V <CHTYPE .V FIX>> *777777*>>
+              <MUNGED-AC .AC>
+              <OCEMIT MOVEI .AC .V>)
+             (ELSE
+              <SMASH-AC .AC .V VALUE>)>>
+
+<PUTPROP SIN-JSYS!-JSYS SPECIAL-JSYS-FUNCTION ,SIN-SOUT>
+
+<PUTPROP SOUT!-JSYS SPECIAL-JSYS-FUNCTION ,SIN-SOUT>
+
+<PUTPROP GTJFN-S-S!-JSYS SPECIAL-JSYS-FUNCTION ,GTJFN-S-DO>
+
+<PUTPROP GTJFN-S-J!-JSYS SPECIAL-JSYS-FUNCTION ,GTJFN-S-DO>
+
+<PUTPROP JFNS!-JSYS SPECIAL-JSYS-FUNCTION ,JFNS-DO>
+
+<PUTPROP ERSTR!-JSYS SPECIAL-JSYS-FUNCTION ,ERSTR-DO>
+
+<PUTPROP GTJFN-L!-JSYS SPECIAL-JSYS-FUNCTION ,GTJFN-L-DO>
+
+<COND (<GASSIGNED? RFTAD-DO>
+       <PUTPROP RFTAD!-JSYS SPECIAL-JSYS-FUNCTION ,RFTAD-DO>)>