mirror of
https://github.com/a2stuff/basys33.git
synced 2025-01-30 18:36:14 +00:00
initial snapshot
This commit is contained in:
commit
45cc31bd88
21
Makefile
Normal file
21
Makefile
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
CAFLAGS = --target apple2enh --list-bytes 0
|
||||
LDFLAGS = --config apple2-asm.cfg
|
||||
|
||||
TARGETS = total.replay.SYS
|
||||
|
||||
.PHONY: clean all
|
||||
all: $(TARGETS)
|
||||
|
||||
HEADERS = $(wildcard *.inc)
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
rm -f $(TARGETS)
|
||||
|
||||
%.o: %.s $(HEADERS)
|
||||
ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $<
|
||||
|
||||
%.SYS: %.o
|
||||
ld65 $(LDFLAGS) -o $@ $<
|
||||
xattr -wx prodos.AuxType '00 20' $@
|
102
prodos.inc
Normal file
102
prodos.inc
Normal file
@ -0,0 +1,102 @@
|
||||
;;; ------------------------------------------------------------
|
||||
;;; ProDOS MLI
|
||||
;;; ------------------------------------------------------------
|
||||
|
||||
;;; ------------------------------------------------------------
|
||||
;;; ProDOS Global Page
|
||||
|
||||
MLI := $BF00 ; Entry point
|
||||
DEVNUM := $BF30 ; Most recent accessed device
|
||||
DEVCNT := $BF31 ; Number of on-line devices minus 1
|
||||
DEVLST := $BF32 ; Up to 14 units
|
||||
BITMAP := $BF58
|
||||
BITMAP_SIZE := $18 ; Bits for pages $00 to $BF
|
||||
DATELO := $BF90 ; Date lo
|
||||
DATEHI := $BF91 ; Date hi
|
||||
TIMELO := $BF92 ; Time lo
|
||||
TIMEHI := $BF93 ; Time hi
|
||||
|
||||
|
||||
;;; ------------------------------------------------------------
|
||||
;;; MLI Calls
|
||||
|
||||
;;; Housekeeping Calls
|
||||
CREATE := $C0
|
||||
DESTROY := $C1
|
||||
RENAME := $C2
|
||||
SET_FILE_INFO := $C3
|
||||
GET_FILE_INFO := $C4
|
||||
ON_LINE := $C5
|
||||
SET_PREFIX := $C6
|
||||
GET_PREFIX := $C7
|
||||
|
||||
;;; Filing Calls
|
||||
OPEN := $C8
|
||||
NEWLINE := $C9
|
||||
READ := $CA
|
||||
WRITE := $CB
|
||||
CLOSE := $CC
|
||||
FLUSH := $CD
|
||||
SET_MARK := $CE
|
||||
GET_MARK := $CF
|
||||
SET_EOF := $D0
|
||||
GET_EOF := $D1
|
||||
SET_BUF := $D2
|
||||
GET_BUF := $D3
|
||||
|
||||
;;; System Calls
|
||||
GET_TIME := $82
|
||||
ALLOC_INTERRUPT := $40
|
||||
DEALLOC_INTERRUPT := $41
|
||||
QUIT := $65
|
||||
|
||||
;;; Direct Disk Access Commands
|
||||
READ_BLOCK := $80
|
||||
WRITE_BLOCK := $71
|
||||
|
||||
;;; ------------------------------------------------------------
|
||||
;;; File Types
|
||||
|
||||
FT_TYPELESS := $00
|
||||
FT_BAD := $01
|
||||
FT_TEXT := $04
|
||||
FT_BINARY := $06
|
||||
FT_DIRECTORY := $0F
|
||||
FT_SRC := $B0 ; IIgs system type; re-used?
|
||||
FT_BASIC := $FC
|
||||
FT_SYSTEM := $FF
|
||||
|
||||
|
||||
;;; ------------------------------------------------------------
|
||||
;;; Macros
|
||||
|
||||
.macro MLI_CALL op, addr
|
||||
jsr MLI
|
||||
.byte op
|
||||
.addr addr
|
||||
.endmacro
|
||||
|
||||
|
||||
;;; ------------------------------------------------------------
|
||||
;;; Structures
|
||||
|
||||
.scope DirectoryHeader
|
||||
entry_length := $23
|
||||
entries_per_block := $24
|
||||
file_count := $25
|
||||
|
||||
size := $2B
|
||||
.endscope
|
||||
|
||||
.scope FileEntry
|
||||
storage_type := $00 ; high nibble
|
||||
name_length := $00 ; low nibble
|
||||
file_name := $01
|
||||
file_type := $10
|
||||
access := $1E
|
||||
.endscope
|
||||
|
||||
.scope FileType
|
||||
Directory := $0F
|
||||
System := $FF
|
||||
.endscope
|
61
total.replay.s
Normal file
61
total.replay.s
Normal file
@ -0,0 +1,61 @@
|
||||
.setcpu "6502"
|
||||
|
||||
.include "opcodes.inc"
|
||||
.include "apple2.inc"
|
||||
.include "../a2d/inc/macros.inc"
|
||||
.include "../a2d/inc/apple2.inc"
|
||||
.include "../a2d/inc/prodos.inc"
|
||||
|
||||
|
||||
;; System files start at $2000
|
||||
.org $2000
|
||||
reloc = $1000
|
||||
|
||||
;;; Relocate down to $1000
|
||||
copy16 #rel_start, STARTLO
|
||||
copy16 #rel_end, ENDLO
|
||||
copy16 #reloc, DESTINATIONLO
|
||||
ldy #0
|
||||
jsr MOVE
|
||||
jmp reloc
|
||||
|
||||
|
||||
;;; Relocated routine
|
||||
rel_start:
|
||||
.pushorg reloc
|
||||
jmp run
|
||||
|
||||
fn: PASCAL_STRING "LAUNCHER.SYSTEM"
|
||||
prefix: PASCAL_STRING "/TOTAL.REPLAY"
|
||||
|
||||
DEFINE_SET_PREFIX_PARAMS set_prefix_params, prefix
|
||||
DEFINE_OPEN_PARAMS open_params, fn, $1C00
|
||||
DEFINE_READ_PARAMS read_params, $2000, $BEFF-$2000
|
||||
DEFINE_CLOSE_PARAMS close_params
|
||||
|
||||
DEFINE_QUIT_PARAMS quit_params
|
||||
run:
|
||||
MLI_CALL SET_PREFIX, set_prefix_params
|
||||
bcs quit
|
||||
MLI_CALL OPEN, open_params
|
||||
bcs quit
|
||||
lda open_params::ref_num
|
||||
sta read_params::ref_num
|
||||
sta close_params::ref_num
|
||||
MLI_CALL READ, read_params
|
||||
bcs quit
|
||||
MLI_CALL CLOSE, close_params
|
||||
|
||||
;; Disable ProDOS realtime clock
|
||||
lda MACHID
|
||||
and #%11111110
|
||||
sta MACHID
|
||||
lda #OPC_RTS
|
||||
sta DATETIME
|
||||
|
||||
jmp $2000
|
||||
|
||||
quit: MLI_CALL QUIT, quit_params
|
||||
|
||||
.poporg
|
||||
rel_end:
|
Loading…
x
Reference in New Issue
Block a user