summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2019-05-17 10:01:38 +0200
committerLeo C2019-05-17 10:01:38 +0200
commitefc2486ea0340c32c372f5565a48eea068687cac (patch)
tree7083baf37d2332763c2fea196d17d6c735917ce3
parent51e6b03ccac806251df3586d47ffd2155b30402a (diff)
downloadddt180-efc2486ea0340c32c372f5565a48eea068687cac.zip
Convert relocater to an user command. WIP
-rw-r--r--ddt180.z80145
1 files changed, 74 insertions, 71 deletions
diff --git a/ddt180.z80 b/ddt180.z80
index c4caedf..81b68b4 100644
--- a/ddt180.z80
+++ b/ddt180.z80
@@ -6,24 +6,82 @@
; - Use Digital Research Link-80 to generate a .PRL file (op switch).
; - Cut the .PRL header (first 256 byte) end rename the result to DDTZ.COM.
-;-------------------------------------------------------------------------------
-; Relocation loader
-;
TPA equ 0100h
+
cseg
- .phase TPA
+ldr_start:
+ LD SP,stack
+
+; LD DE,signon
+; LD C,BDOS_PSTR
+; CALL BDOS
+
+ ld hl,(1) ;wboot addr
+ ld de,?const
+ ld b,3
+vini_l:
+ inc hl
+ inc hl
+ inc hl
+ ex de,hl
+ inc hl
+ ld (hl),e
+ inc hl
+ ld (hl),d
+ inc hl
+ ex de,hl
+ djnz vini_l
+
+signon:
+ call pstr_inl
+ db 'DDTZ/180'
+ db ' - Version '
+ maclib version.inc
+ defvers
+ dc CR,LF
- LD SP,ldr_end+(stack-ddtz_base)
- LD DE,signon
- LD C,BDOS_PSTR
- CALL BDOS
+; ld sp,stack
+; exx
+; ld de,ddtz_base
+; call cp_hl_de
+; jr c,l0079h
+; ex de,hl
+;l0079h:
+; ld de,TPA
+;l007ch:
+; dec hl
+; ld (hl),000h
+; ld a,h
+; sub d
+; ld b,a
+; ld a,l
+; sub e
+; or b
+; jr nz,l007ch
- LD HL,ldr_end+ddtz_size ;start of reloc bitmap
+ ld a,i
+ ld (reg.i),a
+ ld a,0f3h
+ jp po,l0093h
+ ld a,0fbh
+l0093h:
+ ld (reg.iff),a
+ call di_or_ei
+ ld hl,ddtz_base
+ ld l,000h
+ ld (reg_sp),hl
+
+ jp mainloop
+
+;-------------------------------------------------------------------------------
+; Relocation loader
+;
+ LD HL,ddtz_end ;start of reloc bitmap
ld bc,0108h ;init bit counter
EXX
LD HL,(BDOS+1)
- LD (ldr_end+1),HL
+ LD (ddtz_base+1),HL
LD BC,ddtz_size-1
LD D,B
LD E,0FFH
@@ -62,8 +120,11 @@ reloc_nl:
ADC A,D
LD (HL),A
reloc_next:
- cpi
- jp pe,reloc_lp
+ inc hl
+ dec bc
+ ld a,b
+ or c
+ jr nz,reloc_lp
dec hl
POP BC
@@ -77,16 +138,9 @@ reloc_next:
ADD HL,DE
JP (HL)
-signon:
- db 'DDTZ/180'
- db ' - Version '
- maclib version.inc
- defvers
- db CR,LF,'$'
ldr_end:
-ldr_size equ $ - TPA
+ldr_size equ $ - ldr_start
- .dephase
;-------------------------------------------------------------------------------
; DDT/Z core
;
@@ -162,54 +216,6 @@ cmd_rpt:dw mainloop
conbuf:
db CONBUF_SIZE
- ld sp,stack
- exx
- ld de,ddtz_base
- call cp_hl_de
- jr c,l0079h
- ex de,hl
-l0079h:
- ld de,TPA
-l007ch:
- dec hl
- ld (hl),000h
- ld a,h
- sub d
- ld b,a
- ld a,l
- sub e
- or b
- jr nz,l007ch
- ld a,i
- ld (reg.i),a
- ld a,0f3h
- jp po,l0093h
- ld a,0fbh
-l0093h:
- ld (reg.iff),a
- call di_or_ei
- ld hl,ddtz_base
- ld l,000h
- ld (reg_sp),hl
-
- ld hl,(1) ;wboot addr
- ld de,?const
- ld b,6
-vini_l:
- inc hl
- inc hl
- inc hl
- ex de,hl
- inc hl
- ld (hl),e
- inc hl
- ld (hl),d
- inc hl
- ex de,hl
- djnz vini_l
-
- jr mainloop
-
ds CONBUF_SIZE + 3 - ($ - conbuf)
;-------------------------------------------------------------------------------
@@ -217,9 +223,6 @@ vini_l:
?const: jp 0 ; return console input status
?conin: jp 0 ; return console input character
?cono: jp 0 ; send console output character
-?list: jp 0 ; send list output character
-?auxo: jp 0 ; send auxiliary output character
-?auxi: jp 0 ; return auxiliary input character
CMDTAB:
dw ERROR ;cmd_@ ;examine/substitute the displacement register @