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

  1. ;
  2. ; EXECUTE DOS COMMAND OR OPEN FILE
  3. ;
  4. EXECMD JSR OKERR
  5.  LDA SADR
  6.  BPL EXECM0
  7.  AND #$0F
  8.  CMP #$0F
  9.  BEQ EXECM0
  10.  JMP OPENFN
  11. EXECM0 JSR PRESTR
  12.  LDA (CMDBP),Y
  13.  STA SCHAR
  14.  LDX #$0A
  15. EXECM1 LDA CMDCHR,X
  16.  CMP SCHAR
  17.  BEQ EXECM2
  18.  DEX
  19.  BPL EXECM1
  20.  LDA #$31 ;SYNTAX ERROR
  21.  JMP ERRD
  22. EXECM2 STX CMDNO
  23.  CPX #$08
  24.  BCC EXECM3
  25.  JSR SCHEC0
  26. EXECM3 LDA CMDNO
  27.  ASL A
  28.  TAX
  29.  LDA CMDADR,X
  30.  STA PNTA
  31.  LDA CMDADR+1,X
  32.  STA PNTA+1
  33.  JMP (PNTA)
  34. CMDCHR .BYTE 'IVDMBUPCRSN'
  35. CMDADR .WORD FINIT
  36.  .WORD VALDAT ;VALIDATE
  37.  .WORD DUPLIC ;DUPLICATE
  38.  .WORD MEMORY
  39.  .WORD BXCMD
  40.  .WORD USER
  41.  .WORD RECORD ;POINTER
  42.  .WORD COPY
  43.  .WORD RENAME
  44.  .WORD SCRATC
  45.  .WORD NEW
  46. ;
  47. ; FIND DRIVE # FROM COMMAND
  48. ;
  49. FNDDRV LDX #0
  50.  STX COMMPO
  51.  LDA #':'
  52.  JSR SEARCH
  53.  BEQ FNDDR0
  54.  DEY
  55.  DEY
  56.  STY COMMPO
  57. FNDDR0 LDA #0
  58.  STA SYXMAP
  59.  LDY COMMPO
  60. FNDDR2 LDA (CMDBP),Y
  61.  JSR CHKDNS
  62.  BPL FNDDR4
  63.  INY
  64.  CPY CMDLEN
  65.  BCS FNDDR3
  66.  LDY CMDLEN
  67.  DEY
  68.  BNE FNDDR2
  69. FNDDR3 DEC SYXMAP
  70. FNDDR4 LDA #0
  71.  STA DRVNO
  72.  RTS
  73. ;
  74. ; CHECK DRIVE # CHARACTER
  75. ;
  76. CHKDNS CMP #'0'
  77.  BEQ CHKDN0
  78.  CMP #'1'
  79.  BEQ NOTRDY
  80.  LDA #$80
  81. CHKDN0 RTS
  82. ;
  83. ; GET DRIVE # OF FNAMES
  84. ;
  85. DRIVFN LDA FNNO
  86.  STA COMMNO
  87.  LDA #1
  88.  STA FNNO
  89.  STA HELPA
  90. DRCMD LDX #0
  91. DRCMD1 STX FNCNT
  92.  LDA COMMPO,X
  93.  JSR DRCMD2
  94.  LDX FNCNT
  95.  STA COMMPO,X
  96.  TYA
  97.  STA FNTYPE,X
  98.  INX
  99.  CPX FNNO
  100.  BCC DRCMD1
  101.  RTS
  102. DRCMD2 TAX
  103.  LDA #':'
  104.  CMP CMDCHN+1,X
  105.  BEQ DRCMD6
  106.  CMP CMDCHN,X
  107.  BEQ DRCMD4
  108.  LDY #$80
  109.  BMI DRCMD5
  110. DRCMD4 INX
  111.  LDY #0
  112. DRCMD5 TXA
  113.  RTS
  114. DRCMD6 LDA CMDCHN,X
  115.  INX
  116.  CMP #'1'
  117.  BNE DRCMD4
  118. NOTRDY LDA #$74 ;DRIVE NOT READY
  119.  JMP ERRD
  120. ;
  121. ; FIND COLON FROM COMMAND
  122. ;
  123. COLON LDY #0
  124.  LDX #0
  125.  LDA #':'
  126.  JMP SEARCH
  127. ;
  128. ; SYNTAX CHECK FOR R,S OR N
  129. ;
  130. SCHEC0 JSR COLON
  131.  BNE SCHECK
  132. SCHEC1 LDA #$34 ;SYNTAX ERROR
  133.  JMP ERRD
  134. SCHECK DEY
  135.  DEY
  136.  STY COMMPO
  137.  TXA
  138.  BNE SCHEC1
  139. SCHE99 LDA #$3D
  140.  JSR SEARCH
  141.  TXA
  142.  BEQ SCHEC2
  143.  LDA #$40
  144. SCHEC2 ORA #$21
  145.  STA SYXMAP
  146.  INX
  147.  STX COMMNO
  148.  STX FNNO
  149.  LDA JOKER
  150.  BEQ SCHEC3
  151.  LDA #$80
  152.  ORA SYXMAP
  153.  STA SYXMAP
  154.  LDA #0
  155.  STA JOKER
  156. SCHEC3 TYA
  157.  BEQ SCHEC6
  158.  STA COMMPO,X
  159.  LDA COMMNO
  160.  STA HELPA
  161.  LDA #$8D
  162.  JSR SEARCH
  163.  INX
  164.  STX FNNO
  165.  DEX
  166.  LDA JOKER
  167.  BEQ SCHEC4
  168.  LDA #$08
  169. SCHEC4 CPX COMMNO
  170.  BEQ SCHEC5
  171.  ORA #$04
  172. SCHEC5 ORA #$03
  173.  EOR SYXMAP
  174.  STA SYXMAP
  175. SCHEC6 LDA SYXMAP
  176.  LDX CMDNO
  177.  AND SXMASK-7,X
  178.  BNE SCHEC7
  179.  RTS
  180. SCHEC7 STA IFOK
  181.  LDA #$30 ;SYNTAX ERROR
  182.  JMP ERRD
  183. SXMASK .BYTE $51,$DD,$1C,$9E,$1C,$11,$18,$1E,$23
  184. ;
  185. ; SEARCH FOR A CHARACTER
  186. ;
  187. SEARCH STA SCHAR
  188. SEARC0 CPY CMDLEN
  189.  BCS SEARC4
  190.  LDA (CMDBP),Y
  191.  INY
  192.  CMP SCHAR
  193.  BEQ SEARC5
  194.  CMP #'*'
  195.  BEQ SEARC1
  196.  CMP #'?'
  197.  BNE SEARC2
  198. SEARC1 INC JOKER
  199. SEARC2 CMP #','
  200.  BNE SEARC0
  201.  TYA
  202.  STA COMMPO+1,X
  203.  LDA JOKER
  204.  AND #$7F
  205.  BEQ SEARC3
  206.  LDA #$80
  207.  STA JOKERS,X
  208.  STA JOKER
  209. SEARC3 INX
  210.  CPX #4
  211.  BCC SEARC0
  212. SEARC4 LDY #0
  213. SEARC5 LDA CMDLEN
  214.  STA COMMPO+1,X
  215.  LDA JOKER
  216.  AND #$7F
  217.  BEQ SEARC6
  218.  LDA #$80
  219.  STA JOKERS,X
  220. SEARC6 TYA
  221.  RTS
  222. ;
  223. ; PREPARE STRING SPACE
  224. ;
  225. PRESTR LDY CMDBP
  226.  BEQ PREST1
  227.  DEY
  228.  BEQ PREST0
  229.  LDA CMDCHN,Y
  230.  CMP #13
  231.  BEQ PREST1
  232.  DEY
  233.  LDA CMDCHN,Y
  234.  CMP #13
  235.  BEQ PREST1
  236.  INY
  237. PREST0 INY
  238. PREST1 STY CMDLEN
  239.  CPY #SAINT-CMDCHN
  240.  LDY #255
  241.  BCC PRES99
  242.  STY CMDNO
  243.  LDA #$32 ;SYNTAX ERROR (TOO LONG)
  244.  JMP ERRD
  245. PRES99 LDY #0
  246.  TYA
  247.  STA CMDBP
  248.  STA RLENGT
  249.  STA FILTYP
  250.  STA FNDTYP
  251.  STA FNCNT
  252.  STA HELPA
  253.  STA COMMNO
  254.  STA FNNO
  255.  STA JOKER
  256.  STA IFOK
  257.  LDX #5
  258. PREST3 STA HELPA,X
  259.  STA RECIDX,X
  260.  STA FNDPOS+4,X
  261.  STA JOKERS-1,X
  262.  STA FNSEC-1,X
  263.  DEX
  264.  BNE PREST3
  265.  RTS
  266. ;
  267. ; CHANGE DRIVE
  268. ;
  269. CHNDRV LDA DRVNO
  270.  EOR #1
  271.  AND #1
  272.  STA DRVNO
  273.  RTS
  274. ;
  275. ; FIND FILE TYPE DEFINIER
  276. ;
  277. FTYPE LDY #0
  278.  LDA COMMNO
  279.  CMP FNNO
  280.  BEQ FTYPE1
  281.  DEC FNNO
  282.  LDY FNNO
  283.  LDA COMMPO,Y
  284.  TAY
  285.  LDA (CMDBP),Y
  286.  LDY #4
  287. FTYPE0 CMP TYPSTR,Y
  288.  BEQ FTYPE1
  289.  DEY
  290.  BNE FTYPE0
  291. FTYPE1 TYA
  292.  ASL A
  293.  STA FNDTYP
  294.  RTS
  295. ;
  296. ; SET DRIVE OF FILE
  297. ;
  298. SETDRV LDX #$FF
  299.  STX IFDRDY
  300.  LDA BUFFNO
  301.  JSR DSCPR0
  302.  RTS
  303. .END
  304.