home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-11-06 | 5.8 KB | 229 lines | [04] ASCII Text (0x0000) |
- ;=======================================
- ;DIRECTORY NAVIGATOR
- ;
- ;
- ; ACTION ROUTINES
- ;=========================================
- MULTIPLE DFB $00
- ;
- UP LDY #1
- STY MULTIPLE
- UP1 JSR LOLITE
- UP2 DEC FNUMBER
- BPL UP0
- LDA NUMFILES
- SEC
- SBC #$01
- STA FNUMBER
- UP0 DEC MULTIPLE
- LDA MULTIPLE
- BNE UP2
- JSR HIGHLITE
- RTS
- ;
- ;
- DOWN LDY #1
- STY MULTIPLE
- DOWN1 JSR LOLITE
- DOWN2 INC FNUMBER
- LDA FNUMBER
- CMP NUMFILES
- BNE DOWN0
- LDA #$00
- STA FNUMBER
- DOWN0 DEC MULTIPLE
- LDA MULTIPLE
- BNE DOWN2
- JSR HIGHLITE
- RTS
- ;
- LEFT LDY #20 ;MOVE UP 20 FILENAMES - TO PREV COLUMN
- STY MULTIPLE
- CLV
- BVC UP1
- ;
- RIGHT LDY #20 ;DOWN 20 FILENAMES
- STY MULTIPLE
- CLV
- BVC DOWN1
- ;
- EXIT LDA #$01
- STA EXITFLAG
- RTS
- ;
- DOWNSUB JSR GETFADRS
- LDY #17
- LDA (FPTR),Y
- CMP #'D'
- BNE DOWNSUB0
- INY
- LDA (FPTR),Y
- CMP #'I'
- BNE DOWNSUB0
- INY
- LDA (FPTR),Y
- CMP #'R'
- BNE DOWNSUB0
- ;
- LDX PATHNAME ;GET LENGTH OF PATHNAME
- LDY #$02
- CMDLOOP1 LDA (FPTR),Y
- AND #$7F
- CMP #$20 ;REMOVE TRAILING BLANKS
- BEQ NEXTCHAR
- INX
- STA PATHNAME,X
- NEXTCHAR INY
- CPY #17
- BNE CMDLOOP1
- STX PATHNAME
- JSR MLI
- DFB $C6 ;SET PREFIX
- DW PPFX
- BCS MLIERR
- LDA #$01
- STA RUNFLAG
- RTS
- DOWNSUB0 LDA #$01 ;IF PRESSED RETURN BUT NOT DIR, EXIT TO BASIC
- STA EXITFLAG
- RTS
- ;
- ;
- UPSUB LDY #$04
- LDA DIRBUFR,Y
- AND #$F0
- CMP #$E0
- BNE UPSUB0 ;EXIT IF NOT A SUBDIRECTORY
- ;
- LDX PATHNAME ;GET LEN OF PREFIX STRING
- DEX
- FINDSLSH LDA PATHNAME,X
- ORA #$80 ;SET HI BIT FOR COMPARE
- CMP #'/'
- BEQ UPSUB1
- DEX
- BNE FINDSLSH
- BEQ UPSUB0 ;IF DON'T FIND SLASHES, EXIT
- ;
- UPSUB1 STX PATHNAME
- JSR MLI
- DFB $C6 ;SET PREFIX
- DW PPFX
- BCS MLIERR
- LDA #$01
- STA RUNFLAG
- UPSUB0 RTS
- ;
- MLIERR JSR $FDDA
- BRK
- PPFX DFB $01
- DW PATHNAME
- ;
- ;
- ;KEYBOARD CHARACTER INTERPRETATION TABLE
- ;========================================
- KEYTABL DFB 11,10,27,13 ;ASCII FOR: UP ARROW, DOWN ARROW, ESC,RETURN
- ASC '.' ;MOVE UP ONE DIR
- ASC '-' ;SMART RUN COMMAND
- ASC 'O' ;PLAY ONLY ONE PART
- DFB 08,21 ;LEFT & RIGHT ARROWS
- DFB 04 ;CTRL-D (BASIC PGM USES TO DELETE FILE)
- ;
- DFB $00 ;MARKS END OF KEY TABLE
- ;
- ACTIONS DW UP
- DW DOWN
- DW EXIT
- DW DOWNSUB
- DW UPSUB
- DW SMARTRUN
- DW EXIT ;BASIC PGM HANDLES O
- DW LEFT
- DW RIGHT
- DW EXIT
- ;=========================================
- ;
- PREFSTR DFB 22 ;22 BYTES= 7 + 15 BYTE FILE NAME
- ASC 'PREFIX '
- ;
- NAMELEN DFB $00
- XSAVE DFB $00
- YSAVE DFB $00
- HPOS DFB $00 ;CURRENT CURSOR POSITION
- VPOS DFB $00
- FNUMBER DFB $00 ;CURRENT FILE NUMBER LOOKING AT
- EXITFLAG DFB $00 ;SET BY ROUTINE IF NEEDS TO EXIT
- RUNFLAG DFB $00 ;SET BY ROUTINE IF NEEDS TO RERUN PROGRAM
- KEYPOS DFB $00 ;POSITION IN KEY TABLE
- ;
- FTYPES DFB $04
- ASC 'TXT'
- DFB $06
- ASC 'BIN'
- DFB $0F
- ASC 'DIR'
- DFB $19
- ASC 'ADB'
- DFB $1A
- ASC 'AWP'
- DFB $1B
- ASC 'ASP'
- DFB $D7
- ASC 'MID'
- DFB $F0
- ASC 'CMD'
- DFB $FC
- ASC 'BAS'
- DFB $FD
- ASC 'VAR'
- DFB $FF
- ASC 'SYS'
- DFB $00
- ;
- ;
- ;
- CMDBUFR EQU $0200
- BICOMM EQU $BE03 ;BI COMMAND HANDLER
- BIERROR EQU $BE0C ;PRINTS BI ERRORS
- ;
- ;
- ; SUBROUTINE TO COPY FILENAME INTO CMD BUFFER
- ; X=NEXT AVAILABLE POSITION IN CMD BUFFER
- ;
- COPYFNAM LDY #$02 ;SKIP LENGTH & LOCK FLAG
- GETFNAM LDA (FPTR),Y
- ORA #$80
- CMP #$A0
- BEQ FCPYDONE
- STA CMDBUFR,X
- INX ;MOVE TO NEXT SPOT IN BUFFER
- INY
- CPY #17
- BCC GETFNAM
- FCPYDONE RTS
- ;
- ;
- SMARTRUN JSR GETFADRS ;GET POINTER TO FILE AREA IN FPTR
- LDX #$00
- LDA #'-'
- ORA #$80
- STA CMDBUFR,X
- INX
- JSR COPYFNAM ;COPY FILENAME INTO COMMAND BUFFER
- ;
- LDA #$8D ;TERMINATE COMMAND WITH CR
- STA CMDBUFR,X
- JSR BICOMM ;EXECUTE COMMAND
- BNE SMRERR
- RTS
- SMRERR JSR BIERROR ;IF BI ERROR, PRINT MESSAGE AND STOP
- BRK
- ;
- ;
- EOF DFB $FF ;EOF MARKER
- ;
- ;ADJUST ORIGIN BELOW DEPENDING ON LENGTH OF CODE
- ;
- ORG ORIGIN+$800
- MLIBUFR DS $400
-