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.
|
* `S` and `D` arguments can be used to specify slot and drive.
|
||||||
* `BELL` - emits the standard Apple II beep
|
* `BELL` - emits the standard Apple II beep
|
||||||
* `BUZZ` - emits the ProDOS "nice little tone"
|
* `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
|
## Instructions For Developers
|
||||||
|
|
|
@ -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_CMD = $F0
|
||||||
FT_BAS = $FC
|
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
|
;;; BASIC.SYSTEM Global Page
|
||||||
|
|
||||||
|
|
|
@ -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