home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / ACE-R11-SCR2.ARC / XLS.S < prev   
Encoding:
Text File  |  2019-04-13  |  8.1 KB  |  619 lines

  1. ;*** DIRECTORY PROGRAM - BY ├RAIG ┬RUCE
  2.  
  3. .SEQ ACEHEAD.S
  4. .ORG ACE┴PP┴DDRESS
  5. .OBJ "@0:XLS"
  6.  
  7. JMP MAIN
  8. .BYTE ACE╔─1,ACE╔─2,ACE╔─3
  9. .BYTE 64,0  ;** STACK,RESERVED
  10.  
  11. ;*** GLOBAL DECLARATIONS
  12.  
  13. LIBWORK = 80
  14.  
  15. CHR├╥ = $0D
  16. CHR├LS = 147
  17. CHR╤UOTE = $22
  18. TRUE = $FF
  19. FALSE = $00
  20.  
  21. ARG        = 2
  22. NAME       = 4
  23. STRING     = 8
  24. DIR╞CB     = 16
  25. DIR├OLUMNS = 17
  26. DIR├UR├OL  = 18
  27. DIR╠ONG    = 19
  28. DIR╙PACES  = 20
  29. DIRLINE╠EN = 21
  30. DIR├H├OLS  = 22
  31. DIR╨AGED   = 23
  32. DIR╙HOWN   = 24
  33. DIR├LS     = 25
  34. DIR╞ILES   = 32
  35. DIR┬YTES   = 36
  36. DIR╞REE    = 40
  37. WORK       = 64
  38.  
  39. MAIN = *
  40.    LDA #FALSE
  41.    STA DIR╠ONG
  42.    STA DIR╨AGED
  43.    STA DIR╙HOWN
  44.    STA DIR├LS
  45.  
  46.    LDA #0
  47.    LDY #0
  48.    STA ARG+0
  49.    STY ARG+1
  50.  
  51.    NEXT┴RG = *
  52.    JSR STOPKEY
  53.    BCC +
  54.    JMP STOPPED
  55. +  INC ARG+0
  56.    BNE +
  57.    INC ARG+1
  58. +  LDA ARG+0
  59.    LDY ARG+1
  60.    JSR GETARG
  61.    LDA ZP+0
  62.    ORA ZP+1
  63.    BEQ MAIN┼XIT
  64.    LDY #0
  65.    LDA (ZP),Y
  66.    CMP #"-"
  67.    BNE NAME┴RG
  68.    JSR HANDLE╧PTION
  69.    JMP NEXT┴RG
  70.  
  71.    NAME┴RG = *
  72.    LDA ZP+0
  73.    LDY ZP+1
  74.    STA NAME+0
  75.    STY NAME+1
  76.    JSR LS
  77.    LDA #TRUE
  78.    STA DIR╙HOWN
  79.    JMP NEXT┴RG
  80.  
  81. MAIN┼XIT = *
  82.    LDA DIR╙HOWN
  83.    BNE +
  84.    LDA #<DEFAULT─IR
  85.    LDY #>DEFAULT─IR
  86.    STA NAME+0
  87.    STY NAME+1
  88.    JSR LS
  89. +  RTS
  90.  
  91.    DEFAULT─IR = *
  92.    .BYTE ".",":",0
  93.  
  94. HANDLE╧PTION = *
  95.    LDY #0
  96.    STY WORK+2
  97.    LDA ZP+0
  98.    LDY ZP+1
  99.    STA WORK+0
  100.    STY WORK+1
  101.  
  102.    NEXT╧PTION = *
  103.    INC WORK+2
  104.    LDY WORK+2
  105.    LDA (WORK),Y
  106.    BNE +
  107.    RTS
  108. +  CMP #"?"
  109.    BNE +
  110.    LDA #<USAGE═SG
  111.    LDY #>USAGE═SG
  112.    JSR EPUTS
  113.    LDA #0
  114.    LDX #0
  115.    JMP EXIT
  116. +  CMP #"L"
  117.    BNE +
  118.    LDA #TRUE
  119.    STA DIR╠ONG
  120.    JMP NEXT╧PTION
  121. +  CMP #"C"
  122.    BNE +
  123.    LDA #TRUE
  124.    STA DIR├LS
  125.    JMP NEXT╧PTION
  126. +  JMP NEXT╧PTION
  127.  
  128. USAGE═SG = *
  129.    .ASC "USAGE: LS [-][L][?][C] [DIRECTORY ...]"
  130.    .BYTE CHR├╥
  131.    .ASC "OPTS:  L=LONG FORM, ?=HELP, C=CLEAR SCREEN"
  132.    .BYTE CHR├╥,0
  133.  
  134. STOPPED = *
  135.    LDA #<STOPPED═SG
  136.    LDY #>STOPPED═SG
  137.    JSR EPUTS
  138.    LDA #1
  139.    LDX #0
  140.    JMP EXIT
  141.    STOPPED═SG = *
  142.    .ASC "<╙TOPPED>"
  143.    .BYTE CHR├╥,0
  144.  
  145. ERROR = *
  146.    LDA #<ERROR═SG1
  147.    LDY #>ERROR═SG1
  148.    JSR EPUTS
  149.    LDA NAME+0
  150.    LDY NAME+1
  151.    JSR EPUTS
  152.    LDA #<ERROR═SG2
  153.    LDY #>ERROR═SG2
  154.    JMP EPUTS
  155.  
  156.    ERROR═SG1 = *
  157.    .ASC "┼RROR READING DIRECTORY "
  158.    .BYTE CHR╤UOTE,0
  159.    ERROR═SG2 = *
  160.    .BYTE CHR╤UOTE,CHR├╥,0
  161.  
  162. ;===DIR===
  163.  
  164. LS = *
  165.    LDA DIR├LS
  166.    BEQ +
  167.    LDA #CHR├LS
  168.    JSR PUTCHAR
  169. +  LDA DIR╠ONG
  170.    BNE DIR
  171.  
  172. TRUE╠S = *
  173.    LDX #1
  174.    JSR DEVINFO
  175.    STX DIR├H├OLS
  176.    CMP #0
  177.    BNE +
  178.    TXA
  179.    LDX #$FF
  180. -  INX
  181.    SBC #20
  182.    BCS -
  183.    TXA
  184.    BNE LS╙ET├OLS
  185.  
  186. +  LDA #1
  187.    LS╙ET├OLS = *
  188.    STA DIR├OLUMNS
  189.    JMP DIR├OMMON
  190.  
  191. DIR = *
  192.    LDX #1
  193.    JSR DEVINFO
  194.    STX DIR├H├OLS
  195.    LDA #1
  196.    STA DIR├OLUMNS
  197.  
  198. DIR├OMMON = *
  199.    LDA #0
  200.    STA DIR├UR├OL
  201.    LDX #3
  202. -  STA DIR┬YTES,X
  203.    STA DIR╞ILES,X
  204.    DEX
  205.    BPL -
  206.  
  207.    DIR╟OT╬AME = *
  208.    LDA NAME+0
  209.    LDY NAME+1
  210.    STA ZP+0
  211.    STY ZP+1
  212.    JSR DIROPEN
  213.    BCC +
  214.    JMP ERROR
  215. +  STA DIR╞CB
  216.    LDX DIR╞CB
  217.    JSR DIRREAD
  218.    BCS DIR┼XIT
  219.    BEQ DIR┼XIT
  220.    JSR STOPKEY
  221.    BCC +
  222.    JMP STOPPED
  223. +  LDA DIR╠ONG
  224.    BPL DIR╬EXT
  225.    JSR DIR─ISPLAY╚EADING
  226.  
  227.    DIR╬EXT = *
  228.    LDX DIR╞CB 
  229.    JSR DIRREAD
  230.    BCS DIR┼XIT
  231.    BEQ DIR┼XIT
  232.    JSR STOPKEY
  233.    BCC +
  234.    JSR DIR┼XIT
  235.    JMP STOPPED
  236. +  LDA ACE─IRENT╬AME+0
  237.    BEQ DIR╘RAILER┼XIT
  238.    LDA ACE─IRENT╒SAGE
  239.    AND #%00010000
  240.    BNE DIR╬EXT
  241.    JSR DIR─ISPLAY
  242.    JMP DIR╬EXT
  243.  
  244.    DIR╘RAILER┼XIT = *
  245.    LDA DIR╠ONG
  246.    BPL DIR┼XIT
  247.    JSR DIR─ISPLAY╘RAILER
  248.    JMP DIR┼XIT
  249.  
  250.    DIR┼XIT = *
  251.    LDA DIR├UR├OL
  252.    BEQ +
  253.    LDA #CHR├╥
  254.    JSR PUTCHAR
  255. +  LDA DIR╞CB
  256.    JMP DIRCLOSE
  257.  
  258. DIR─ISPLAY = *
  259.    BIT ACE─IRENT╞LAGS
  260.    BMI ++
  261.    INC DIR╞ILES+0
  262.    BNE +
  263.    INC DIR╞ILES+1
  264.    BNE +
  265.    INC DIR╞ILES+2
  266.    BNE +
  267.    INC DIR╞ILES+3
  268. +  LDX #0
  269.    LDY #4
  270.    CLC
  271. -  LDA DIR┬YTES,X
  272.    ADC ACE─IRENT┬YTES,X
  273.    STA DIR┬YTES,X
  274.    INX
  275.    DEY
  276.    BNE -
  277. +  BIT DIR╠ONG
  278.    BMI +
  279.    JMP DIR─ISPLAY╙HORT
  280. +  JSR DIR╙ETUP─IRLINE
  281.    LDA #<DIRLINE
  282.    LDY #>DIRLINE
  283.    STA ZP+0
  284.    STY ZP+1
  285.    LDA DIRLINE╠EN
  286.    LDY #0
  287.    LDX #STDOUT
  288.    JMP WRITE
  289.  
  290. ;*            000000000011111111112222222222333333333344444444445555555555
  291. ;*       POS: 012345678901234567890123456789012345678901234567890123456789
  292. DIRLINE .ASC "DRWX*E-T  00-╪XX-00  12:00A 12345678 *╙┼╤  1234567890123456"
  293.         .BYTE CHR├╥,0
  294. DIR╞LAG╬AMES .ASC "DRWX*E-T"
  295. DIR─ATE╙TR .ASC "  00-╪XX-00  12:00A "
  296. DIR─ATE┼ND = *
  297.  
  298. DIR╙ETUP─IRLINE = *
  299.    ;** FLAGS
  300.    LDX #0
  301.    LDA ACE─IRENT╞LAGS
  302. -  ASL
  303.    PHA
  304.    LDA #"-"
  305.    BCC +
  306.    LDA DIR╞LAG╬AMES,X
  307. +  STA DIRLINE+0,X
  308.    PLA
  309.    INX
  310.    CPX #8
  311.    BCC -
  312.  
  313.    ;** DATE
  314.    JSR PUT╔N─ATE
  315.    LDX #DIR─ATE┼ND-DIR─ATE╙TR-1
  316. -  LDA DIR─ATE╙TR,X
  317.    STA DIRLINE+8,X
  318.    DEX
  319.    BPL -
  320.  
  321.    ;** BYTES
  322.    LDX #3
  323. -  LDA ACE─IRENT┬YTES,X
  324.    STA DIR╞REE,X
  325.    DEX
  326.    BPL -
  327.    LDA #<UTOA╬UMBER
  328.    LDY #>UTOA╬UMBER
  329.    STA ZP+0
  330.    STY ZP+1
  331.    LDA #8
  332.    LDX #DIR╞REE
  333.    JSR UTOA
  334.    LDY #28
  335.    LDA DIR├H├OLS
  336.    CMP #60
  337.    BCS +
  338.    LDY #8
  339. +  LDX #0
  340. -  LDA UTOA╬UMBER,X
  341.    STA DIRLINE,Y
  342.    INY
  343.    INX
  344.    CPX #8
  345.    BCC -
  346.    LDA #" "
  347.    STA DIRLINE,Y
  348.    INY
  349.  
  350.    ;** UNCLOSED FLAG
  351.    LDA DIRLINE+4
  352.    CMP #"-"
  353.    BNE +
  354.    LDA #" "
  355. +  STA DIRLINE,Y
  356.    INY
  357.  
  358.    ;** FILETYPE
  359.    LDX #0
  360. -  LDA ACE─IRENT╘YPE,X
  361.    ORA #$80
  362.    STA DIRLINE,Y
  363.    INY
  364.    INX
  365.    CPX #3
  366.    BCC -
  367.    LDA #" "
  368.    STA DIRLINE,Y
  369.    INY
  370.    STA DIRLINE,Y
  371.    INY
  372.  
  373.    ;** FILENAME
  374.    LDX #0
  375. -  LDA ACE─IRENT╬AME,X
  376.    BEQ +
  377.    STA DIRLINE,Y
  378.    INY
  379.    INX
  380.    BNE -
  381. +  LDA #CHR├╥
  382.    STA DIRLINE,Y
  383.    INY
  384.    LDA #0
  385.    STA DIRLINE,Y
  386.    STY DIRLINE╠EN
  387.    RTS
  388.  
  389. DIR─ISPLAY╙HORT = *
  390.    LDA #<ACE─IRENT╬AME
  391.    LDY #>ACE─IRENT╬AME
  392.    JSR PUTS
  393.    INC DIR├UR├OL
  394.    LDA DIR├UR├OL
  395.    CMP DIR├OLUMNS
  396.    BCC +
  397.    LDA #0
  398.    STA DIR├UR├OL
  399.    LDA #CHR├╥
  400.    JMP PUTCHAR
  401. +  LDY #$FF
  402. -  INY
  403.    LDA ACE─IRENT╬AME,Y
  404.    BNE -
  405.    STY DIR╙PACES
  406.    LDA #20
  407.    SBC DIR╙PACES
  408.    STA DIR╙PACES
  409. -  LDA #" "
  410.    JSR PUTCHAR
  411.    DEC DIR╙PACES
  412.    BNE -
  413.    RTS
  414.  
  415. DIR─ISPLAY╚EADING = *
  416.    LDA #<DIR╚EADING═SG
  417.    LDY #>DIR╚EADING═SG
  418.    JSR PUTS
  419.    LDA #<ACE─IRENT╬AME
  420.    LDY #>ACE─IRENT╬AME
  421.    JSR PUTS
  422.    LDA #CHR├╥
  423.    JSR PUTCHAR
  424.    RTS
  425.  
  426.    DIR╚EADING═SG = *
  427.    .ASC "─IR: "
  428.    .BYTE 0
  429.  
  430. DIR─ISPLAY╘RAILER = *
  431.    LDX #3
  432. -  LDA ACE─IRENT┬YTES,X
  433.    STA DIR╞REE,X
  434.    DEX
  435.    BPL -
  436.    LDX #0
  437.    LDY #0
  438. -  LDA DIR╘RAILING═SG,X
  439.    BEQ +
  440.    CMP #4
  441.    BCC STORE╬UM
  442.    STA TRAIL┬UF,Y
  443.    INX
  444.    INY
  445.    BNE -
  446. +  LDA #<TRAIL┬UF
  447.    LDX #>TRAIL┬UF
  448.    STA ZP+0
  449.    STX ZP+1
  450.    TYA
  451.    LDY #0
  452.    LDX #STDOUT
  453.    JMP WRITE
  454.  
  455.    STORE╬UM = *
  456.    STX WORK+0
  457.    STY WORK+1
  458.    SEC
  459.    SBC #1
  460.    ASL
  461.    ASL
  462.    ADC #DIR╞ILES
  463.    TAX
  464.    LDA #<UTOA╬UMBER
  465.    LDY #>UTOA╬UMBER
  466.    STA ZP+0
  467.    STY ZP+1
  468.    LDA #1
  469.    JSR UTOA
  470.    LDX #0
  471.    LDY WORK+1
  472. -  LDA UTOA╬UMBER,X
  473.    BEQ +
  474.    STA TRAIL┬UF,Y
  475.    INX
  476.    INY
  477.    BNE -
  478. +  LDX WORK+0
  479.    INX
  480.    JMP --
  481.  
  482.    DIR╘RAILING═SG = *
  483.    .ASC "FILES="
  484.    .BYTE 1
  485.    .ASC "  BYTES="
  486.    .BYTE 2
  487.    .ASC "  FREE="
  488.    .BYTE 3
  489.    .BYTE CHR├╥
  490.    .BYTE 0
  491.  
  492.    TRAIL┬UF .BUF 64
  493.  
  494. PUT╔N─ATE = *
  495.    ;** YEAR
  496.    LDA ACE─IRENT─ATE+1
  497.    LDX #9
  498.    JSR PUT─IGITS
  499.    ;** MONTH
  500.    LDA ACE─IRENT─ATE+2
  501.    CMP #$10
  502.    BCC +
  503.    SEC
  504.    SBC #$10-10
  505. +  TAX
  506.    LDA MONTH╙TR+0,X
  507.    STA DIR─ATE╙TR+5
  508.    LDA MONTH╙TR+13,X
  509.    STA DIR─ATE╙TR+6
  510.    LDA MONTH╙TR+26,X
  511.    STA DIR─ATE╙TR+7
  512.    ;** DAY
  513.    LDA ACE─IRENT─ATE+3
  514.    LDX #2
  515.    JSR PUT─IGITS
  516.    ;** HOUR
  517.    LDA ACE─IRENT─ATE+4
  518.    LDX #"A"
  519.    CMP #$00
  520.    BNE +
  521.    LDA #$12
  522.    JMP PUT╚OUR
  523. +  CMP #$12
  524.    BCC PUT╚OUR
  525.    LDX #"P"
  526.    CMP #$12
  527.    BEQ PUT╚OUR
  528.    SEI
  529.    SED
  530.    SEC
  531.    SBC #$12
  532.    CLD
  533.    CLI
  534.    PUT╚OUR = *
  535.    STX DIR─ATE╙TR+18
  536.    LDX #13
  537.    JSR PUT─IGITS
  538.    ;** MINUTE
  539.    LDA ACE─IRENT─ATE+5
  540.    LDX #16
  541.    JSR PUT─IGITS
  542.    RTS
  543.  
  544.    PUT─IGITS = *  ;( .┴=NUM, .╪=OFFSET )
  545.    PHA
  546.    LSR
  547.    LSR
  548.    LSR
  549.    LSR
  550.    ORA #$30
  551.    STA DIR─ATE╙TR,X
  552.    PLA
  553.    AND #$0F
  554.    ORA #$30
  555.    STA DIR─ATE╙TR+1,X
  556.    RTS
  557.  
  558.    MONTH╙TR = *
  559.    .ASC "╪╩╞═┴═╩╩┴╙╧╬─"
  560.    .ASC "XAEAPAUUUECOE"
  561.    .ASC "XNBRRYNLGPTVC"
  562.  
  563. ;******** STANDARD LIBRARY ********
  564. PUTS = *
  565.    LDX #STDOUT
  566. FPUTS = *
  567.    STA ZP
  568.    STY ZP+1
  569.    LDY #$FF
  570. -  INY
  571.    LDA (ZP),Y
  572.    BNE -
  573.    TYA
  574.    LDY #0
  575.    JMP WRITE
  576. EPUTS = *
  577.    LDX #STDERR
  578.    JMP FPUTS
  579.  
  580. PUTCHAR = *
  581.    LDX #STDOUT
  582. PUTC = *
  583.    STA PUTC┬UFFER
  584.    LDA #<PUTC┬UFFER
  585.    LDY #>PUTC┬UFFER
  586.    STA ZP
  587.    STY ZP+1
  588.    LDA #1
  589.    LDY #0
  590.    JMP WRITE
  591.    PUTC┬UFFER .BUF 1
  592.  
  593. GETARG = *
  594.    STY ZP+1
  595.    ASL
  596.    STA ZP
  597.    ROL ZP+1
  598.    CLC
  599.    LDA ACE┴RGV
  600.    ADC ZP
  601.    STA ZP
  602.    LDA ACE┴RGV+1
  603.    ADC ZP+1
  604.    STA ZP+1
  605.    LDY #0
  606.    LDA (ZP),Y
  607.    TAX
  608.    INY
  609.    LDA (ZP),Y
  610.    STX ZP
  611.    STA ZP+1
  612.    RTS
  613.  
  614. UTOA╬UMBER .BUF 11
  615.  
  616. ;===BSS===
  617.  
  618. BSS = *
  619.