home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / PROJECT / SOURCE / DIR.SC4 < prev    next >
Encoding:
Text File  |  1992-11-06  |  5.8 KB  |  229 lines  |  [04] ASCII Text (0x0000)

  1. ;=======================================
  2. ;DIRECTORY NAVIGATOR
  3. ;
  4. ;
  5. ; ACTION ROUTINES
  6. ;=========================================
  7. MULTIPLE DFB       $00
  8. ;
  9. UP       LDY       #1
  10.          STY       MULTIPLE
  11. UP1      JSR       LOLITE
  12. UP2      DEC       FNUMBER
  13.          BPL       UP0
  14.          LDA       NUMFILES
  15.          SEC
  16.          SBC       #$01
  17.          STA       FNUMBER
  18. UP0      DEC       MULTIPLE
  19.          LDA       MULTIPLE
  20.          BNE       UP2
  21.          JSR       HIGHLITE
  22.          RTS
  23. ;
  24. ;
  25. DOWN     LDY       #1
  26.          STY       MULTIPLE
  27. DOWN1    JSR       LOLITE
  28. DOWN2    INC       FNUMBER
  29.          LDA       FNUMBER
  30.          CMP       NUMFILES
  31.          BNE       DOWN0
  32.          LDA       #$00
  33.          STA       FNUMBER
  34. DOWN0    DEC       MULTIPLE
  35.          LDA       MULTIPLE
  36.          BNE       DOWN2
  37.          JSR       HIGHLITE
  38.          RTS
  39. ;
  40. LEFT     LDY       #20       ;MOVE UP 20 FILENAMES - TO PREV COLUMN
  41.          STY       MULTIPLE
  42.          CLV
  43.          BVC       UP1
  44. ;
  45. RIGHT    LDY       #20       ;DOWN 20 FILENAMES
  46.          STY       MULTIPLE
  47.          CLV
  48.          BVC       DOWN1
  49. ;
  50. EXIT     LDA       #$01
  51.          STA       EXITFLAG
  52.          RTS
  53. ;
  54. DOWNSUB  JSR       GETFADRS
  55.          LDY       #17
  56.          LDA       (FPTR),Y
  57.          CMP       #'D'
  58.          BNE       DOWNSUB0
  59.          INY
  60.          LDA       (FPTR),Y
  61.          CMP       #'I'
  62.          BNE       DOWNSUB0
  63.          INY
  64.          LDA       (FPTR),Y
  65.          CMP       #'R'
  66.          BNE       DOWNSUB0
  67. ;
  68.          LDX       PATHNAME            ;GET LENGTH OF PATHNAME
  69.          LDY       #$02
  70. CMDLOOP1 LDA       (FPTR),Y
  71.          AND       #$7F
  72.          CMP       #$20                ;REMOVE TRAILING BLANKS
  73.          BEQ       NEXTCHAR
  74.          INX
  75.          STA       PATHNAME,X
  76. NEXTCHAR INY
  77.          CPY       #17
  78.          BNE       CMDLOOP1
  79.          STX       PATHNAME
  80.          JSR       MLI
  81.          DFB       $C6       ;SET PREFIX
  82.          DW        PPFX
  83.          BCS       MLIERR
  84.          LDA       #$01
  85.          STA       RUNFLAG
  86.          RTS
  87. DOWNSUB0 LDA       #$01      ;IF PRESSED RETURN BUT NOT DIR, EXIT TO BASIC
  88.          STA       EXITFLAG
  89.          RTS
  90. ;
  91. ;
  92. UPSUB    LDY       #$04
  93.          LDA       DIRBUFR,Y
  94.          AND       #$F0
  95.          CMP       #$E0
  96.          BNE       UPSUB0    ;EXIT IF NOT A SUBDIRECTORY
  97. ;
  98.          LDX       PATHNAME    ;GET LEN OF PREFIX STRING
  99.          DEX
  100. FINDSLSH LDA       PATHNAME,X
  101.          ORA       #$80                ;SET HI BIT FOR COMPARE
  102.          CMP       #'/'
  103.          BEQ       UPSUB1
  104.          DEX
  105.          BNE       FINDSLSH
  106.          BEQ       UPSUB0    ;IF DON'T FIND SLASHES, EXIT
  107. ;
  108. UPSUB1   STX       PATHNAME
  109.          JSR       MLI
  110.          DFB       $C6       ;SET PREFIX
  111.          DW        PPFX
  112.          BCS       MLIERR
  113.          LDA       #$01
  114.          STA       RUNFLAG
  115. UPSUB0   RTS
  116. ;
  117. MLIERR   JSR       $FDDA
  118.          BRK
  119. PPFX     DFB       $01
  120.          DW        PATHNAME
  121. ;
  122. ;
  123. ;KEYBOARD CHARACTER INTERPRETATION TABLE
  124. ;========================================
  125. KEYTABL  DFB       11,10,27,13  ;ASCII FOR: UP ARROW, DOWN ARROW, ESC,RETURN
  126.          ASC       '.'       ;MOVE UP ONE DIR
  127.          ASC       '-'       ;SMART RUN COMMAND
  128.          ASC       'O'       ;PLAY ONLY ONE PART
  129.          DFB       08,21     ;LEFT & RIGHT ARROWS
  130.          DFB       04        ;CTRL-D   (BASIC PGM USES TO DELETE FILE)
  131. ;
  132.          DFB       $00       ;MARKS END OF KEY TABLE
  133. ;
  134. ACTIONS  DW        UP
  135.          DW        DOWN
  136.          DW        EXIT
  137.          DW        DOWNSUB
  138.          DW        UPSUB
  139.          DW        SMARTRUN
  140.          DW        EXIT      ;BASIC PGM HANDLES O
  141.          DW        LEFT
  142.          DW        RIGHT
  143.          DW        EXIT
  144. ;=========================================
  145. ;
  146. PREFSTR  DFB       22        ;22 BYTES= 7 + 15 BYTE FILE NAME 
  147.          ASC       'PREFIX '
  148. ;
  149. NAMELEN  DFB       $00
  150. XSAVE    DFB       $00
  151. YSAVE    DFB       $00
  152. HPOS     DFB       $00       ;CURRENT CURSOR POSITION
  153. VPOS     DFB       $00
  154. FNUMBER  DFB       $00       ;CURRENT FILE NUMBER LOOKING AT
  155. EXITFLAG DFB       $00       ;SET BY ROUTINE IF NEEDS TO EXIT
  156. RUNFLAG  DFB       $00       ;SET BY ROUTINE IF NEEDS TO RERUN PROGRAM
  157. KEYPOS   DFB       $00       ;POSITION IN KEY TABLE
  158. ;
  159. FTYPES   DFB       $04
  160.          ASC       'TXT'
  161.          DFB       $06
  162.          ASC       'BIN'
  163.          DFB       $0F
  164.          ASC       'DIR'
  165.          DFB       $19
  166.          ASC       'ADB'
  167.          DFB       $1A
  168.          ASC       'AWP'
  169.          DFB       $1B
  170.          ASC       'ASP'
  171.          DFB       $D7
  172.          ASC       'MID'
  173.          DFB       $F0
  174.          ASC       'CMD'
  175.          DFB       $FC
  176.          ASC       'BAS'
  177.          DFB       $FD
  178.          ASC       'VAR'
  179.          DFB       $FF
  180.          ASC       'SYS'
  181.          DFB       $00
  182. ;
  183. ;
  184. ;
  185. CMDBUFR  EQU       $0200
  186. BICOMM   EQU       $BE03     ;BI COMMAND HANDLER
  187. BIERROR  EQU       $BE0C     ;PRINTS BI ERRORS
  188. ;
  189. ;
  190. ; SUBROUTINE TO COPY FILENAME INTO CMD BUFFER
  191. ; X=NEXT AVAILABLE POSITION IN CMD BUFFER
  192. ;
  193. COPYFNAM LDY       #$02      ;SKIP LENGTH & LOCK FLAG
  194. GETFNAM  LDA       (FPTR),Y
  195.          ORA       #$80
  196.          CMP       #$A0
  197.          BEQ       FCPYDONE
  198.          STA       CMDBUFR,X
  199.          INX                 ;MOVE TO NEXT SPOT IN BUFFER
  200.          INY
  201.          CPY       #17
  202.          BCC       GETFNAM
  203. FCPYDONE RTS
  204. ;
  205. ;
  206. SMARTRUN JSR       GETFADRS  ;GET POINTER TO FILE AREA IN FPTR
  207.          LDX       #$00
  208.          LDA       #'-'
  209.          ORA       #$80
  210.          STA       CMDBUFR,X
  211.          INX
  212.          JSR       COPYFNAM  ;COPY FILENAME INTO COMMAND BUFFER
  213. ;
  214.          LDA       #$8D      ;TERMINATE COMMAND WITH CR
  215.          STA       CMDBUFR,X
  216.          JSR       BICOMM    ;EXECUTE COMMAND
  217.          BNE       SMRERR
  218.          RTS
  219. SMRERR   JSR       BIERROR    ;IF BI ERROR, PRINT MESSAGE AND STOP
  220.          BRK
  221. ;
  222. ;
  223. EOF      DFB  $FF            ;EOF MARKER
  224. ;
  225. ;ADJUST ORIGIN BELOW DEPENDING ON LENGTH OF CODE
  226. ;
  227.          ORG  ORIGIN+$800
  228. MLIBUFR  DS   $400
  229.