Add TOUCH command

This commit is contained in:
Joshua Bell 2021-05-02 11:16:11 -07:00
parent f124dd1bd5
commit 96b87c2180
8 changed files with 65 additions and 5 deletions

View File

@ -9,3 +9,4 @@ echo
hello hello
online online
type type
touch

View File

@ -44,6 +44,7 @@ Sample commands included:
* `ONLINE` - lists online volumes (volume name, slot and drive) * `ONLINE` - lists online volumes (volume name, slot and drive)
* `COPY` - copy a single file, e.g. `copy /path/to/file,dstfile` * `COPY` - copy a single file, e.g. `copy /path/to/file,dstfile`
* `TYPE` - show file contents (TXT, BAS, or BIN/other), e.g. `type filename` * `TYPE` - show file contents (TXT, BAS, or BIN/other), e.g. `type filename`
* `TOUCH` - apply current ProDOS date/time to a file's modification time, e.g. `touch filename`
* `DATE` - prints the current ProDOS date and time * `DATE` - prints the current ProDOS date and time
* `CHTYPE` - change the type/auxtype of a file, e.g. `chtype file,T$F1,A$1234` * `CHTYPE` - change the type/auxtype of a file, e.g. `chtype file,T$F1,A$1234`
* `T` (type) and `A` (auxtype) are optional. If neither is specified, current types are shown. * `T` (type) and `A` (auxtype) are optional. If neither is specified, current types are shown.

View File

@ -27,7 +27,6 @@
;; Point BI's parser at the command execution routine. ;; Point BI's parser at the command execution routine.
lda #<execute lda #<execute
sta XTRNADDR sta XTRNADDR
page_num2 := *+1 ; address needing updating
lda #>execute lda #>execute
sta XTRNADDR+1 sta XTRNADDR+1

View File

@ -24,7 +24,6 @@
;; Point BI's parser at the command execution routine. ;; Point BI's parser at the command execution routine.
lda #<execute lda #<execute
sta XTRNADDR sta XTRNADDR
page_num2 := *+1 ; address needing updating
lda #>execute lda #>execute
sta XTRNADDR+1 sta XTRNADDR+1

View File

@ -25,7 +25,6 @@
;; Point BI's parser at the command execution routine. ;; Point BI's parser at the command execution routine.
lda #<execute lda #<execute
sta XTRNADDR sta XTRNADDR
page_num2 := *+1 ; address needing updating
lda #>execute lda #>execute
sta XTRNADDR+1 sta XTRNADDR+1

View File

@ -21,7 +21,6 @@
;; Point BI's parser at the command execution routine. ;; Point BI's parser at the command execution routine.
lda #<execute lda #<execute
sta XTRNADDR sta XTRNADDR
page_num2 := *+1 ; address needing updating
lda #>execute lda #>execute
sta XTRNADDR+1 sta XTRNADDR+1

63
touch.cmd.s Normal file
View File

@ -0,0 +1,63 @@
;;; ============================================================
;;;
;;; TOUCH - Apply current ProDOS date/time stamp to file
;;;
;;; Usage: TOUCH filename[,S#][,D#]
;;;
;;; * filename can be relative or absolute path
;;;
;;; ============================================================
.include "apple2.inc"
.include "more_apple2.inc"
.include "prodos.inc"
;;; ============================================================
.org $4000
;; 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
;; Apply time/date stamp
ldx #3
: lda DATE,x
sta FIMDATE,x
dex
bpl :-
;; Set new file info
lda #$7
sta SSGINFO
lda #SET_FILE_INFO
jmp GOSYSTEM

View File

@ -21,7 +21,6 @@
;; Point BI's parser at the command execution routine. ;; Point BI's parser at the command execution routine.
lda #<execute lda #<execute
sta XTRNADDR sta XTRNADDR
page_num2 := *+1 ; address needing updating
lda #>execute lda #>execute
sta XTRNADDR+1 sta XTRNADDR+1