mirror of
https://github.com/a2stuff/prodos-path.git
synced 2024-12-26 06:33:47 +00:00
Add HIDE / UNHIDE commands, to toggle the access "invisible" bit
This is used by the GS/OS Finder to conceal FINDER.DATA files. Documented in "Exploring GS/OS and ProDOS 8" by Gary B. Little. BASIC.SYSTEM's CAT/CATALOG are unaware of this, so the files are still listed. Note that the command is named "UNHIDE" rather than "SHOW" as that sounds like a command to display file contents or something.
This commit is contained in:
parent
8cb8f98793
commit
4bdb0808a2
@ -55,6 +55,7 @@ Sample commands included:
|
||||
* `S` and `D` arguments can be used to specify slot and drive.
|
||||
* `BELL` - emits the standard Apple II beep
|
||||
* `BUZZ` - emits the ProDOS "nice little tone"
|
||||
* `HIDE` / `UNHIDE` - sets / clears the "invisible" bit on a file, used in GS/OS Finder
|
||||
|
||||
|
||||
## Instructions For Developers
|
||||
|
68
hide.cmd.s
Normal file
68
hide.cmd.s
Normal file
@ -0,0 +1,68 @@
|
||||
;;; ============================================================
|
||||
;;;
|
||||
;;; HIDE - Mark a file as invisible
|
||||
;;;
|
||||
;;; Usage: HIDE filename[,S#][,D#]
|
||||
;;;
|
||||
;;; * filename can be relative or absolute path
|
||||
;;;
|
||||
;;; ============================================================
|
||||
|
||||
.include "apple2.inc"
|
||||
.include "more_apple2.inc"
|
||||
.include "prodos.inc"
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
.org $4000
|
||||
|
||||
;; NOTE: Assumes XLEN is set by PATH
|
||||
|
||||
;; Point BI's parser at the command execution routine.
|
||||
lda #<execute
|
||||
sta XTRNADDR
|
||||
lda #>execute
|
||||
sta XTRNADDR+1
|
||||
|
||||
;; Mark command as external (zero).
|
||||
lda #0
|
||||
sta XCNUM
|
||||
|
||||
;; Set accepted parameter flags
|
||||
|
||||
;; Filename
|
||||
lda #PBitsFlags::FN1
|
||||
sta PBITS
|
||||
|
||||
;; Slot & Drive handling
|
||||
lda #PBitsFlags::SD
|
||||
sta PBITS+1
|
||||
|
||||
clc ; Success (so far)
|
||||
rts1: rts ; Return to BASIC.SYSTEM
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
execute:
|
||||
;; Get the existing file info
|
||||
lda #$A
|
||||
sta SSGINFO
|
||||
lda #GET_FILE_INFO
|
||||
jsr GOSYSTEM
|
||||
bcs rts1
|
||||
|
||||
;;; --------------------------------------------------
|
||||
|
||||
;; Clear invisible bit
|
||||
lda FIACESS
|
||||
ora #ACCESS_I
|
||||
sta FIACESS
|
||||
|
||||
;; Set new file info
|
||||
lda #$7
|
||||
sta SSGINFO
|
||||
|
||||
lda #SET_FILE_INFO
|
||||
jmp GOSYSTEM
|
||||
|
||||
;;; --------------------------------------------------
|
@ -33,6 +33,13 @@ FT_DIR = $0F
|
||||
FT_CMD = $F0
|
||||
FT_BAS = $FC
|
||||
|
||||
ACCESS_D = %10000000 ; Access: Destroy-Enable
|
||||
ACCESS_RN = %01000000 ; Access: Rename-Enable
|
||||
ACCESS_B = %00100000 ; Access: Backup
|
||||
ACCESS_I = %00000100 ; Access: Invisible
|
||||
ACCESS_W = %00000010 ; Access: Write-Enable
|
||||
ACCESS_R = %00000001 ; Access: Read-Enable
|
||||
|
||||
;;; ============================================================
|
||||
;;; BASIC.SYSTEM Global Page
|
||||
|
||||
|
68
unhide.cmd.s
Normal file
68
unhide.cmd.s
Normal file
@ -0,0 +1,68 @@
|
||||
;;; ============================================================
|
||||
;;;
|
||||
;;; UNHIDE - Mark a file as not invisible
|
||||
;;;
|
||||
;;; Usage: UNHIDE filename[,S#][,D#]
|
||||
;;;
|
||||
;;; * filename can be relative or absolute path
|
||||
;;;
|
||||
;;; ============================================================
|
||||
|
||||
.include "apple2.inc"
|
||||
.include "more_apple2.inc"
|
||||
.include "prodos.inc"
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
.org $4000
|
||||
|
||||
;; NOTE: Assumes XLEN is set by PATH
|
||||
|
||||
;; Point BI's parser at the command execution routine.
|
||||
lda #<execute
|
||||
sta XTRNADDR
|
||||
lda #>execute
|
||||
sta XTRNADDR+1
|
||||
|
||||
;; Mark command as external (zero).
|
||||
lda #0
|
||||
sta XCNUM
|
||||
|
||||
;; Set accepted parameter flags
|
||||
|
||||
;; Filename
|
||||
lda #PBitsFlags::FN1
|
||||
sta PBITS
|
||||
|
||||
;; Slot & Drive handling
|
||||
lda #PBitsFlags::SD
|
||||
sta PBITS+1
|
||||
|
||||
clc ; Success (so far)
|
||||
rts1: rts ; Return to BASIC.SYSTEM
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
execute:
|
||||
;; Get the existing file info
|
||||
lda #$A
|
||||
sta SSGINFO
|
||||
lda #GET_FILE_INFO
|
||||
jsr GOSYSTEM
|
||||
bcs rts1
|
||||
|
||||
;;; --------------------------------------------------
|
||||
|
||||
;; Set invisible bit
|
||||
lda FIACESS
|
||||
and #<(~ACCESS_I)
|
||||
sta FIACESS
|
||||
|
||||
;; Set new file info
|
||||
lda #$7
|
||||
sta SSGINFO
|
||||
|
||||
lda #SET_FILE_INFO
|
||||
jmp GOSYSTEM
|
||||
|
||||
;;; --------------------------------------------------
|
Loading…
Reference in New Issue
Block a user