    MODULE  F77_IOSYS ; 1983-09-02 12:34:56:  32016 ZASM 2.11
    EXPORTC F_JDAR
    EXPORTC F_JDAW
    EXPORTC F_JCLS
    EXPORTC F_JINI
    EXPORTC F_JEXF
    EXPORTC F_JSW2
    EXPORTC F_JSFR
    EXPORTC F_JOPN
    EXPORTC F_JSFW
    EXPORTC F_JSUR
    EXPORTC F_JSUW
    EXPORTC F_I990
    EXPORTC F_I991
    EXPORTC F_I992
    EXPORTC F_I993
    EXPORTC F_I988
    EXPORTC F_I996
    EXPORTC F_I989
    EXPORTC F_I997
    EXPORTC F_I998
    EXPORTC F_I999
    EXPORTC F_JBCK
    IMPORTC Arguments='Program'.'Arguments'
    IMPORTC FindOutput='IO'.'FindOutput'
    IMPORTC FindInput='IO'.'FindInput'
    IMPORTC F_INIT
    IMPORTC OSFile='BBC'.'OSFile'
    IMPORTC F_ISTP
    IMPORTC DeleteFile='File'.'DeleteFile'
    IMPORTC SReadByte='IO'.'SReadByte'
    IMPORTC WriteByte='IO'.'WriteByte'
    IMPORTC SWriteByte='IO'.'SWriteByte'
    IMPORTC CloseStream='IO'.'CloseStream'
    IMPORTC InputStream='IO'.'InputStream'
    IMPORTC OutputStream='IO'.'OutputStream'
    IMPORTC SetFileOffset='IO'.'SetFileOffset'
    IMPORTC GetFileOffset='IO'.'GetFileOffset'
    IMPORTC SetErrorStream='IO'.'SetErrorStream'
    IMPORTC SelectOutput='IO'.'SelectOutput'
    IMPORTC SelectInput='IO'.'SelectInput'
    IMPORTC F_HANDLER
    IMPORTC BlockWrite='IO'.'BlockWrite'
    IMPORTC SBlockWrite='IO'.'SBlockWrite'
    IMPORTC FindUpdate='IO'.'FindUpdate'
    IMPORTC SBlockRead='IO'.'SBlockRead'
    AREADEF PROG,[READ,PIC,SHARED,CODE],BYTE    ; size is   2038
    DEFSB   DATA+0
    AREADEF DATA,[PIC],DOUBLE  ; size is    280
    IMPORT  F__CMN
    AREADEF COMMNE='F__CMN',[PIC,COMMON],DOUBLE  ; size is    184
;
    AREA    PROG
    DCS     'F77_IOSYS   '
F_I999
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(FP),0(4(FP))
    ADDR    32(SP),4(4(FP))
    LPRD    FP,TOS
    RXP     4
F_I998
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(FP),R3
    LPRD    SP,4(R3)
    MOVD    0(R3),4(SP)
    LPRD    FP,TOS
    RXP     4
F_I997
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVMD   0(0(FP)),0(4(FP)),2
    LPRD    FP,TOS
    RXP     4
F_I996
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    ADDD    0(4(FP)),0(0(FP))
    LPRD    FP,TOS
    RXP     4
F_I992
F_I993
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R3
    ADDD    0(4(FP)),R3
    MOVD    0(8(FP)),-1(R3)
    MOVQD   4,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
F_I991
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R3
    ADDD    0(4(FP)),R3
    MOVMD   0(8(FP)),-1(R3),2
    ADDR    @8,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
F_I990
F_I989
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R3
    ADDD    0(4(FP)),R3
    MOVD    -1(R3),0(8(FP))
    MOVQD   4,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
F_I988
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R3
    ADDD    0(4(FP)),R3
    MOVMD   -1(R3),0(8(FP)),2
    ADDR    @8,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
F_JINI
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    ADDR    @256,TOS      ;get argument string
    ADDR    sag,TOS
    CXP     Arguments
    ADDR    sag,R3
    ADDD    R3,R0
    MOVD    R0,sae
