initial commit

This commit is contained in:
Peter Ferrie 2016-11-29 16:34:48 -08:00
parent fb39db5503
commit da6232ca8d
3 changed files with 109 additions and 0 deletions

BIN
directi-dos.zip Normal file

Binary file not shown.

107
fstbt.s Normal file
View File

@ -0,0 +1,107 @@
;fast boot-loader in one sector
;"special delivery" version for Directi-DOS
;copyright (c) Peter Ferrie 2016
;thanks to 4am for inspiration and testing
;assemble using ACME
!cpu 6502
!to "fstbt",plain
*=$800
!byte 1
tay ;A is last read sector+1 on entry
lda $C081 ;bank in ROM while leaving RAM write-enabled if it was before
;check array before checking sector number
;allows us to avoid a redundant seek if all slots are full in a track,
;and then the list ends
incindex
inc adrindex + 1 ;select next address
adrindex
lda adrtable - 1 ;15 entries in first row, 16 entries thereafter
sta $4FB ;set 80-column state (final store is an #$FF to disable it)
cmp #$FF
beq jmpoep ;#$C0 means end of data
sta $27 ;set high part of address
;2, 4, 6, 8, $0A, $0C, $0E
;because PROM increments by one itself
;and is too slow to read sectors in purely incremental order
;so we offer every other sector for read candidates
iny
cpy #$10
bcc setsector ;cases 1-$0F
beq sector1 ;finished with $0E
;next should be 1 for 1, 3, 5, 7... sequence
;finished with $0F, now we are $11, so 16 sectors done
jsr seek ;returns A=0
;back to 0
tay
!byte $2C ;mask LDY #1
sector1
ldy #1
setsector
sty $3D ;set sector
iny ;prepare to be next sector in case of unallocated sector
lda $27
beq incindex ;empty slot, back to the top
;convert slot to PROM address
txa
lsr
lsr
lsr
lsr
tay
ora #$C0
pha
lda #$5B ;read-1
pha
lda #2
sta $478, y ;save current phase for DOS use when we exit
lda $C083
lda $C083 ;write-enable RAM and bank it in so read can decode
rts ;return to PROM
seek
inc $41 ;next track
asl $40 ;carry clear, phase off
jsr seek1 ;returns carry set, not useful
clc ;carry clear, phase off
seek1
jsr delay ;returns with carry set, phase on
inc $40 ;next phase
delay
lda $40
and #3
rol
ora $2B ;merge in slot
tay
lda $C080, y
lda #$30
jmp $FCA8 ;common delay for all phases
jmpoep
jsr $FE89 ;rehook keyboard (needed particularly after PR#)
jsr $FE93 ;rehook video
jsr $FB2F ;text mode
sta $C00C
sta $C00E ;clear 80-column mode
lda $C083 ;bank in our RAM, write-enabled
jmp $D000 ;jump to unpacker
adrtable
!byte $dd,$dc,$db,$da,$d9,$d8,$d7,$d6,$d5,$d4,$d3,$d2,$d1,$d0,$de
!byte $df,$ed,$ec,$eb,$ea,$e9,$e8,$e7,$e6,$e5,$e4,$e3,$e2,$e1,$e0,$ee
!byte $FF ;end of list

2
readme.md Normal file
View File

@ -0,0 +1,2 @@
This is Diversi-DOS for the Apple II, crammed into two tracks, and loading directly into the Language Card.<br>
Powered by the <a href="https://github.com/peterferrie/standard-delivery">Standard Delivery</a> loader, and <a href="http://pferrie.host22.com/misc/aplibunp.zip">aPLib</a> compression.