From 9ca2b9bfe9eae3b939889382222aec9bb9e9cbfc Mon Sep 17 00:00:00 2001 From: Ketmar Dark Date: Sat, 15 Aug 2020 12:43:30 +0300 Subject: [PATCH] 4x8 driver with "" prompt --- output_driver_4x8.zas | 64 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/output_driver_4x8.zas b/output_driver_4x8.zas index aa2141c..f2243df 100644 --- a/output_driver_4x8.zas +++ b/output_driver_4x8.zas @@ -1,4 +1,5 @@ emitXY defw 0 +emitBeforeScroll defb 1 emitInit: ld hl,#4000 @@ -8,6 +9,10 @@ emitInit: ldir ld a,64 ld (WIDTH),a + ld hl,0 + ld (emitXY),hl + ld a,1 + ld (emitBeforeScroll),a ret @@ -42,8 +47,7 @@ OSWRCH: ; need to scroll ld d,23 push de - ld b,24 - call #0E00 + call .doscroll pop de .noscroll: ld a,e @@ -97,6 +101,8 @@ OSWRCH: .scrmask equ $-1 ld c,a ld a,(hl) + nop +.inverse_cmd equ $-1 and #00 ; patched above .fontmask equ $-1 or c @@ -130,9 +136,61 @@ OSWRCH: ld h,23 ld (emitXY),hl ; scroll screen + call .doscroll + jr .exit + +.doscroll: + ld a,(emitBeforeScroll) + dec a + jr nz,.noprompt + ; show scroll prompt, wait a key + ld a,(.charcode) + push af + ld a,#2F ; CPL + ld (.inverse_cmd),a + ld hl,(emitXY) + push hl + ld hl,#173A + push hl + ld (emitXY),hl + ld hl,.scrollmsg +.msgloop: + ld a,(hl) + and #7f + call OSWRCH + bit 7,(hl) + inc hl + jr z,.msgloop +.waitrelease: + call #028E + inc e + jr nz,.waitrelease +.waitpress: + call #028E + inc e + jr z,.waitpress + ; clear message area + pop hl + ld (emitXY),hl + xor a + ld (.inverse_cmd),a + ld b,6 +.clrmsg: + ld a,' ' + call OSWRCH + djnz .clrmsg + pop hl + ld (emitXY),hl + pop af + ld (.charcode),a + ld a,23 +.noprompt: + ld (emitBeforeScroll),a ld b,24 call #0E00 - jr .exit + ret + +.scrollmsg: defx "" font4x8: ; space -- 2.11.4.GIT