I1  BSR     getarg
    BEQ     I9
    CMPB    ='-',0(R5)
    BNE     I1
    MOVQD   5,R7
    MOVW    1(R5),R6
    CMPW    =#X6000,R6    ;correct for lower case
    BHS     J1
    SUBW    =#X2000,R6
J1  CMPB    =#X60,R6
    BHS     I2
    SUBB    =#X20,R6
I2  CMPW    tab-2[R7:W],R6 ;look for known stream
    BEQ     I3
    ACBD    -1,R7,I2
    BR      I1
I3  BSR     getarg         ;find file name
    BEQ     I9
    SAVE    [R0,R3]
    MOVD    R7,TOS         ;save a few registers
    SUBD    R5,R3          ;length of file name
    MOVD    R3,TOS
    MOVD    R5,TOS         ;address of file name
    CMPQD   3,R7
    BGT     I4
    CXP     FindOutput
    BR      I5
I4  CXP     FindInput
I5  MOVD    TOS,R7
    CMPQD   0,R0
    BGT     I8             ;can't open file
    MOVD    R0,TOS         ;stream number
    CMPQD   5,R7
    BGT     I6
    CXP     SetErrorStream
    BR      I8
I6  CMPQD   3,R7
    BGT     I7
    CXP     SelectOutput
    BR      I8
I7  CXP     SelectInput
I8  RESTORE [R0,R3]
    BR      I1
I9  MOVD    0(0(FP)),R3
    MOVD    4(FP),R4
    ADDR    -16(R4),saf
pah MOVQD   -1,0(R4)
    ADDR    16(R4),R4
    ACBD    -1,R3,pah
    LPRD    FP,TOS
    RXP     4
F_JOPN
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R7
    MULD    =16,R7
    ADDD    saf,R7
    MOVQB   0,5(R7)
    MOVQD   0,12(R7)
    MOVQD   0,8(R7)
    MOVD    0(12(FP)),R4
    MOVD    0(16(FP)),R5
    MOVD    0(24(FP)),R6
    MOVQD   1,0(36(FP))
    CMPQD   2,R5
    BNE     pai
    MOVQD   -1,R6
    LSHD    =-1,R6
    BR      paj
pai CMPQD   1,R5
    BEQ     paj
    SBITB   =0,5(R7)
paj MOVD    R6,0(32(FP))
    CMPQD   3,0(8(FP))
    BEQ     pam
    CMPQD   1,0(8(FP))
    BNE     pak
    MOVD    0(0(FP)),R2
    BSR     pbn
    BFS     pbg
    BR      pal
pak MOVD    4(FP),R2
    BSR     pcc
pal BNE     paq
    CMPQD   3,R4
    BEQ     pap
    CMPQD   2,R5
    BEQ     pap
pam MOVD    R7,TOS
    CMPQD   1,R4
    BEQ     pan
    CXP     OutputStream
    BR      pao
pan CXP     InputStream
pao MOVD    TOS,R7
    MOVD    R0,R1
    BR      pbf
pap ADDR    @2002,R2
    BR      pbg
paq CMPQD   3,R4
    BEQ     pax
    MOVD    R7,TOS
    MOVD    R3,TOS
    MOVD    R2,TOS
    CMPQD   2,R4
    BEQ     par
    CXP     FindInput
    BR      pas
par CXP     FindOutput
pas MOVD    TOS,R7
    CMPQD   0,R0
    BLE     pat
    MOVD    R0,Eds
    ADDR    @2003,R2
    BR      pbg
pat CMPQD   2,0(16(FP))
    BNE     pau
    BSR     pav
pau MOVD    R0,R1
    BR      pbf
pav MOVD    R0,TOS
    MOVD    R7,TOS
    MOVD    R0,TOS
    ADDR    sac,TOS
    CXP     GetFileOffset
    MOVD    TOS,R7
    CMPQD   0,R0
    BLE     paw
    CXP     CloseStream
    MOVD    TOS,R0
    ADDR    @2002,R2
    BR      pbg
paw MOVD    TOS,R0
    RET     0
pax MOVD    0(20(FP)),R4
    CMPD    R4,R6
    BLS     pay
    ADDR    @2006,R2
    BR      pbg
