home *** CD-ROM | disk | FTP | other *** search
/ Magic Disk 64 / Magic_Disk_64_93-02_1993_-_de_Side_A.d64 / fk.usedir.src < prev    next >
Text File  |  2023-02-26  |  13KB  |  708 lines

  1. ;*****************************
  2.          *= $0801
  3. status   = $90
  4. setpar   = $ffba
  5. setnam   = $ffbd
  6. open     = $ffc0
  7. close    = $ffc3
  8. chkin    = $ffc6
  9. clrch    = $ffcc
  10. basin    = $ffcf
  11. bsout    = $ffd2
  12. load     = $ffd5
  13. save     = $ffd8
  14. ckout    = $ffc9
  15. intout   = $bdcd
  16. inkey    = $ffe4
  17. listen   = $ffb1
  18. unlist   = $ffae
  19. talk     = $ffb4
  20. untalk   = $ffab
  21. iecin    = $ffa5
  22. iecout   = $ffa8
  23. sectlk   = $ff96
  24. seclst   = $ff93
  25.  
  26. filemem  = $0f00
  27. numbuff  = $0332
  28. need     = $0337
  29. dskfree  = $0338
  30. allfree  = $033a
  31. dirfree  = $033c
  32. dirstrt  = $033d
  33. ftrack   = $033e
  34. fsector  = $033f
  35. dsindex  = $0340
  36. combuff  = $0341
  37.  
  38. mem0     = $02
  39. mem1     = $03
  40. mem2     = $04
  41. mem3     = $05
  42. mem4     = $06
  43. ;*******************************
  44. ;         jmp main
  45. ;*******************************
  46.          .byte $0b,$08,$0a,$00,$9e
  47.          .text "2061"
  48.          .byte 0,0,0
  49. ;*******************************
  50. main     lda #11
  51.          sta 53280
  52.          sta 53281
  53.  
  54.          lda #<(text1)
  55.          ldy #>(text1)
  56.          jsr strout
  57.          jsr getin
  58.          cpy #1
  59.          bne m3
  60.          lda #"x"
  61.          cmp name
  62.          bne m3
  63.          jmp 64738
  64.  
  65. m3       jsr rfile
  66.          jsr getneed
  67.  
  68.          lda #<(text2)
  69.          ldy #>(text2)
  70.          jsr strout
  71. mloop1   jsr inkey
  72.          beq mloop1
  73.  
  74.          lda #<(text3)
  75.          ldy #>(text3)
  76.          jsr strout
  77.  
  78.          jsr wdummy
  79.          jsr openio
  80.          jsr getdskf
  81.          jsr getdirf
  82.          jsr closeio
  83.          jsr statout
  84.  
  85.          lda dirfree
  86.          bne m1
  87.          lda #<(errtxt1)
  88.          ldy #>(errtxt1)
  89.          jmp errout
  90.  
  91. m1       cmp need
  92.          bcc m2
  93.          lda #<(errtxt2)
  94.          ldy #>(errtxt2)
  95.          jmp errout
  96.  
  97. m2       ldy allfree+1
  98.          bne ok
  99.          lda allfree+0
  100.          cmp need
  101.          bcs ok
  102.          lda #<(errtxt3)
  103.          ldy #>(errtxt3)
  104.          jmp errout
  105.  
  106. ok       lda #19
  107.          sec
  108.          sbc dirfree
  109.          tay
  110.          lda blktab,y
  111.          sta dirstrt
  112.          sty dsindex
  113.  
  114.          ldx dirfree
  115.          txa
  116.          dex
  117.          asl a
  118.          eor #$ff
  119.          clc
  120.          adc #1
  121.          adc #<(filemem)
  122.          bcc m5
  123.          inx
  124. m5       sta $fd
  125.          txa
  126.          clc
  127.          adc #>(filemem)
  128.          sta $fe
  129.          jsr wfile
  130.  
  131.          jsr openio
  132.          jsr chgent
  133.          jsr wblocks
  134.          jsr closeio
  135.  
  136.          lda #<(text4)
  137.          ldy #>(text4)
  138.  
  139. errout   jsr strout
  140. eo1      jsr inkey
  141.          beq eo1
  142.          jmp main
  143. ;*******************************
  144. statout  lda #<(stext1)
  145.          ldy #>(stext1)
  146.          jsr strout
  147.          lda #0
  148.          ldx need
  149.          jsr intout
  150.  
  151.          lda #<(stext2)
  152.          ldy #>(stext2)
  153.          jsr strout
  154.          lda #0
  155.          ldx dirfree
  156.          jsr intout
  157.  
  158.          lda #<(stext3)
  159.          ldy #>(stext3)
  160.          jsr strout
  161.          lda dskfree+1
  162.          ldx dskfree+0
  163.          jmp intout
  164. ;*******************************
  165. getneed  ldx #0
  166.          stx need
  167.  
  168.          lda $f9
  169.          ldx $fa
  170.          sec
  171.          sbc #<(filemem)
  172.          bcs rf1
  173.          dex
  174. rf1      sta mem1
  175.          txa
  176.          sec
  177.          sbc #>(filemem)
  178.          sta mem2
  179.  
  180.          rol a
  181.          bcc cn1
  182.          inc need
  183. cn1      clc
  184.          adc mem1
  185.          beq cn2
  186.          bcc cn2
  187.          inc need
  188. cn2      inc need
  189.  
  190.          lda mem2
  191.          clc
  192.          adc need
  193. cn3      sta need
  194.          rts
  195. ;*******************************
  196. getdskf  lda #<(com5)
  197.          ldy #>(com5)
  198.          jsr striec
  199.  
  200.          lda #8
  201.          jsr talk
  202.          lda #$6f
  203.          jsr sectlk
  204.  
  205.          jsr iecin
  206.          sta dskfree+0
  207.          jsr iecin
  208.          jsr iecin
  209.          sta dskfree+1
  210.  
  211.          lda #8
  212.          jmp untalk
  213. ;*******************************
  214. getdirf  lda #<(com6)
  215.          ldy #>(com6)
  216.          jsr striec
  217.  
  218.          lda #<(com7)
  219.          ldy #>(com7)
  220.          jsr striec
  221.  
  222.          lda #8
  223.          jsr talk
  224.          lda #$62
  225.          jsr sectlk
  226.  
  227.          jsr iecin
  228.          sta dirfree
  229.  
  230.          ldx dskfree+1
  231.          clc
  232.          adc dskfree+0
  233.          bcc gf1
  234.          inx
  235. gf1      sta allfree+0
  236.          stx allfree+1
  237.  
  238.          lda #8
  239.          jmp untalk
  240. ;*******************************
  241. i2a      ldy #(48-1)
  242. ialoop1  iny
  243.          sec
  244.          sbc #100
  245.          bcs ialoop1
  246.          adc #100
  247.          sty numbuff+1
  248.  
  249.          ldy #(48-1)
  250. ialoop2  iny
  251.          sec
  252.          sbc #10
  253.          bcs ialoop2
  254.          adc #10
  255.          sty numbuff+2
  256.  
  257.          clc
  258.          adc #48
  259.          sta numbuff+3
  260.  
  261.          lda #32
  262.          sta numbuff+0
  263.          lda #0
  264.          sta numbuff+4
  265.          rts
  266. ;*******************************
  267. rfile    ldx #<(filemem)
  268.          ldy #>(filemem)
  269.          stx $f9
  270.          sty $fa
  271.  
  272.          lda mem0
  273.          ldx #<(name)
  274.          ldy #>(name)
  275.          jsr setnam
  276.          lda #1
  277.          ldx #8
  278.          ldy #0
  279.          jsr setpar
  280.          jsr open
  281.          ldx #1
  282.          jsr chkin
  283.  
  284.          ldy #0
  285. loop1    jsr basin
  286.          sta ($f9),y
  287.  
  288.          inc $f9
  289.          bne l1
  290.          inc $fa
  291.  
  292. l1       lda $90
  293.          beq loop1
  294.  
  295.          jsr clrch
  296.          lda #1
  297.          jmp close
  298. ;*******************************
  299. wfile    lda #<(text5)
  300.          ldy #>(text5)
  301.          jsr strout
  302.  
  303.          lda mem0
  304.          ldx #<(name)
  305.          ldy #>(name)
  306.          jsr setnam
  307.          lda #1
  308.          ldx #8
  309.          ldy #1
  310.          jsr setpar
  311.          jsr open
  312.          ldx #1
  313.          jsr ckout
  314.  
  315.          ldy #0
  316. wfloop1  lda ($fd),y
  317.          jsr bsout
  318.  
  319. x3       jsr inkey
  320.          bne x3
  321.  
  322.          inc $fd
  323.          bne wf1
  324.          inc $fe
  325.  
  326. wf1      lda $fe
  327.          cmp $fa
  328.          bne wfloop1
  329.          lda $fd
  330.          cmp $f9
  331.          bne wfloop1
  332.  
  333.          jsr clrch
  334.          lda #1
  335.          jmp close
  336. ;*******************************
  337. wdummy   lda mem0
  338.          ldx #<(name)
  339.          ldy #>(name)
  340.          jsr setnam
  341.          lda #1
  342.          ldx #8
  343.          ldy #1
  344.          jsr setpar
  345.          jsr open
  346.          ldx #1
  347.          jsr ckout
  348.          jsr bsout
  349.          jsr clrch
  350.          lda #1
  351.          jsr close
  352.  
  353.          jsr opencom
  354.          lda #<(name-2)
  355.          ldy #>(name-2)
  356.          jsr striec
  357.          lda #1
  358.          jmp close
  359. ;*******************************
  360. getin    ldy #0
  361. giloop1  jsr basin
  362.          cmp #13
  363.          beq giend
  364.          sta name,y
  365.          iny
  366.          cpy #16
  367.          bne giloop1
  368. giend    sty mem0
  369.          lda #0
  370.          sta name,y
  371.          rts
  372. ;*******************************
  373. strout   sta $fb
  374.          sty $fc
  375.          ldy #0
  376. soloop1  lda ($fb),y
  377.          bne so1
  378.          rts
  379.  
  380. so1      jsr bsout
  381.          iny
  382.          bne soloop1
  383.          inc $fc
  384.          jmp soloop1
  385. ;*******************************
  386. striec   sta $fb
  387.          sty $fc
  388.  
  389.          lda #8
  390.          jsr listen
  391.          lda #$6f
  392.          jsr seclst
  393.  
  394.          ldy #0
  395. siloop1  lda ($fb),y
  396.          bne si1
  397.          lda #8
  398.          jmp unlist
  399.  
  400. si1      jsr iecout
  401.          iny
  402.          bne siloop1
  403.          inc $fc
  404.          jmp siloop1
  405. ;*******************************
  406. opencom  lda #1
  407.          ldx #<(comnam)
  408.          ldy #>(comnam)
  409.          jsr setnam
  410.          lda #1
  411.          ldx #8
  412.          ldy #$6f
  413.          jsr setpar
  414.          jmp open
  415. ;*******************************
  416. openio   jsr opencom
  417.          lda #1
  418.          ldx #<(bufnam)
  419.          ldy #>(bufnam)
  420.          jsr setnam
  421.          lda #2
  422.          ldx #8
  423.          ldy #$62
  424.          jsr setpar
  425.          jmp open
  426. ;*******************************
  427. closeio  lda #2
  428.          jsr close
  429.          lda #1
  430.          jmp close
  431. ;*******************************
  432. chgent   lda #<(text6)
  433.          ldy #>(text6)
  434.          jsr strout
  435.  
  436.          lda #1
  437.          sta mem1
  438.  
  439. celoop1  lda #8
  440.          jsr untalk
  441.          ldy mem1
  442.          lda blktab,y
  443.          sta mem3
  444.          ldx #<(com1)
  445.          ldy #>(com1)
  446.          jsr sendcom
  447.          inc mem1
  448.          lda #0
  449.          sta mem2
  450.  
  451. celoop2  ldy mem2
  452.          cpy #8
  453.          beq celoop1
  454.          lda enttab,y
  455.          sta mem4
  456.          ldx #<(com2)
  457.          ldy #>(com2)
  458.          jsr sendcom
  459.          inc mem2
  460.  
  461.          lda #8
  462.          jsr talk
  463.          lda #$62
  464.          jsr sectlk
  465.  
  466.          jsr iecin
  467.          cmp #$82
  468.          bne celoop2
  469.          jsr iecin
  470.          sta ftrack
  471.          jsr iecin
  472.          sta fsector
  473.  
  474.          ldy #$ff
  475. celoop3  iny
  476.          jsr iecin
  477.          cmp name,y
  478.          beq celoop3
  479.  
  480.          cpy #16
  481.          beq ce1
  482.          cmp #160
  483.          bne celoop2
  484.          lda name,y
  485.          bne celoop2
  486.  
  487. ce1      lda #8
  488.          jsr untalk
  489.  
  490.          lda mem4
  491.          clc
  492.          adc #1
  493.          ldx #<(com2)
  494.          ldy #>(com2)
  495.          jsr sendcom
  496.  
  497.          lda #8
  498.          jsr listen
  499.          lda #$62
  500.          jsr seclst
  501.  
  502.          lda #18
  503.          jsr iecout
  504.          lda dirstrt
  505.          jsr iecout
  506.  
  507.          lda #8
  508.          jsr unlist
  509.  
  510.          lda mem3
  511.          ldx #<(com3)
  512.          ldy #>(com3)
  513.          jmp sendcom
  514. ;*******************************
  515. wblocks  lda #<(text7)
  516.          ldy #>(text7)
  517.          jsr strout
  518.  
  519.          ldx #<(filemem)
  520.          ldy #>(filemem)
  521.          stx $fd
  522.          sty $fe
  523.  
  524. wbloop1  lda #<(com4)
  525.          ldy #>(com4)
  526.          jsr striec
  527.  
  528.          lda #8
  529.          jsr listen
  530.          lda #$62
  531.          jsr seclst
  532.  
  533.          ldy dsindex
  534. wb4      iny
  535.          lda blktab,y
  536.          bpl wb1
  537.          lda ftrack
  538.          jsr iecout
  539.          lda fsector
  540.          jsr iecout
  541.          jmp wb2
  542.  
  543. wb1      pha
  544.          lda #18
  545.          jsr iecout
  546.          pla
  547.          jsr iecout
  548.  
  549. wb2      ldy #0
  550. wbloop2  lda ($fd),y
  551.          jsr iecout
  552.          iny
  553.          cpy #$fe
  554.          bne wbloop2
  555.  
  556.          lda #8
  557.          jsr unlist
  558.  
  559.          lda $fd
  560.          clc
  561.          adc #$fe
  562.          bcc wb3
  563.          inc $fe
  564. wb3      sta $fd
  565.  
  566.          ldy dsindex
  567.          lda blktab,y
  568.          pha
  569.          ldx #<(com3)
  570.          ldy #>(com3)
  571.          jsr sendcom
  572.          pla
  573.          ldx #<(com8)
  574.          ldy #>(com8)
  575.          jsr sendcom
  576.          inc dsindex
  577.          dec dirfree
  578.          bne wbloop1
  579.          rts
  580. ;*******************************
  581. sendcom  pha
  582.          stx scloop1+1
  583.          sty scloop1+2
  584.  
  585.          ldy #0
  586. scloop1  lda $c000,y
  587.          beq sc1
  588.          sta combuff,y
  589.          iny
  590.          jmp scloop1
  591.  
  592. sc1      sty mem0
  593.          pla
  594.          jsr i2a
  595.          ldy mem0
  596.  
  597.          ldx #0
  598. scloop2  lda numbuff,x
  599.          beq sc2
  600.          sta combuff,y
  601.          inx
  602.          iny
  603.          jmp scloop2
  604.  
  605. sc2      lda #13
  606.          sta combuff,y
  607.          iny
  608.          lda #0
  609.          sta combuff,y
  610.  
  611.          lda #<(combuff)
  612.          ldy #>(combuff)
  613.          jmp striec
  614. ;*******************************
  615. com1     .text "u1 2 0 18"
  616.          .byte 0
  617. com2     .text "b-p 2"
  618.          .byte 0
  619. com3     .text "u2 2 0 18"
  620.          .byte 0
  621. com4     .text "b-p 2 0"
  622.          .byte 13,0
  623. com5     .text "m-r"
  624.          .byte 250,2,3,13,0
  625. com6     .text "u1 2 0 18 0"
  626.          .byte 13,0
  627. com7     .text "b-p 2 72"
  628.          .byte 13,0
  629. com8     .text "b-a 0 18"
  630.          .byte 13,0
  631.  
  632. comnam   .text "i"
  633. bufnam   .text "#"
  634. ;*******************************
  635. blktab   .byte 0,1,4,7,10,13,16
  636.          .byte 2,5,8,11,14,17
  637.          .byte 3,6,9,12,15,18,$ff
  638.  
  639. enttab   .byte 2,34,66,98,130,162
  640.          .byte 194,226,0
  641.  
  642.          .text "s:"
  643. name     .byte 0,0,0,0,0,0,0,0
  644.          .byte 0,0,0,0,0,0,0,0,0
  645. ;*******************************
  646. text1    .text ""
  647.          .text "             UseDir V1"
  648.          .text ".0                "
  649.          .text "   written anno 1992 b"
  650.          .text "y Uli Basters     "
  651.          .text "(Programmbeispiel zum "
  652.          .text "Floppy-Kurs Teil8)"
  653.          .byte 13
  654.          .text "Dieses Programm speich"
  655.          .text "ert ein File auf"
  656.          .byte 13
  657.          .text "Diskette, jedoch unter"
  658.          .text " Mitbenutzung der"
  659.          .byte 13
  660.          .text "sonst unzugaenglichen "
  661.          .text "Directoryblocks!"
  662.          .byte 13,13
  663.          .text "Filename: "
  664.          .byte 0
  665.  
  666. text2    .byte 13,13
  667.          .text "Bitte Zieldiskette e"
  668.          .text "inlegen!"
  669.          .byte 13,13,0
  670. text3    .text "Untersuche Zieldiskett"
  671.          .text "e..."
  672.          .byte 13,13,0
  673.  
  674. text4    .text "File installiert!!"
  675.          .byte 0
  676.  
  677. text5    .byte 13,13
  678.          .text "File wird angelegt..."
  679.          .byte 13,0
  680. text6    .text "Suche und aendere Eint"
  681.          .text "rag..."
  682.          .byte 13,0
  683. text7    .text "Schreibe und belege Di"
  684.          .text "rblocks..."
  685.          .byte 13,13,0
  686.  
  687. stext1   .text "Benoetigte Blocks: "
  688.          .byte 0
  689. stext2   .byte 13
  690.          .text " Freie Dir-Blocks: "
  691.          .byte 0
  692. stext3   .byte 13
  693.          .text "Freie Disk-Blocks: "
  694.          .byte 0
  695.  
  696. errtxt1  .byte 13,13
  697.          .text "Kein Dir-Block mehr fr"
  698.          .text "ei!"
  699.          .byte 0
  700. errtxt2  .byte 13,13
  701.          .text "File ist zu kurz!"
  702.          .byte 0
  703. errtxt3  .byte 13,13
  704.          .text "File ist zu lang!"
  705.          .byte 0
  706. ;*******************************
  707.  
  708.