Skip to content

Commit bbf2d36

Browse files
committed
Bugfix: do not scroll if AT is used
When doing PRINT AT 23,31; "X"; and later PRINT AT 0, 0; "X" the screen should not scroll. Fixed.
1 parent 30a5e71 commit bbf2d36

1 file changed

Lines changed: 18 additions & 17 deletions

File tree

library-asm/print.asm

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@ __NO_SCROLL:
8282
ld hl, (SCREEN_ADDR)
8383

8484
ld a, d
85-
ld c, a ; Saves it for later
85+
ld c, a ; Saves it for later
8686
8787
and 0F8h ; Masks 3 lower bit ; zy
8888
ld d, a
8989

90-
ld a, c ; Recovers it
90+
ld a, c ; Recovers it
9191
and 07h ; MOD 7 ; y1
9292
rrca
9393
rrca
@@ -125,9 +125,9 @@ __SRCADDR:
125125
ld bc, (CHARS)
126126

127127
__PRGRAPH0:
128-
add a, a ; A = a * 2 (since a < 80h) ; Thanks to Metalbrain at http://foro.speccy.org
128+
add a, a ; A = a * 2 (since a < 80h) ; Thanks to Metalbrain at http://foro.speccy.org
129129
ld l, a
130-
ld h, 0 ; HL = a * 2 (accumulator)
130+
ld h, 0 ; HL = a * 2 (accumulator)
131131
add hl, hl
132132
add hl, hl ; HL = a * 8
133133
add hl, bc ; HL = CHARS address
@@ -142,20 +142,20 @@ __PRGRAPH:
142142
__PRCHAR:
143143
ld a, (de) ; DE *must* be ALWAYS source, and HL destiny
144144

145-
PRINT_MODE: ; Which operation is used to write on the screen
145+
PRINT_MODE: ; Which operation is used to write on the screen
146146
; Set it with:
147147
; LD A, <OPERATION>
148148
; LD (PRINT_MODE), A
149149
;
150150
; Available opertions:
151-
; NORMAL: 0h --> NOP ; OVER 0
152-
; XOR : AEh --> XOR (HL) ; OVER 1
153-
; OR : B6h --> OR (HL) ; PUTSPRITE
154-
; AND : A6h --> AND (HL) ; PUTMASK
155-
nop ;
151+
; NORMAL : 0h --> NOP ; OVER 0
152+
; XOR : AEh --> XOR (HL) ; OVER 1
153+
; OR : B6h --> OR (HL) ; PUTSPRITE
154+
; AND : A6h --> AND (HL) ; PUTMASK
155+
nop ;
156156

157-
INVERSE_MODE: ; 00 -> NOP -> INVERSE 0
158-
nop ; 2F -> CPL -> INVERSE 1
157+
INVERSE_MODE: ; 00 -> NOP -> INVERSE 0
158+
nop ; 2F -> CPL -> INVERSE 1
159159

160160
ld (hl), a
161161

@@ -449,7 +449,7 @@ LOOP:
449449
ret
450450
ENDP
451451

452-
PRINT_AT: ; CHanges cursor to ROW, COL
452+
PRINT_AT: ; Changes cursor to ROW, COL
453453
; COL in A register
454454
; ROW in stack
455455

@@ -460,7 +460,8 @@ PRINT_AT: ; CHanges cursor to ROW, COL
460460

461461
call __IN_SCREEN
462462
ret nc ; Return if out of screen
463-
463+
ld hl, __TVFLAGS
464+
res 1, (hl)
464465
jp __SAVE_S_POSN
465466

466467
LOCAL __PRINT_COM
@@ -498,16 +499,16 @@ __PRINT_TABLE: ; Jump table for 0 .. 22 codes
498499
DW __PRINT_NOP ; 11
499500
DW __PRINT_NOP ; 12
500501
DW __PRINT_0Dh ; 13
501-
DW __PRINT_BOLD ; 14
502+
DW __PRINT_BOLD ; 14
502503
DW __PRINT_ITA ; 15
503504
DW __PRINT_INK ; 16
504505
DW __PRINT_PAP ; 17
505506
DW __PRINT_FLA ; 18
506507
DW __PRINT_BRI ; 19
507508
DW __PRINT_INV ; 20
508509
DW __PRINT_OVR ; 21
509-
DW __PRINT_AT ; 22 AT
510-
DW __PRINT_TAB ; 23 TAB
510+
DW __PRINT_AT ; 22 AT
511+
DW __PRINT_TAB ; 23 TAB
511512

512513
ENDP
513514

0 commit comments

Comments
 (0)