pay MOVD    R4,0(32(FP))
    MOVD    R2,saa
    MOVD    R3,sac
    MOVD    R7,sad
    MOVD    R3,TOS
    MOVD    R2,TOS
    CXP     FindUpdate
    CMPQD   0,R0
    BLE     pba
    MOVD    sac,TOS
    MOVD    saa,TOS
    CXP     FindOutput
    CMPQD   0,R0
    BGT     paz
    MOVD    R0,TOS
    CXP     CloseStream
    MOVD    sac,TOS
    MOVD    saa,TOS
    CXP     FindUpdate
    CMPQD   0,R0
    BGT     paz
    MOVQB   1,saa
    BR      pbb
paz MOVQD   1,0(12(FP))
    MOVD    sac,TOS
    MOVD    saa,TOS
    CXP     FindInput
    CMPQD   0,R0
    BLE     pba
    MOVD    R0,Eds
    ADDR    @2004,R2
    BR      pbg
pba MOVQD   0,saa
pbb BSR     pav
    MOVD    R0,sac
    ADDR    Edt,TOS
    MOVQD   6,TOS
    MOVD    R0,TOS
    ADDR    saa,TOS
    CMPQB   0,saa
    BNE     pbd
    CXP     SBlockRead
    CMPQD   6,saa
    BNE     pbc
    CMPW    =16708,Edt
    BNE     pbc
    CMPD    0(32(FP)),Edu
    BLS     pbe
pbc MOVD    R0,Eds
    MOVD    sac,TOS
    CXP     CloseStream
    ADDR    @2007,R2
    BR      pbg
pbd MOVW    =16708,Edt
    MOVD    0(32(FP)),Edu
    CXP     SBlockWrite
    CMPQD   0,R0
    BLE     pbe
    MOVD    R0,Eds
    MOVD    sac,TOS
    CXP     CloseStream
    ADDR    @2005,R2
    BR      pbg
pbe MOVD    sac,R2
    MOVD    sad,R7
    MOVD    Edu,8(R7)
    MOVD    R2,R1
pbf MOVD    R1,0(R7)
    MOVQD   0,R2
pbg MOVD    R2,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
F_JCLS
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R7
    MULD    =16,R7
    ADDD    saf,R7
    MOVD    0(R7),R2
    CMPQD   -1,R2
    BEQ     pbi
    TBITB   =2,5(R7)
    BFC     pbh
    MOVB    =10,R1
    BSR     pcz
pbh MOVD    0(R7),R0
    MOVQD   -1,0(R7)
    CMPD    R0,Edq
    BEQ     pbi
    CMPD    R0,Edr
    BEQ     pbi
    MOVD    R0,TOS
    CXP     CloseStream
pbi CMPQD   2,0(4(FP))
    BNE     pbl
    CMPQD   1,0(12(FP))
    BNE     pbj
    MOVD    0(0(FP)),R2
    BSR     pbn
    BFS     pbm
    BR      pbk
pbj MOVD    8(FP),R2
    BSR     pcc
pbk MOVD    R3,TOS
    MOVD    R2,TOS
    CXP     DeleteFile
pbl MOVQD   0,R2
pbm MOVD    R2,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
pbn SAVE    [R4,R5,R6,R7]
    ADDR    sag,R3
    MOVD    sae,R0
    MOVQD   0,R7     ;count arguments
P2  BSR     getarg
    BEQ     P4
    CMPQB   0,R6
    BGE     P5
    CMPB    R6,R2
    BNE     P2
P3  MOVD    R5,R2
    SUBD    R5,R3
    CMPQD   0,R5
P4  RESTORE [R4,R5,R6,R7]
    RET     0
P5  CMPB    ='-',0(R5)
    BNE     P6
    BSR     getarg
    BEQ     P4
    BR      P2
P6  ADDQD   1,R7
    CMPD    R7,R2
    BEQ     P3
    BR      P2
getarg    ;to get next argument from string
    CMPD    R3,R0
    BEQ     G7
    CMPB    =' ',0(R3)
    BEQ     G0
    CMPB    =',',0(R3)
    BNE     G1
G0  ACBD    1,R3,getarg
G1  MOVD    R3,R5
    MOVQB   0,R1
    MOVQB   0,R6
