home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / 256KB.ROS-V1.SFX / ramcmd.a < prev    next >
Encoding:
Text File  |  1993-04-28  |  6.4 KB  |  573 lines

  1. ;
  2. ; 'NEW' COMMAND (FORMAT A DISC)
  3. ;
  4. NEW JSR DRIVFN
  5.  LDA #0
  6.  STA DRVNO
  7.  JSR BAMGET
  8.  LDY COMMPO+1
  9.  CPY CMDLEN
  10.  BEQ NEW1 ;NO ID
  11.  LDA CMDCHN,Y
  12.  STA DXID
  13.  LDA CMDCHN+1,Y
  14.  STA DXID+1
  15.  LDA #1
  16.  STA TRACK
  17. ;
  18. ; CLEAR DISC
  19. ;
  20. HEADER LDA #$40
  21.  STA BLKPNT+1
  22.  LDX #<683
  23.  LDA #>683
  24.  STA BLKBUF
  25.  LDA #$10
  26.  STA PIA
  27.  LDY #0
  28. HEADE0 LDA #'K'
  29. HEADE1 STA (BLKPNT),Y
  30.  LDA #0
  31.  INY
  32.  BNE HEADE1
  33.  INC BLKPNT+1
  34.  BPL HEADE2
  35.  LDA BLKPNT+1
  36.  EOR #%11000000
  37.  STA BLKPNT+1
  38.  CLC
  39.  LDA PIA
  40.  ADC #$10
  41.  STA PIA
  42. HEADE2 DEX
  43.  BNE HEADE0
  44.  DEC BLKBUF
  45.  BNE HEADE0
  46.  JMP NEW2
  47. ; FORMAT WITHOUT ID
  48. NEW1 JSR INIT
  49. ; READ ID
  50.  LDY #162
  51.  LDA (BAMPNT),Y
  52.  STA DXID
  53.  INY
  54.  LDA (BAMPNT),Y
  55.  STA DXID+1
  56. ; CHECK CORRECT DOS
  57.  LDY #2
  58.  LDA (BAMPNT),Y
  59.  CMP #'A' ;'A'-FORMAT?
  60.  BEQ NEW2
  61.  JMP CBMDOS
  62. NEW2 LDA #0
  63.  TAY
  64. NEW3 STA (BAMPNT),Y
  65.  INY
  66.  BNE NEW3
  67.  LDA #12
  68.  STA BUFFNO
  69.  ASL A
  70.  TAX
  71.  LDA #144 ;FILE NAME START
  72.  STA BPNTS,X
  73.  LDY #1 ;NEXT SECTOR
  74.  STY SECTOR
  75.  LDA #255
  76.  STA (BAMPNT),Y
  77.  LDA #18
  78.  STA TRACK
  79.  JSR SETWCM ;WRITE EMPTY DIRECTORY BLOCK
  80.  JSR CLRBA0
  81.  LDY #2
  82.  LDA #'A'
  83.  STA (BAMPNT),Y
  84.  JSR ALLOC ;FIRST DIR BLOCK
  85.  DEC SECTOR
  86.  JSR ALLOC ;BAM BLOCK
  87.  LDY BUFFNO
  88.  LDX COMMPO
  89.  LDA #$1B
  90.  JSR STENTR ;PUT DISC NAME
  91. ;PUT ID TO DISC NAME
  92.  LDY #18
  93.  LDA DXID
  94.  STA (BPNT),Y
  95.  INY
  96.  LDA DXID+1
  97.  STA (BPNT),Y
  98.  INY
  99.  INY
  100.  LDA #'2'
  101.  STA (BPNT),Y
  102.  INY
  103.  LDA #'A'
  104.  STA (BPNT),Y
  105.  JSR SETWCM
  106.  JMP CMDERR
  107. ;
  108. ; SCRATCH
  109. ;
  110. SCRATC JSR FTYPE
  111.  JSR DRCMD
  112.  JSR DSPIN
  113.  LDA #0
  114.  STA PNTE
  115.  JSR FENT99
  116.  BMI SCRAT4
  117. SCRAT0 JSR IFOPEN
  118.  BCC SCRAT3
  119.  LDY #0
  120.  LDA (BPNT),Y
  121.  AND #$40
  122.  BNE SCRAT3
  123.  JSR ERASE2
  124.  LDY #19
  125.  LDA (BPNT),Y
  126.  BEQ SCRAT1
  127.  STA TRACK
  128.  INY
  129.  LDA (BPNT),Y
  130.  STA SECTOR
  131.  JSR ERASE
  132. SCRAT1 LDX DHELP
  133.  LDA #$20
  134.  AND FNTYPE,X
  135.  BNE SCRAT2
  136.  LDA JOKERS,X
  137.  AND #$7F
  138.  STA TRACK
  139.  LDA FNSEC,X
  140.  STA SECTOR
  141.  JSR ERASE
  142. SCRAT2 INC PNTE
  143. SCRAT3 JSR FENT98
  144.  BPL SCRAT0
  145. SCRAT4 LDA PNTE
  146.  STA TRACK
  147.  LDA #1
  148.  LDY #0
  149.  JMP CMDER0
  150. ;
  151. ; FREE BLOCKS OF THE FILE
  152. ;
  153. ERASE JSR SCRBLO
  154.  JSR SYSOPN
  155. ERASE0 LDA #0
  156.  JSR SETBPN
  157.  JSR IEELD
  158.  STA TRACK
  159.  JSR IEELD
  160.  STA SECTOR
  161.  LDA TRACK
  162.  BNE ERASE1
  163.  JSR COLLEC
  164.  JMP CCLOSE
  165. ERASE1 JSR SCRBLO
  166.  JSR RSBPNT
  167.  JMP ERASE0
  168. ERASE2 LDY #0
  169.  TYA
  170.  STA (BPNT),Y
  171.  JMP W2NDDB
  172. ;
  173. ; DUPLICATE
  174. ;
  175. DUPLIC LDA #$30
  176.  JMP ERRD
  177. ;
  178. ; COPY FILES
  179. ;
  180. COPY JSR COLON
  181.  BNE COPY00
  182.  JSR COPY03
  183.  LDA #'*'
  184.  LDX #39
  185.  STX COMMPO+1
  186.  STA CMDCHN,X
  187.  INX
  188.  STX CMDLEN
  189.  LDX #1
  190.  STX COMMNO
  191.  INX
  192.  STX FNNO
  193.  JMP COPY08
  194. COPY00 JSR SCHECK
  195.  JSR DRCMD
  196.  LDA SYXMAP
  197.  AND #$55
  198.  BNE COPY02
  199.  LDX COMMPO
  200.  LDA CMDCHN,X
  201.  CMP #$2A
  202.  BNE COPY02
  203.  LDX #1
  204.  STX COMMNO
  205.  INX
  206.  STX FNNO
  207.  JMP COPY06
  208. COPY01 LDA #$30
  209.  JMP ERRD
  210. COPY02 LDA SYXMAP
  211.  AND #$D9
  212.  BNE COPY01
  213.  JMP COPY15
  214. COPY03 LDA #$3D
  215.  JSR SEARCH
  216.  BNE COPY05
  217. COPY04 LDA #$30
  218.  JMP ERRD
  219. COPY05 LDA CMDCHN,Y
  220.  JSR CHKDNS
  221.  BMI COPY04
  222.  STA FNTYPE+1
  223.  DEY
  224.  DEY
  225.  LDA CMDCHN,Y
  226.  JSR CHKDNS
  227.  BMI COPY04
  228.  CMP FNTYPE+1
  229.  BEQ COPY04
  230.  STA FNTYPE
  231.  RTS
  232. COPY06 LDA COMMPO+1
  233.  STA PNTA
  234.  LDY #$28
  235.  LDX CMDLEN
  236.  STY CMDLEN
  237. COPY07 DEY
  238.  DEX
  239.  LDA CMDCHN,X
  240.  STA CMDCHN,Y
  241.  CPX PNTA
  242.  BNE COPY07
  243.  STY COMMPO+1
  244. COPY08 JSR DSPIN
  245.  JSR COPY14
  246.  JSR FENT99
  247.  BPL COPY11
  248.  BMI COPY10
  249. COPY09 PLA
  250.  STA NXTDIR
  251.  PLA
  252.  STA COMMPO+1
  253.  PLA
  254.  STA ENDDIR
  255.  PLA
  256.  STA DIRCNT
  257.  PLA
  258.  STA ENTPOS
  259.  PLA
  260.  STA IFALL
  261.  PLA
  262.  STA ENTLOC
  263.  PLA
  264.  STA IFLAST
  265.  JSR COPY14
  266.  JSR FENT98
  267.  BPL COPY11
  268. COPY10 JMP CMDERR
  269. COPY11 LDA IFLAST
  270.  PHA
  271.  LDA ENTLOC
  272.  PHA
  273.  LDA IFALL
  274.  PHA
  275.  LDA ENTPOS
  276.  PHA
  277.  LDA DIRCNT
  278.  PHA
  279.  LDA ENDDIR
  280.  PHA
  281.  LDA COMMPO+1
  282.  PHA
  283.  LDA NXTDIR
  284.  PHA
  285.  JSR COPY12
  286.  LDA #1
  287.  STA COMMNO
  288.  STA FNNO
  289.  JSR FENTRY
  290.  LDA #1
  291.  STA COMMNO
  292.  LDA #2
  293.  STA FNNO
  294.  JSR COPY19
  295.  JMP COPY09
  296. COPY12 LDY #3
  297.  STY COMMPO
  298. COPY13 LDA (BPNT),Y
  299.  STA CMDCHN,Y
  300.  INY
  301.  CPY #19
  302.  BNE COPY13
  303.  RTS
  304. COPY14 LDA #0
  305.  STA IFDRV
  306.  STA JOKERS
  307.  STA JOKERS+1
  308.  LDA FNTYPE+1
  309.  AND #$01
  310.  STA DRVNO
  311.  ORA #$01
  312.  STA ENTSEC
  313.  LDA COMMPO+1
  314.  STA COMMPO
  315.  RTS
  316. COPY15 JSR FENTRY
  317.  LDA FNNO
  318.  CMP #3
  319.  BCC COPY18
  320.  LDA FNTYPE
  321.  CMP FNTYPE+1
  322.  BNE COPY18
  323.  LDA FNDPOS
  324.  CMP FNDPOS+1
  325.  BNE COPY18
  326.  JSR RENAM1
  327.  LDA #1
  328.  STA HELPA
  329.  JSR COPY24
  330.  JSR GFTYP
  331.  BEQ COPY16
  332.  CMP #2
  333.  BNE COPY17
  334. COPY16 LDA #$64
  335.  JSR ERRD
  336. COPY17 LDA #18
  337.  STA CHNLNO
  338.  LDA CHSTAT+17
  339.  STA CHSTAT+18
  340.  LDA #255
  341.  STA CHSTAT+17
  342.  JSR APPEND
  343.  LDX #2
  344.  JSR COPY20
  345.  JMP CMDERR
  346. COPY18 JSR COPY19
  347.  JMP CMDERR
  348. COPY19 JSR RENAM4
  349.  LDA FNTYPE
  350.  AND #$01
  351.  STA DRVNO
  352.  JSR WSYSOP
  353.  JSR FNSTO
  354.  LDX COMMNO
  355. COPY20 STX HELPA
  356.  JSR COPY24
  357.  LDA #$08
  358.  STA EOIACC
  359.  JMP COPY22
  360. COPY21 JSR SYSPUT
  361. COPY22 JSR SYSNXB
  362.  LDA #$80
  363.  JSR BITFTY
  364.  BEQ COPY21
  365.  JSR GFTYP
  366.  BEQ COPY23
  367.  JSR SYSPUT
  368. COPY23 LDX HELPA
  369.  INX
  370.  CPX FNNO
  371.  BCC COPY20
  372.  LDA #18
  373.  STA CHNLNO
  374.  JMP SCLOS4
  375. COPY24 LDX HELPA
  376.  LDA FNTYPE,X
  377.  AND #$01
  378.  STA DRVNO
  379.  LDA #18
  380.  STA TRACK
  381.  LDA FNDPOS,X
  382.  AND #$1F
  383.  STA SECTOR
  384.  JSR SYSOPN
  385.  LDX HELPA
  386.  LDA FNDPOS,X
  387.  AND #$E0
  388.  ORA #$02
  389.  JSR SETBPN
  390.  LDX HELPA
  391.  LDA FNTYPE,X
  392.  AND #$0E
  393.  LSR A
  394.  STA FILTYP
  395.  LDA #0
  396.  STA RLENGT
  397.  JSR PROPEN
  398.  LDY #1
  399.  JSR GFTYP
  400.  BEQ COPY25
  401.  INY
  402. COPY25 TYA
  403.  JMP SETBPN
  404. ;
  405. ; RENAME
  406. ;
  407. RENAME JSR DRCMD
  408.  LDA FNTYPE+1
  409.  AND #$01
  410.  STA FNTYPE+1
  411.  CMP FNTYPE
  412.  BEQ RENAM0
  413.  ORA #$80
  414. RENAM0 STA FNTYPE
  415.  JSR FENTRY
  416.  JSR RENAM4
  417.  LDA FNTYPE+1
  418.  AND #$01
  419.  STA DRVNO
  420.  LDA FNDPOS+1
  421.  PHA
  422.  AND #$1F
  423.  STA SECTOR
  424.  JSR R1STDB
  425.  PLA
  426.  AND #$E0
  427.  ORA #$05
  428.  JSR SETBPN
  429.  JSR BUFNO
  430.  TAY
  431.  LDX COMMPO
  432.  LDA #16
  433.  JSR STENTR
  434.  JSR W2NDDB
  435.  JMP CMDERR
  436. RENAM1 LDA FNTYPE+1
  437.  AND #$0E
  438.  LSR A
  439.  STA FILTYP
  440.  LDX FNNO
  441. RENAM2 DEX
  442.  CPX COMMNO
  443.  BCC RENAM3
  444.  LDA JOKERS,X
  445.  AND #$7F
  446.  BNE RENAM2
  447.  LDA #$62
  448.  JMP ERRD
  449. RENAM3 RTS
  450. RENAM4 JSR RENAM1
  451. RENAM5 LDA JOKERS,X
  452.  AND #$7F
  453.  BEQ RENAM6
  454.  LDA #$63
  455.  JMP ERRD
  456. RENAM6 DEX
  457.  BPL RENAM5
  458.  RTS
  459. ;
  460. ; VALIDATE A DISC
  461. ;
  462. VALDAT JSR FNDDRV
  463.  JSR INIT
  464.  JSR CLRBAM
  465.  LDA #0
  466.  STA ENTLOC
  467.  JSR DIROPN
  468.  BNE VALDA4
  469. VALDA0 LDA #0
  470.  STA SECTOR
  471.  LDA #18
  472.  STA TRACK
  473.  JSR VALDA5
  474.  LDA DRVNO
  475.  JSR COLLE0
  476.  JMP CMDERR
  477. VALDA1 INY
  478.  LDA (BPNT),Y
  479.  PHA
  480.  INY
  481.  LDA (BPNT),Y
  482.  PHA
  483.  LDY #19
  484.  LDA (BPNT),Y
  485.  BEQ VALDA2
  486.  STA TRACK
  487.  INY
  488.  LDA (BPNT),Y
  489.  STA SECTOR
  490.  JSR VALDA5
  491. VALDA2 PLA
  492.  STA SECTOR
  493.  PLA
  494.  STA TRACK
  495.  JSR VALDA5
  496. VALDA3 JSR DIROP4
  497.  BEQ VALDA0
  498. VALDA4 LDY #0
  499.  LDA (BPNT),Y
  500.  BMI VALDA1
  501.  JSR ERASE2
  502.  JMP VALDA3
  503. VALDA5 JSR BAMGET
  504.  JSR ALLOC
  505.  JSR SYSOPN
  506. VALDA6 LDA #0
  507.  JSR SETBPN
  508.  JSR CHRLD
  509.  STA TRACK
  510.  JSR CHRLD
  511.  STA SECTOR
  512.  LDA TRACK
  513.  BNE VALDA7
  514.  JMP CCLOSE
  515. VALDA7 JSR ALLOC
  516.  JSR RSBPNT
  517.  JMP VALDA6
  518. ;
  519. ; INITIALIZE
  520. ;
  521. FINIT JSR FNDDRV
  522.  JSR INIT
  523.  JMP CMDERR
  524. ;
  525. ; CHECK IF FILE IS OPEN
  526. ;
  527. IFOPEN LDX #0
  528. IFOPE0 STX PNTB
  529.  LDA CHSTAT,X
  530.  CMP #$FF
  531.  BNE IFOPE2
  532. IFOPE1 LDX PNTB
  533.  INX
  534.  CPX #16
  535.  BCC IFOPE0
  536.  RTS
  537. IFOPE2 STX PNTB
  538.  AND #$3F
  539.  TAY
  540.  LDA FTYPED,Y
  541.  AND #$01
  542.  STA PNTA+1
  543.  LDX DHELP
  544.  LDA FNTYPE,X
  545.  AND #$01
  546.  CMP PNTA+1
  547.  BNE IFOPE1
  548.  LDA ENTPSS,Y
  549.  CMP FNDPOS,X
  550.  BNE IFOPE1
  551.  CLC
  552.  RTS
  553. ;
  554. ; INITIALIZE
  555. ;
  556. INIT00 LDA #12
  557.  STA BUFFNO
  558.  LDX #18
  559.  STX TRACK
  560.  LDX #0
  561.  STX SECTOR
  562.  JSR DSCPR0 ;DISC PRMS
  563.  LDX BUFFNO
  564.  LDA #$B0 ;READ ID,T,S
  565.  JMP PFLCOM
  566. INIT JSR DCLOSE
  567.  JSR INIT00
  568.  LDA #0
  569.  STA DSCSEC,Y
  570.  LDA #$80
  571.  JMP PFLCOM
  572. .END
  573.