home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / ACE-R11-SCR1.ARC / ACECALL.S < prev    next >
Encoding:
Text File  |  2019-04-13  |  12.9 KB  |  956 lines

  1. ;*** DIROPEN( (ZP)=DEVICE╬AME ) : .┴=FCB
  2.  
  3. ACE─IR╧PEN = *
  4.    LDA #TRUE
  5.    STA CHECK╙TAT
  6.    JSR GET─ISK─EVICE
  7.    BCC +
  8.    RTS
  9. +  STA OPEN─EVICE
  10.    STY OPEN╬AME╙CAN
  11.    JSR GET╠F┴ND╞CB
  12.    BCC +
  13.    RTS
  14. +  STA LFTABLE,X
  15.    LDA OPEN─EVICE
  16.    STA DEVTABLE,X
  17.    LDA #0
  18.    STA EOFTABLE,X
  19.    LDA #0
  20.    STA SATABLE,X
  21.    STX OPEN╞CB
  22.    LDX OPEN─EVICE
  23.    LDA CONFIG┬UF+0,X
  24.    CMP #4
  25.    BNE +
  26.    JMP RD─IR╧PEN
  27. +  LDA #"$"
  28.    STA STRING┬UFFER+0
  29.    LDA #"0"
  30.    STA STRING┬UFFER+1
  31.    LDA #0
  32.    STA STRING┬UFFER+2
  33.    LDX #2
  34.    JSR DIR╧PEN╙ET╬AME
  35.    JSR OPEN╟OT╬AME
  36.    BCC +
  37.    RTS
  38. +  LDX OPEN╞CB
  39.    LDA LFTABLE,X
  40.    TAX
  41.    JSR KERNEL├HKIN
  42.    JSR KERNEL├HRIN
  43.    JSR KERNEL├HRIN
  44.    JSR KERNEL├LRCHN
  45.    LDA OPEN╞CB
  46.    CLC
  47.    RTS
  48.  
  49.    DIR╧PEN╙ET╬AME = *
  50.    LDY OPEN─EVICE
  51.    LDA CONFIG┬UF+3,Y
  52.    BMI DIR╬AME─ATE
  53.    LDY OPEN╬AME╙CAN
  54.    LDA (ZP),Y
  55.    BNE +
  56.    RTS
  57. +  LDX #1
  58.  
  59.    DIR╬AME╬ORMAL = *
  60. -  LDA (ZP),Y
  61.    STA STRING┬UFFER,X
  62.    BEQ +
  63.    INY
  64.    INX
  65.    BNE -
  66. +  DEX
  67.    LDA #":"
  68.    CMP STRING┬UFFER,X
  69.    BEQ +
  70.    INX
  71.    STA STRING┬UFFER,X
  72. +  INX
  73.    LDA #"*"
  74.    STA STRING┬UFFER,X
  75.    INX
  76.    LDA #0
  77.    STA STRING┬UFFER,X
  78.    RTS
  79.  
  80.    DIR╬AME─ATE = *
  81.    LDA #"="
  82.    STA STRING┬UFFER+1
  83.    LDA #"T"
  84.    STA STRING┬UFFER+2
  85.    LDX #3
  86.    LDY OPEN╬AME╙CAN
  87.    JSR DIR╬AME╬ORMAL
  88.    LDA #"="
  89.    STA STRING┬UFFER,X
  90.    INX
  91.    LDA #"L"
  92.    STA STRING┬UFFER,X
  93.    INX
  94.    LDA #0
  95.    STA STRING┬UFFER,X
  96.    RTS
  97.  
  98. ACE─IR├LOSE = *
  99.    TAX
  100.    LDA PIDTABLE,X
  101.    CMP ACE╨ROCESS╔─
  102.    BEQ +
  103.    CLC
  104.    RTS
  105. +  LDY DEVTABLE,X
  106.    STX CLOSE╞D
  107.    LDA CONFIG┬UF+0,Y
  108.    CMP #4
  109.    BEQ +
  110.    LDA CLOSE╞D
  111.    JMP ACE├LOSE
  112. +  JMP RD─IR├LOSE
  113.  
  114. ;*** DIRREAD( .╪=FCB ) : .┌=EOF, ACE─IRENT┬UFFER=DATA
  115.  
  116. DIR┬LOCKS = SYSWORK+0
  117.  
  118. ACE─IR╥EAD = *
  119.    LDY DEVTABLE,X
  120.    LDA CONFIG┬UF+0,Y
  121.    CMP #4
  122.    BNE +
  123.    JMP RD─IR╥EAD
  124. +  LDA LFTABLE,X
  125.    TAX
  126.    JSR KERNEL├HKIN
  127.    BCC +
  128.    LDA #0
  129.    RTS
  130.    ;** READ THE LINK
  131. +  JSR KERNEL├HRIN
  132.    STA SYSWORK+4
  133.    JSR KERNEL╥EADST
  134.    AND #$40
  135.    BNE DIRREAD┼OF┼XIT
  136.    JSR KERNEL├HRIN
  137.    ORA SYSWORK+4
  138.    BNE +
  139.  
  140.    DIRREAD┼OF┼XIT = *
  141.    JSR KERNEL├LRCHN
  142.    LDX #0
  143.    RTS
  144.    DIRREAD┼RR┼XIT = *
  145.    STA ERRNO
  146.    JSR KERNEL├LRCHN
  147.    LDX #0
  148.    SEC
  149.    RTS
  150.  
  151.    ;** READ THE BLOCK COUNT
  152. +  JSR KERNEL├HRIN
  153.    STA DIR┬LOCKS
  154.    STA ACE─IRENT┬YTES+1
  155.    JSR KERNEL├HRIN
  156.    STA DIR┬LOCKS+1
  157.    STA ACE─IRENT┬YTES+2
  158.    ASL DIR┬LOCKS
  159.    ROL DIR┬LOCKS+1
  160.    LDA #0
  161.    ROL
  162.    STA DIR┬LOCKS+2
  163.    SEC
  164.    LDA #0
  165.    SBC DIR┬LOCKS
  166.    STA ACE─IRENT┬YTES+0
  167.    LDA ACE─IRENT┬YTES+1
  168.    SBC DIR┬LOCKS+1
  169.    STA ACE─IRENT┬YTES+1
  170.    LDA ACE─IRENT┬YTES+2
  171.    SBC DIR┬LOCKS+2
  172.    STA ACE─IRENT┬YTES+2
  173.    ;** READ THE FILENAME
  174.    LDA #0
  175.    STA ACE─IRENT╬AME
  176.    STA ACE─IRENT╬AME╠EN
  177. -  JSR KERNEL├HRIN
  178.    BCS DIRREAD┼RR┼XIT
  179.    BIT ST
  180.    BVS DIRREAD┼RR┼XIT
  181.    CMP #" "
  182.    BEQ -
  183.    CMP #18
  184.    BEQ -
  185.    CMP #$22
  186.    BNE DIRREAD┼XIT
  187.    LDX #0
  188. -  JSR KERNEL├HRIN
  189.    BCS DIRREAD┼RR┼XIT
  190.    BIT ST
  191.    BVS DIRREAD┼RR┼XIT
  192.    CMP #$22
  193.    BEQ +
  194.    STA ACE─IRENT╬AME,X
  195.    INX
  196.    BNE -
  197. +  LDA #0
  198.    STA ACE─IRENT╬AME,X
  199.    STX ACE─IRENT╬AME╠EN
  200. -  JSR KERNEL├HRIN
  201.    CMP #" "
  202.    BEQ -
  203.    ;** READ TYPE AND FLAGS
  204.    LDX #%01100000
  205.    STX ACE─IRENT╞LAGS
  206.    LDX #%10000000
  207.    STX ACE─IRENT╒SAGE
  208.    CMP #"*"
  209.    BNE +
  210.    LDA ACE─IRENT╞LAGS
  211.    ORA #%00001000
  212.    STA ACE─IRENT╞LAGS
  213.    JSR KERNEL├HRIN
  214. +  LDX #3
  215.    LDY #0
  216.    JMP DIR╘YPE╞IRST
  217. -  JSR KERNEL├HRIN
  218.    DIR╘YPE╞IRST = *
  219.    STA ACE─IRENT╘YPE,Y
  220.    INY
  221.    DEX
  222.    BNE -
  223.    LDA #0
  224.    STA ACE─IRENT╘YPE+3
  225.    LDA ACE─IRENT╘YPE
  226.    CMP #"D"
  227.    BNE +
  228.    LDA ACE─IRENT╞LAGS
  229.    ORA #%10010000
  230.    STA ACE─IRENT╞LAGS
  231.    JMP DIRREAD┼XIT
  232. +  CMP #"P"
  233.    BNE DIRREAD┼XIT
  234.    LDA ACE─IRENT╞LAGS
  235.    ORA #%00010000
  236.    STA ACE─IRENT╞LAGS
  237.    JMP DIRREAD┼XIT
  238.  
  239.    DIRREAD┼XIT = *
  240.    JSR KERNEL├HRIN
  241.    CMP #0
  242.    BNE +
  243.    JMP DIRREAD╥EAL┼XIT
  244. +  CMP #"<"
  245.    BNE +
  246.    LDA ACE─IRENT╞LAGS
  247.    AND #%11011111
  248.    STA ACE─IRENT╞LAGS
  249. +  LDX #7
  250.    LDA #0
  251. -  STA ACE─IRENT─ATE,X
  252.    DEX
  253.    BPL -
  254. -  JSR KERNEL├HRIN
  255.    CMP #0
  256.    BEQ DIRREAD╥EAL┼XIT
  257.    CMP #"0"
  258.    BCC -
  259.    CMP #"9"+1
  260.    BCS -
  261.  
  262.    DIRREAD─ATE = *
  263.    JSR DIR╟ET╬UM╟OT
  264.    BCS DIRREAD╥EAL┼XIT
  265.    STA ACE─IRENT─ATE+2
  266.    JSR DIR╟ET╬UM
  267.    BCS DIRREAD╥EAL┼XIT
  268.    STA ACE─IRENT─ATE+3
  269.    JSR DIR╟ET╬UM
  270.    BCS DIRREAD╥EAL┼XIT
  271.    STA ACE─IRENT─ATE+1
  272.    LDA CONFIG┬UF+$86
  273.    STA ACE─IRENT─ATE+0
  274.    JSR DIR╟ET╬UM
  275.    BCS DIRREAD╥EAL┼XIT
  276.    STA ACE─IRENT─ATE+4
  277.    JSR DIR╟ET╬UM
  278.    BCS DIRREAD╥EAL┼XIT
  279.    STA ACE─IRENT─ATE+5
  280.    JSR KERNEL├HRIN
  281.    AND #$FF
  282.    BEQ DIRREAD╥EAL┼XIT
  283.    JSR KERNEL├HRIN
  284.    AND #$FF
  285.    BEQ DIRREAD╥EAL┼XIT
  286.    CMP #"A"
  287.    BNE DIRREAD╨═
  288.  
  289.    DIRREAD┴═ = *
  290.    LDA ACE─IRENT─ATE+4
  291.    CMP #$12
  292.    BNE +
  293.    LDA #$00
  294.    STA ACE─IRENT─ATE+4
  295.    JMP +
  296.  
  297.    DIRREAD╨═ = *
  298.    LDA ACE─IRENT─ATE+4
  299.    CMP #$12
  300.    BEQ +
  301.    CLC
  302.    SEI
  303.    SED
  304.    ADC #$12
  305.    CLD
  306.    CLI
  307.    STA ACE─IRENT─ATE+4
  308.  
  309. /  JSR KERNEL├HRIN
  310.    CMP #0
  311.    BNE -
  312.  
  313.    DIRREAD╥EAL┼XIT = *
  314.    JSR KERNEL├LRCHN
  315.    LDX #$FF
  316.    CLC
  317.    RTS
  318.  
  319.    DIR╟ET╬UM = *
  320. -  JSR KERNEL├HRIN
  321.    DIR╟ET╬UM╟OT = *
  322.    CMP #0
  323.    BEQ +
  324.    CMP #"0"
  325.    BCC -
  326.    CMP #"9"+1
  327.    BCS -
  328.    ASL
  329.    ASL
  330.    ASL
  331.    ASL
  332.    STA SYSWORK+6
  333.    JSR KERNEL├HRIN
  334.    CMP #0
  335.    BEQ +
  336.    AND #$0F
  337.    ORA SYSWORK+6
  338.    CLC
  339. +  RTS
  340.  
  341. ;*** FDSWAP( .╪=╞CB1, .┘=╞CB2 )
  342.  
  343. ACE╞CB╙WAP = *
  344.    LDA LFTABLE,X
  345.    PHA
  346.    LDA LFTABLE,Y
  347.    STA LFTABLE,X
  348.    PLA
  349.    STA LFTABLE,Y
  350.    LDA DEVTABLE,X
  351.    PHA
  352.    LDA DEVTABLE,Y
  353.    STA DEVTABLE,X
  354.    PLA
  355.    STA DEVTABLE,Y
  356.    LDA SATABLE,X
  357.    PHA
  358.    LDA SATABLE,Y
  359.    STA SATABLE,X
  360.    PLA
  361.    STA SATABLE,Y
  362.    LDA EOFTABLE,X
  363.    PHA
  364.    LDA EOFTABLE,Y
  365.    STA EOFTABLE,X
  366.    PLA
  367.    STA EOFTABLE,Y
  368.    LDA PIDTABLE,X
  369.    PHA
  370.    LDA PIDTABLE,Y
  371.    STA PIDTABLE,X
  372.    PLA
  373.    STA PIDTABLE,Y
  374.    TXA
  375.    ASL
  376.    ASL
  377.    ASL
  378.    ASL
  379.    TAX
  380.    TYA
  381.    ASL
  382.    ASL
  383.    ASL
  384.    ASL
  385.    TAY
  386.    LDA #16
  387.    STA SYSWORK+15
  388. -  LDA FCB╘ABLE1,X
  389.    PHA
  390.    LDA FCB╘ABLE1,Y
  391.    STA FCB╘ABLE1,X
  392.    PLA
  393.    STA FCB╘ABLE1,Y
  394.    INX
  395.    INY
  396.    DEC SYSWORK+15
  397.    BNE -
  398.    CLC
  399.    RTS
  400.  
  401. ;*** BLOAD( (ZP)=╬AME, .┴┘=┴DDRESS, (ZW)=╠IMIT+1 ) : .┴┘=┼ND+1
  402.  
  403. BLOAD┴DDRESS = SYSWORK
  404. BLOAD╞ILENAME = SYSWORK+2
  405. BLOAD─EVICE = SYSWORK+4
  406.  
  407. ACE┬LOAD = *
  408.    STA BLOAD┴DDRESS+0
  409.    STY BLOAD┴DDRESS+1
  410.    JSR GET─EVICE
  411.    STA BLOAD─EVICE
  412.    TAX
  413.    CLC
  414.    TYA
  415.    ADC ZP+0
  416.    STA BLOAD╞ILENAME+0
  417.    LDA ZP+1
  418.    ADC #0
  419.    STA BLOAD╞ILENAME+1
  420.    LDA CONFIG┬UF+0,X
  421.    CMP #4
  422.    BNE +
  423.    JMP RD┬LOAD
  424. +  CMP #1
  425.    BEQ +
  426.    LDA #ACE┼RR╔LLEGAL─EVICE
  427.    STA ERRNO
  428.    SEC
  429.    RTS
  430. +  LDA CONFIG┬UF+1,X
  431.    TAX
  432.    LDA #0
  433.    LDY #0
  434.    JSR KERNEL╙ETLFS
  435.    LDY #0
  436. -  LDA (BLOAD╞ILENAME),Y
  437.    BEQ +
  438.    INY
  439.    BNE -
  440. +  TYA
  441.    LDX BLOAD╞ILENAME+0
  442.    LDY BLOAD╞ILENAME+1
  443.    JSR KERNEL╙ETNAM
  444.    LDA #0
  445.    LDX BLOAD┴DDRESS+0
  446.    LDY BLOAD┴DDRESS+1
  447.    JSR KERNEL╠OAD
  448.    STX BLOAD┴DDRESS+0
  449.    STY BLOAD┴DDRESS+1
  450.    BCC BLOAD╧K
  451.    PHA
  452.    CMP #ACE┼RR─EVICE╬OT╨RESENT
  453.    BEQ +
  454.    LDX BLOAD─EVICE
  455.    LDA CONFIG┬UF+0,X
  456.    CMP #1
  457.    BNE +
  458.    TXA
  459.    JSR OPEN─ISK╙TATUS
  460. +  PLA
  461. -  STA ERRNO
  462.    LDA #0
  463.    LDX #0
  464.    LDY #0
  465.    SEC
  466.    RTS
  467.  
  468.    BLOAD╧K = *
  469.    LDX BLOAD─EVICE
  470.    LDA CONFIG┬UF+0,X
  471.    CMP #1
  472.    BNE +
  473.    TXA
  474.    JSR OPEN─ISK╙TATUS
  475.    BCS -
  476. +  LDA BLOAD┴DDRESS+0
  477.    LDY BLOAD┴DDRESS+1
  478.    RTS
  479.  
  480. ;*** REMOVE( (ZP)=╬AME )
  481.  
  482. REMOVE─EVICE = SYSWORK
  483.  
  484. ACE╥EMOVE = *
  485.    JSR GET─ISK─EVICE
  486.    BCC +
  487.    RTS
  488. +  STA REMOVE─EVICE
  489.    CPX #4
  490.    BNE +
  491.    JMP RD╥EMOVE
  492. +  LDA #"S"
  493.    STA STRING┬UFFER
  494.    LDA #":"
  495.    STA STRING┬UFFER+1
  496.    LDX #1
  497.    LDA (ZP),Y
  498.    CMP #"/"
  499.    BEQ +
  500.    LDX #2
  501. /  LDA (ZP),Y
  502.    STA STRING┬UFFER,X
  503.    BEQ +
  504.    INY
  505.    INX
  506.    BNE -
  507. +  LDA #0
  508.    STA STRING┬UFFER,X
  509.    LDA REMOVE─EVICE
  510.    JSR CMDCH╧PEN
  511.    BCS ++
  512.    JSR CMDCH╙END
  513.    BCS +
  514.    JSR CHECK─ISK╙TATUS
  515. +  PHP
  516.    JSR CMDCH├LOSE
  517.    PLP
  518. +  RTS
  519.  
  520. ;*** CDHOME( )
  521.  
  522. ACE├D╚OME = *
  523.    LDA #<CONFIG┬UF+$90
  524.    LDY #>CONFIG┬UF+$90
  525.    STA ZP+0
  526.    STY ZP+1
  527.    ;** FALL THROUGH
  528.  
  529. ;*** CHDIR( (ZP)=─IR╬AME )
  530.  
  531. CHDIR─EVICE = SYSWORK+0
  532. CHDIR╙CAN   = SYSWORK+1
  533. CHDIR╬AME╙CAN = SYSWORK+2
  534. CHDIR├HAR╙AVE = SYSWORK+3
  535.  
  536. ACE├H─IR = *
  537.    JSR GET─ISK─EVICE
  538.    BCC +
  539.    RTS
  540. +  STY CHDIR╬AME╙CAN
  541.    STA CHDIR─EVICE
  542.    CPX #4
  543.    BNE +
  544.    JMP RD├H─IR
  545. +  LDA #"C"
  546.    STA STRING┬UFFER+0
  547.    LDA #"D"
  548.    STA STRING┬UFFER+1
  549.    LDX #2
  550. -  LDA (ZP),Y
  551.    STA STRING┬UFFER,X
  552.    BEQ +
  553.    CMP #":"
  554.    BEQ +
  555.    INY
  556.    INX
  557.    BNE -
  558. +  LDA #0
  559.    STA STRING┬UFFER,X
  560.    CPX #2
  561.    BEQ CHDIR╙ET╬AME
  562.    LDA #"/"
  563.    CMP STRING┬UFFER-1,X
  564.    BEQ +
  565.    STA STRING┬UFFER,X
  566.    INX
  567.    LDA #0
  568.    STA STRING┬UFFER,X
  569. +  LDA CHDIR─EVICE
  570.    JSR CMDCH╧PEN
  571.    BCC +
  572.    RTS
  573. +  JSR CMDCH╙END
  574.    BCS CHDIR┴BORT
  575.    JSR CHECK─ISK╙TATUS
  576.    BCS CHDIR┴BORT
  577.  
  578.    LDA #"P"
  579.    STA STRING┬UFFER+1
  580.    LDX #0
  581. -  LDA STRING┬UFFER+2,X
  582.    CMP #"0"
  583.    BCC +
  584.    CMP #"9"+1
  585.    BCS +
  586.    INX
  587.    BNE -
  588. +  CPX #0
  589.    BEQ +
  590.    CMP #"/"
  591.    BNE +
  592.    STA CHDIR├HAR╙AVE
  593.    STX CHDIR╬AME╙CAN
  594.    LDA #0
  595.    STA STRING┬UFFER+2,X
  596.    JSR CMDCH╙END
  597.    BCS CHDIR┴BORT
  598.    LDX CHDIR╬AME╙CAN
  599.    LDA CHDIR├HAR╙AVE
  600.    STA STRING┬UFFER+2,X
  601.    JSR CHECK─ISK╙TATUS
  602.    BCS CHDIR┴BORT
  603. +  JSR CMDCH├LOSE
  604.    LDA CHDIR─EVICE
  605.    STA ACE├URRENT─EVICE
  606.  
  607.    CHDIR╙ET╬AME = *
  608.    LDA CHDIR─EVICE
  609.    STA ACE├URRENT─EVICE
  610.    LSR
  611.    LSR
  612.    ORA #$40
  613.    STA ACE├UR─IR╬AME+0
  614.    LDA #":"
  615.    STA ACE├UR─IR╬AME+1
  616.    LDX #0
  617. -  LDA STRING┬UFFER+2,X
  618.    STA ACE├UR─IR╬AME+2,X
  619.    BEQ +
  620.    INX
  621.    BNE -
  622. +  LDA ACE├UR─IR╬AME+1,X
  623.    CMP #":"
  624.    BEQ +
  625.    LDA #":"
  626.    STA ACE├UR─IR╬AME+2,X
  627.    INX
  628. +  LDA #0
  629.    STA ACE├UR─IR╬AME+2,X
  630.    CLC
  631.    RTS
  632.  
  633.    CHDIR┴BORT = *
  634.    JSR CMDCH├LOSE
  635.    SEC
  636.    RTS
  637.  
  638. ;*** DEVINFO( .╪=╞CB ) : .┴=─EV╘YPE(0=CON,1=CHAR,2=DISK), .╪=├OLS, .┘=╥OWS
  639.  
  640. ACE─EV╔NFO = *
  641.    LDA DEVTABLE,X
  642.    TAX
  643.    LDA CONFIG┬UF+0,X
  644.    CMP #2
  645.    BNE +
  646.    JSR WINSIZE
  647.    TAY
  648.    LDA #0
  649.    RTS
  650.  
  651. +  LDX #80
  652.    LDY #66
  653.    CMP #1
  654.    BEQ +
  655.    CMP #4
  656.    BEQ +
  657.    LDA #1
  658.    RTS
  659. +  LDA #2
  660.    RTS
  661.  
  662. ;*** UTOA( $0+╪=VALUE32, (ZP)=BUF, .┴=MIN╠EN ) : BUF, .┘=LEN
  663.  
  664. UTOA┬IN = SYSWORK+2     ;(4)
  665. UTOA┬CD = SYSWORK+6     ;(5)
  666. UTOA╞LAG = SYSWORK+11   ;(1)
  667. UTOA╠EN = SYSWORK+12    ;(1)
  668. UTOA╨OS = SYSWORK+13    ;(1)
  669.  
  670. ACE╒TOA = *
  671.    CMP #0
  672.    BNE +
  673.    LDA #1
  674. +  CMP #10
  675.    BCC +
  676.    LDA #10
  677. +  STA UTOA╠EN
  678.    SEC
  679.    LDA #10
  680.    SBC UTOA╠EN
  681.    STA UTOA╠EN
  682.    LDY #0
  683. -  LDA 0,X
  684.    STA UTOA┬IN,Y
  685.    INX
  686.    INY
  687.    CPY #4
  688.    BCC - 
  689.    LDX #4
  690.    LDA #0
  691. -  STA UTOA┬CD,X
  692.    DEX
  693.    BPL -
  694.    STA UTOA╞LAG
  695.    LDY #32
  696.    SEI
  697.    SED
  698.  
  699.    UTOA╬EXT┬IT = *
  700.    ASL UTOA┬IN+0
  701.    ROL UTOA┬IN+1
  702.    ROL UTOA┬IN+2
  703.    ROL UTOA┬IN+3
  704.    LDX #4
  705. -  LDA UTOA┬CD,X
  706.    ADC UTOA┬CD,X
  707.    STA UTOA┬CD,X
  708.    DEX
  709.    BPL -
  710.    DEY
  711.    BNE UTOA╬EXT┬IT
  712.    CLD
  713.    CLI
  714.  
  715.    LDA #10
  716.    STA UTOA╨OS
  717.    LDX #0
  718.    LDY #0
  719. -  LDA UTOA┬CD,X
  720.    JSR UTOA╨UT╚EX
  721.    INX
  722.    CPX #5
  723.    BCC -
  724.    LDA #0
  725.    STA (ZP),Y
  726.    RTS
  727.  
  728.    UTOA╨UT╚EX = *
  729.    PHA
  730.    LSR
  731.    LSR
  732.    LSR
  733.    LSR
  734.    JSR UTOA╨UT─IGIT
  735.    PLA
  736.    AND #$0F
  737.  
  738.    UTOA╨UT─IGIT = *
  739.    DEC UTOA╨OS
  740.    BEQ UTOA╞ORCE─IGIT
  741.    CMP UTOA╞LAG
  742.    BNE UTOA╞ORCE─IGIT
  743.    DEC UTOA╠EN
  744.    BMI +
  745.    RTS
  746. +  LDA #$20
  747.    BNE UTOA╨OKE
  748.    UTOA╞ORCE─IGIT = *
  749.    ORA #$30
  750.    STA UTOA╞LAG
  751.    
  752.    UTOA╨OKE = *
  753.    STA (ZP),Y
  754.    INY
  755.    RTS
  756.  
  757. ;*** DATE( (.┴┘)=DATE╙TRING )  FMT:┘┘:┘┘:══:──:╚╚:══:╙╙:╘╫
  758.  
  759. ACE╟ET─ATE = *
  760.    STA SYSWORK+$E
  761.    STY SYSWORK+$F
  762.    LDY #3
  763. -  LDA ACE─ATE,Y
  764.    STA (SYSWORK+$E),Y
  765.    DEY
  766.    BPL -
  767.    LDY #4
  768.    LDA CIA1+$B
  769.    BPL +
  770.    AND #$1F
  771.    SEI
  772.    SED
  773.    CLC
  774.    ADC #$12
  775.    CLD
  776.    CLI
  777. +  CMP #$12
  778.    BNE +
  779.    LDA #$00
  780. +  CMP #$24
  781.    BNE +
  782.    LDA #$12
  783. +  STA (SYSWORK+$E),Y
  784.    INY
  785.    LDA CIA1+$A
  786.    STA (SYSWORK+$E),Y
  787.    INY
  788.    LDA CIA1+$9
  789.    STA (SYSWORK+$E),Y
  790.    INY
  791.    LDA CIA1+$8
  792.    ASL
  793.    ASL
  794.    ASL
  795.    ASL
  796.    ORA ACE─╧╫
  797.    STA (SYSWORK+$E),Y
  798.    RTS
  799.  
  800. ACE╙ET─ATE = *
  801.    STA SYSWORK
  802.    STY SYSWORK+1
  803.    LDY #3
  804. -  LDA (SYSWORK),Y
  805.    STA ACE─ATE,Y
  806.    DEY
  807.    BPL -
  808.    LDY #4
  809.    LDA (SYSWORK),Y
  810.    CMP #$13
  811.    BCC +
  812.    SEI
  813.    SED
  814.    SEC
  815.    SBC #$12
  816.    CLD
  817.    CLI
  818.    ORA #$80
  819. +  STA CIA1+$B
  820.    INY
  821.    LDA (SYSWORK),Y
  822.    STA CIA1+$A
  823.    INY
  824.    LDA (SYSWORK),Y
  825.    STA CIA1+$9
  826.    INY
  827.    LDA (SYSWORK),Y
  828.    LSR
  829.    LSR
  830.    LSR
  831.    LSR
  832.    STA CIA1+$8
  833.    LDA (SYSWORK),Y
  834.    AND #$07
  835.    STA ACE─╧╫
  836.    RTS
  837.  
  838. ;*** RENAME( (ZP)=╧LD╬AME, (ZW)=╬EW╬AME )
  839. ;*** DON'T EVEN THINK ABOUT RENAMING FILES OUTSIDE THE CURRENT DIRECTORY
  840.  
  841. RENAME─EVICE = SYSWORK+0
  842. RENAME╙CAN   = SYSWORK+1
  843.  
  844. ACE╥ENAME = *
  845.    JSR GET─ISK─EVICE
  846.    BCC +
  847.    RTS
  848. +  STA RENAME─EVICE
  849.    CPX #4
  850.    BNE +
  851.    JMP RD╥ENAME
  852. +  STY RENAME╙CAN
  853.    LDA #"R"
  854.    STA STRING┬UFFER+0
  855.    LDA #":"
  856.    STA STRING┬UFFER+1
  857.    ;** COPY NEW NAME
  858.    LDY #0
  859.    LDX #2
  860. -  LDA (ZW),Y
  861.    STA STRING┬UFFER,X
  862.    BEQ +
  863.    INY
  864.    INX
  865.    BNE -
  866. +  LDA #"="
  867.    STA STRING┬UFFER,X
  868.    INX
  869.    ;** COPY OLD NAME
  870.    LDY RENAME╙CAN
  871. -  LDA (ZP),Y
  872.    STA STRING┬UFFER,X
  873.    BEQ +
  874.    INX
  875.    INY
  876.    BNE -
  877. +  LDA RENAME─EVICE
  878.    JSR CMDCH╧PEN
  879.    BCS ++
  880.    JSR CMDCH╙END
  881.    BCS +
  882.    JSR CHECK─ISK╙TATUS
  883. +  PHP
  884.    JSR CMDCH├LOSE
  885.    PLP
  886. +  RTS
  887.  
  888. ;*** MKDIR( (ZP)=╬AME )
  889.  
  890. MKDIR─EVICE = SYSWORK
  891.  
  892. ACE═KDIR = *
  893.    JSR GET─ISK─EVICE
  894.    BCC +
  895.    RTS
  896. +  STA MKDIR─EVICE
  897.    LDA #"M"
  898.    STA STRING┬UFFER+0
  899.    LDA #"D"
  900.    STA STRING┬UFFER+1
  901.    LDA #":"
  902.    STA STRING┬UFFER+2
  903.    LDX #3
  904. -  LDA (ZP),Y
  905.    STA STRING┬UFFER,X
  906.    BEQ +
  907.    INY
  908.    INX
  909.    BNE -
  910. +  LDA MKDIR─EVICE
  911.    JSR CMDCH╧PEN
  912.    BCS ++
  913.    JSR CMDCH╙END
  914.    BCS +
  915.    JSR CHECK─ISK╙TATUS
  916. +  PHP
  917.    JSR CMDCH├LOSE
  918.    PLP
  919. +  RTS
  920.  
  921. ;*** RMDIR( (ZP)=╬AME )
  922.  
  923. RMDIR─EVICE = SYSWORK
  924.  
  925. ACE╥MDIR = *
  926.    JSR GET─ISK─EVICE
  927.    BCC +
  928.    RTS
  929. +  STA RMDIR─EVICE
  930.    LDA #"R"
  931.    STA STRING┬UFFER+0
  932.    LDA #"D"
  933.    STA STRING┬UFFER+1
  934.    LDA #":"
  935.    STA STRING┬UFFER+2
  936.    LDX #3
  937. -  LDA (ZP),Y
  938.    STA STRING┬UFFER,X
  939.    BEQ +
  940.    INY
  941.    INX
  942.    BNE -
  943. +  LDA RMDIR─EVICE
  944.    JSR CMDCH╧PEN
  945.    BCS ++
  946.    JSR CMDCH╙END
  947.    BCS +
  948.    JSR CHECK─ISK╙TATUS
  949. +  PHP
  950.    JSR CMDCH├LOSE
  951.    PLP
  952. +  RTS
  953.  
  954. ;BLANK LINE
  955.  
  956.