G2  CMPD    R3,R0
    BEQ     G6
    MOVB    0(R3),R4
    CMPB    =' ',R4
    BEQ     G6
    CMPB    =',',R4
    BEQ     G6
    CMPB    ='=',R4
    BEQ     G5
    CMPQB   0,R6
    BNE     G3
    SUBB    ='0',R4
    BCS     G4
    CMPB    =9,R4
    BLO     G4
    CMPQB   7,R1
    BLO     G4
    MULB    =10,R1
    ADDB    R4,R1
G3  ACBD    1,R3,G2
G4  MOVQB   -1,R6
    BR      G3
G5  ADDR    1(R3),R5
    CMPQB   0,R6
    BNE     G8
    MOVB    R1,R6
    BR      G3
G6  CMPD    R3,R5
G7  BICPSRB =32
    RET     0
G8  BISPSRB =96      ;bad, set F & Z
    ADDR    @2009,R2 ;error code
    RET     0
F_JEXF
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(FP),R2
    BSR     pcc
    ADDR    Edt,TOS
    MOVD    R3,TOS
    ADDR    R2,TOS
    MOVQD   5,TOS
    CXP     OSFile
    CMPQD   1,R0
    SNED    R1
    MOVD    R1,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
pcc SAVE    [R4]
    MOVD    4(R2),R0
    MOVD    0(R2),R1
    MOVD    R1,R2
    ADDD    R0,R1
    ADDQD   -1,R1
    MOVB    =32,R4
    SKPSB   [B,W]
    MOVD    R0,R3
    CMPD    R0,R1
    RESTORE [R4]
    RET     0
F_JBCK
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    ADDR    @2000,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
F_JSFR
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R7
    MULD    =16,R7
    ADDD    saf,R7
    TBITB   =3,5(R7)
    BFS     pch
    MOVD    0(4(FP)),saa
    MOVQD   0,sac
    MOVD    R7,sad
pcd MOVD    0(R7),TOS
    CXP     SReadByte
    MOVD    sad,R7
    MOVD    sac,R3
    CMPQD   0,R0
    BGT     pce
    CMPB    =10,R0
    BEQ     pcf
    CMPB    =13,R0
    BEQ     pcf
    CMPB    =12,R0
    BEQ     pcd
    CMPD    R3,0(8(FP))
    BGE     pcd
    MOVB    R0,0(saa)[R3:B]
    ADDQD   1,sac
    BR      pcd
pce SBITB   =3,5(R7)
    CMPQD   0,R3
    BEQ     pch
pcf MOVD    R3,0(12(FP))
    MOVQD   0,R3
pcg MOVD    R3,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
pch SBITB   =3,5(R7)
    MOVQD   -1,R3
    BR      pcg
F_JSUR
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R7
    MULD    =16,R7
    ADDD    saf,R7
    CMPQD   0,0(8(FP))
    BGT     pcj
    CMPQD   0,12(R7)
    BEQ     pci
    MOVD    R7,TOS
    MOVD    8(R7),TOS
    MOVD    0(R7),TOS
    CXP     SetFileOffset
    MOVD    TOS,R7
pci MOVD    R7,TOS
    ADDR    saa,TOS
    MOVD    =6,TOS
    MOVD    0(R7),TOS
    ADDR    sac,TOS
    CXP     SBlockRead
    MOVD    TOS,R7
    CMPQD   0,sac
    BEQ     pcn
    CMPQD   0,R0
    BGT     pco
    CMPW    =18005,saa
    BNE     pco
    MOVD    sab,R3
    MOVD    R3,0(12(FP))
    MOVD    R3,12(R7)
    ADDQD   6,8(R7)
    ADDD    R3,8(R7)
pcj MOVD    4(4(FP)),R4
    CMPD    R4,12(R7)
    BLE     pck
    MOVD    12(R7),R4
pck CMPQD   0,R4
    BEQ     pcl
    SUBD    R4,12(R7)
    MOVD    0(4(FP)),R3
    MOVD    R3,TOS
    MOVD    R4,TOS
    MOVD    0(R7),TOS
    ADDR    sac,TOS
    CXP     SBlockRead
    CMPQD   0,R0
    BGT     pco
