|
@@ -27,9 +27,12 @@
|
|
|
;;; To auto-initialize this, we need a modified DOS that looks for
|
|
|
;;; additional ROM entry points (ABC800 has this, but not ABC80.)
|
|
|
|
|
|
+ .altmacro
|
|
|
+
|
|
|
#include "z80.inc"
|
|
|
#include "abc80.inc"
|
|
|
#include "auxram.inc"
|
|
|
+#include "ufddos.inc"
|
|
|
|
|
|
defc selcode=60 ; ABC-bus select code
|
|
|
|
|
@@ -56,6 +59,9 @@
|
|
|
;; PR: using raw protocol (not a chardev volume?)
|
|
|
defc raw_pr = 0
|
|
|
|
|
|
+ ;; XDx: device entries (secondary hard disk, not enough space in DOS)
|
|
|
+ defc xd_dev = 1
|
|
|
+
|
|
|
;; CMD routine if in IEC area?
|
|
|
defc have_cmd = LARGE && (ROMSTART == 0x7000)
|
|
|
if !have_cmd
|
|
@@ -666,8 +672,8 @@ prb_setup_buf:
|
|
|
push af
|
|
|
push bc
|
|
|
push hl
|
|
|
- call 65F4h ; Allocate buffer
|
|
|
- call 662Bh ; Initialize buffer pointers
|
|
|
+ call DOSALLOCBUF ; Allocate buffer
|
|
|
+ call DOSBUFINIT ; Initialize buffer pointers
|
|
|
pop hl
|
|
|
pop bc
|
|
|
pop af
|
|
@@ -679,7 +685,7 @@ prb_empty_buf: ; Returns with A=0, HL->buf
|
|
|
push af
|
|
|
ex de,hl
|
|
|
ld a,(ix+12)
|
|
|
- call 662Fh ; Returns with HL -> buffer
|
|
|
+ call DOSBUFREINIT ; Returns with HL -> buffer
|
|
|
ex de,hl
|
|
|
pop af
|
|
|
ret
|
|
@@ -1195,46 +1201,45 @@ e_cmd_space_overflow:
|
|
|
|
|
|
endif ; have_cmd
|
|
|
|
|
|
-
|
|
|
- defc need_device_list = console_dev | connul | raw_pr
|
|
|
-
|
|
|
- if need_device_list
|
|
|
-device_list:
|
|
|
+ _device_link = voldevs
|
|
|
+
|
|
|
+ .macro device name:req, jptbl:req
|
|
|
+ defw _device_link
|
|
|
+ _device_link = . - 2
|
|
|
+ defm \name
|
|
|
+ defw \jptbl
|
|
|
+ .endm
|
|
|
+
|
|
|
+ if xd_dev
|
|
|
+xd_device:
|
|
|
+ device "XD0", DOSJPTABLE
|
|
|
+ defb 0x14
|
|
|
+ device "XD1", DOSJPTABLE
|
|
|
+ defb 0x15
|
|
|
+ device "XD2", DOSJPTABLE
|
|
|
+ defb 0x16
|
|
|
+ device "XD3", DOSJPTABLE
|
|
|
+ endif
|
|
|
|
|
|
if console_dev
|
|
|
prc_device:
|
|
|
- if connul | raw_pr
|
|
|
- defw . + 7 ; Next entry follows
|
|
|
- else
|
|
|
- defw voldevs
|
|
|
- endif
|
|
|
- defm "PRC"
|
|
|
- defw prc_jptable
|
|
|
+ device "PRC", prc_jptable
|
|
|
endif
|
|
|
|
|
|
if connul
|
|
|
con_device:
|
|
|
- defw . + 7 ; Next entry follows
|
|
|
- defm "CON"
|
|
|
- defw con_jptable
|
|
|
+ device "CON", con_jptable
|
|
|
nul_device:
|
|
|
- if raw_pr
|
|
|
- defw . + 7 ; Next entry follows
|
|
|
- else
|
|
|
- defw voldevs
|
|
|
- endif
|
|
|
- defm "NUL"
|
|
|
- defw nul_jptable
|
|
|
+ device "NUL", nul_jptable
|
|
|
endif
|
|
|
|
|
|
if raw_pr
|
|
|
pr_device:
|
|
|
- defw voldevs
|
|
|
- defm "PR "
|
|
|
- defw pr_jptable
|
|
|
+ device "PR ", pr_jptable
|
|
|
endif
|
|
|
|
|
|
- endif
|
|
|
+ ;; The value to put in the BASIC device link pointer
|
|
|
+device_list = _device_link
|
|
|
|
|
|
;; Jump table for BASIC functions that are inconsistent
|
|
|
new_basic_jumps: ; Checksum 9913, 10042
|
|
@@ -1270,9 +1275,6 @@ __end:
|
|
|
|
|
|
section .bss
|
|
|
__bss:
|
|
|
- if !need_device_list
|
|
|
-device_list:
|
|
|
- endif
|
|
|
voldevs:
|
|
|
defs 7*MAX_VOLS ; Up to 32 volume device entries
|
|
|
errsp:
|