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