pcl MOVQD   0,R3
pcm MOVD    R3,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
pcn MOVQD   -1,R3
    BR      pcm
pco MOVD    R0,Eds
    ADDR    @2001,R3
    BR      pcm
F_JSFW
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R7
    MULD    =16,R7
    ADDD    saf,R7
    MOVD    0(4(FP)),R3
    MOVD    0(12(FP)),R0
    ADDR    -1(R3)[R0:B],R1
    MOVB    =32,R4
    SKPSB   [B,W]
    MOVD    R3,saa
    MOVD    R0,sac
    CMPQD   0,R0
    BGE     pcp
    TBITB   =0,5(R7)
    BFS     pcq
pcp TBITB   =1,5(R7)
    BFC     pcu
    MOVB    =10,R1
    BSR     pcz
    BR      pcu
pcq MOVB    0(R3),R5
    ADDQD   1,saa
    ADDQD   -1,sac
    MOVB    R5,sad
    TBITB   =1,5(R7)
    BFC     pcs
    CMPB    =42,R5
    BEQ     pcs
    MOVB    =13,R1
    CMPB    =43,R5
    BEQ     pcr
    CMPB    =49,R5
    BEQ     pcr
    MOVB    =10,R1
pcr BSR     pcz
pcs MOVB    sad,R5
    CMPB    =48,R5
    BNE     pct
    MOVB    =10,R1
    BSR     pcz
pct CMPB    =49,R5
    BNE     pcu
    MOVB    =12,R1
    BSR     pcz
pcu SBITB   =1,5(R7)
    MOVD    sac,R4
    CMPQD   0,R4
    BLT     pcv
    CBITB   =2,5(R7)
    BR      pcw
pcv SBITB   =2,5(R7)
    MOVD    saa,TOS
    MOVD    R4,TOS
    MOVD    0(R7),TOS
    ADDR    sad,TOS
    CXP     SBlockWrite
    CMPQD   0,R0
    BGT     pcy
pcw MOVQD   0,R3
pcx MOVD    R3,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
pcy MOVD    R0,Eds
    ADDR    @2010,R3
    BR      pcx
pcz MOVD    R7,TOS
    MOVZBD  R1,TOS
    MOVD    0(R7),TOS
    CXP     SWriteByte
    MOVD    TOS,R7
    RET     0
F_JSUW
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R7
    MULD    =16,R7
    ADDD    saf,R7
    MOVD    12(R7),Edt
    ADDD    0(12(FP)),12(R7)
    CMPQD   0,0(8(FP))
    BGT     pdb
    CMPQD   0,Edt
    BEQ     pda
    MOVD    R7,TOS
    MOVD    8(R7),TOS
    MOVD    0(R7),TOS
    CXP     SetFileOffset
    MOVD    TOS,R7
pda ADDQD   6,8(R7)
    ADDD    12(R7),8(R7)
    MOVW    =18005,saa
    MOVD    12(R7),sab
    MOVQD   0,12(R7)
    BR      pdc
pdb CMPQD   0,Edt
    BNE     pdd
pdc MOVD    R7,TOS
    ADDR    saa,TOS
    MOVD    =6,TOS
    MOVD    0(R7),TOS
    ADDR    sac,TOS
    CXP     SBlockWrite
    MOVD    TOS,R7
    CMPQD   0,R0
    BGT     pcy
    CMPQD   0,Edt
    BEQ     pdd
    MOVD    8(R7),R3
    SUBD    0(12(FP)),R3
    MOVD    R7,TOS
    MOVD    R3,TOS
    MOVD    0(R7),TOS
    CXP     SetFileOffset
    MOVD    TOS,R7
pdd MOVD    0(4(FP)),R3
    MOVD    0(12(FP)),R4
    CMPQD   0,R4
    BEQ     pde
    MOVD    R3,TOS
    MOVD    R4,TOS
    MOVD    0(R7),TOS
    ADDR    sac,TOS
    CXP     SBlockWrite
    CMPQD   0,R0
    BGT     pcy
pde BR      pcw
F_JDAR
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R7
    MULD    =16,R7
    ADDD    saf,R7
    CMPQD   0,0(8(FP))
    BGT     pdf
    MOVD    0(8(FP)),0(12(FP))
    MOVD    0(16(FP)),R3
    ADDQD   -1,R3
    MULD    8(R7),R3
    ADDQD   6,R3
    MOVD    R7,TOS
    MOVD    R3,TOS
    MOVD    0(R7),TOS
    CXP     SetFileOffset
    MOVD    TOS,R7
pdf MOVD    0(4(FP)),R3
    ABSD    0(8(FP)),R4
    CMPD    R4,4(4(FP))
    BLE     pdg
    MOVD    4(4(FP)),R4
pdg MOVD    R3,TOS
    MOVD    R4,TOS
    MOVD    0(R7),TOS
    ADDR    sac,TOS
    CXP     SBlockRead
    CMPQD   0,R0
    BGT     pdm
    BR      pdk
F_JDAW
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),R7
    MULD    =16,R7
    ADDD    saf,R7
    CMPQD   0,12(R7)
    BNE     pdh
    MOVD    0(16(FP)),R3
    ADDQD   -1,R3
    MULD    8(R7),R3
    ADDQD   6,R3
    MOVD    R7,TOS
    MOVD    R3,TOS
    MOVD    0(R7),TOS
    CXP     SetFileOffset
    MOVD    TOS,R7
pdh MOVD    0(4(FP)),R3
    MOVD    0(12(FP)),R4
    CMPQB   0,0(20(FP))
    BEQ     pdj
    MOVD    R4,R5
    MOVD    8(R7),R4
pdi CMPD    R5,R4
    BGE     pdj
    MOVB    =32,R3[R5:B]
    ACBD    1,R5,pdi
pdj ADDD    R4,12(R7)
    MOVD    R7,TOS
    MOVD    R3,TOS
    MOVD    R4,TOS
    MOVD    0(R7),TOS
    ADDR    sac,TOS
    CXP     SBlockWrite
    MOVD    TOS,R7
    CMPQD   0,R0
    BGT     pdm
    CMPQD   0,0(8(FP))
    BGT     pdk
    CMPD    12(R7),8(R7)
    MOVQD   0,12(R7)
    BGE     pdk
    MOVD    0(16(FP)),R3
    MULD    8(R7),R3
    ADDQD   6,R3
    ADDQD   -1,R3
    MOVD    R7,TOS
    MOVD    R3,TOS
    MOVD    0(R7),TOS
    CXP     SetFileOffset
    MOVD    TOS,R7
    MOVD    R7,TOS
    MOVZBD  R1,TOS
    MOVD    0(R7),TOS
    CXP     SWriteByte
    MOVD    TOS,R7
    CMPQD   0,R0
    BGT     pdm
pdk MOVQD   0,R3
pdl MOVD    R3,saa
    ADDR    saa,R0
    LPRD    FP,TOS
    RXP     4
pdm MOVD    R0,Eds
    ADDR    @2005,R3
    BR      pdl
F_JSW2
    SPRD    FP,TOS
    LPRD    FP,12(SP)
    MOVD    0(0(FP)),TOS
    MOVD    4(0(FP)),TOS
    ADDR    saa,TOS
    CXP     BlockWrite
    ADDR    @10,TOS
    CXP     WriteByte
    LPRD    FP,TOS
    RXP     4
    HANDLER
    CMPQD   0,8(SP)
    BNE     pdn
    MOVQD   0,TOS
    CXP     F_INIT
    BR      pdo
pdn CMPQD   1,8(SP)
    BNE     pdo
    CMPQD   0,Edp
    BGT     pdo
    MOVQD   0,TOS
    CXP     F_ISTP
pdo CXP     F_HANDLER
tab DCS     'INFROUTOER'
;
    AREA    DATA
saa ALLOCB  2
sab ALLOCB  6
sac ALLOCD  1
sad ALLOCD  1
sae ALLOCD  1
saf ALLOCD  1
sag ALLOCD  64
;
    AREA    COMMNE
Edp ALLOCD  3
Edq ALLOCD  1
Edr ALLOCD  1
Eds ALLOCD  1
Edt ALLOCB  2
Edu ALLOCB  158
    END
