Skip to content

Commit 2489ed4

Browse files
authored
Merge pull request #620 from boriel/fix/print_chr_22
Fix/print chr 22
2 parents 6859d68 + 99ea5b1 commit 2489ed4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1546
-1809
lines changed

src/arch/zx48k/library-asm/print.asm

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -232,20 +232,20 @@ __PRINT_TAB:
232232

233233
__PRINT_TAB1:
234234
ld (MEM0), a
235-
exx
236235
ld hl, __PRINT_TAB2
237236
jr __PRINT_SET_STATE
238237

239238
__PRINT_TAB2:
240239
ld a, (MEM0) ; Load tab code (ignore the current one)
241-
push hl
242-
push de
243-
push bc
244240
ld hl, __PRINT_START
245241
ld (PRINT_JUMP_STATE), hl
242+
exx
243+
push hl
244+
push bc
245+
push de
246246
call PRINT_TAB
247-
pop bc
248247
pop de
248+
pop bc
249249
pop hl
250250
ret
251251

@@ -264,6 +264,7 @@ __PRINT_SET_STATE:
264264

265265
__PRINT_AT1: ; Jumps here if waiting for 1st parameter
266266
ld hl, (S_POSN)
267+
ld h, a
267268
ld a, SCR_ROWS
268269
sub h
269270
ld (S_POSN + 1), a
@@ -272,13 +273,10 @@ __PRINT_AT1: ; Jumps here if waiting for 1st parameter
272273
jr __PRINT_SET_STATE
273274

274275
__PRINT_AT2:
275-
ld hl, __PRINT_START
276-
ld (PRINT_JUMP_STATE), hl ; Saves next entry call
277-
ld hl, (S_POSN)
278-
ld a, SCR_COLS
279-
sub l
280-
ld l, a
281-
jr __PRINT_EOL_END
276+
call __LOAD_S_POSN
277+
ld e, a
278+
call __SAVE_S_POSN
279+
jr __PRINT_RESTART
282280

283281
__PRINT_DEL:
284282
call __LOAD_S_POSN ; Gets current screen position
@@ -498,6 +496,8 @@ PRINT_COMMA:
498496
add a, 16
499497

500498
PRINT_TAB:
499+
; Tabulates the number of spaces in A register
500+
; If the current cursor position is already A, does nothing
501501
PROC
502502
LOCAL LOOP
503503

@@ -509,11 +509,7 @@ PRINT_TAB:
509509
ld b, a
510510
LOOP:
511511
ld a, ' '
512-
push bc
513-
exx
514512
call __PRINTCHAR
515-
exx
516-
pop bc
517513
djnz LOOP
518514
ret
519515
ENDP

src/arch/zxnext/library-asm/print.asm

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -232,20 +232,20 @@ __PRINT_TAB:
232232

233233
__PRINT_TAB1:
234234
ld (MEM0), a
235-
exx
236235
ld hl, __PRINT_TAB2
237236
jr __PRINT_SET_STATE
238237

239238
__PRINT_TAB2:
240239
ld a, (MEM0) ; Load tab code (ignore the current one)
241-
push hl
242-
push de
243-
push bc
244240
ld hl, __PRINT_START
245241
ld (PRINT_JUMP_STATE), hl
242+
exx
243+
push hl
244+
push bc
245+
push de
246246
call PRINT_TAB
247-
pop bc
248247
pop de
248+
pop bc
249249
pop hl
250250
ret
251251

@@ -264,6 +264,7 @@ __PRINT_SET_STATE:
264264

265265
__PRINT_AT1: ; Jumps here if waiting for 1st parameter
266266
ld hl, (S_POSN)
267+
ld h, a
267268
ld a, SCR_ROWS
268269
sub h
269270
ld (S_POSN + 1), a
@@ -272,13 +273,10 @@ __PRINT_AT1: ; Jumps here if waiting for 1st parameter
272273
jr __PRINT_SET_STATE
273274

274275
__PRINT_AT2:
275-
ld hl, __PRINT_START
276-
ld (PRINT_JUMP_STATE), hl ; Saves next entry call
277-
ld hl, (S_POSN)
278-
ld a, SCR_COLS
279-
sub l
280-
ld l, a
281-
jr __PRINT_EOL_END
276+
call __LOAD_S_POSN
277+
ld e, a
278+
call __SAVE_S_POSN
279+
jr __PRINT_RESTART
282280

283281
__PRINT_DEL:
284282
call __LOAD_S_POSN ; Gets current screen position
@@ -498,6 +496,8 @@ PRINT_COMMA:
498496
add a, 16
499497

500498
PRINT_TAB:
499+
; Tabulates the number of spaces in A register
500+
; If the current cursor position is already A, does nothing
501501
PROC
502502
LOCAL LOOP
503503

@@ -509,11 +509,7 @@ PRINT_TAB:
509509
ld b, a
510510
LOOP:
511511
ld a, ' '
512-
push bc
513-
exx
514512
call __PRINTCHAR
515-
exx
516-
pop bc
517513
djnz LOOP
518514
ret
519515
ENDP

tests/functional/zx48k/astore16.asm

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -934,19 +934,19 @@ __PRINT_TAB:
934934
jr __PRINT_SET_STATE
935935
__PRINT_TAB1:
936936
ld (MEM0), a
937-
exx
938937
ld hl, __PRINT_TAB2
939938
jr __PRINT_SET_STATE
940939
__PRINT_TAB2:
941940
ld a, (MEM0) ; Load tab code (ignore the current one)
942-
push hl
943-
push de
944-
push bc
945941
ld hl, __PRINT_START
946942
ld (PRINT_JUMP_STATE), hl
943+
exx
944+
push hl
945+
push bc
946+
push de
947947
call PRINT_TAB
948-
pop bc
949948
pop de
949+
pop bc
950950
pop hl
951951
ret
952952
__PRINT_AT:
@@ -961,19 +961,17 @@ __PRINT_SET_STATE:
961961
ret
962962
__PRINT_AT1: ; Jumps here if waiting for 1st parameter
963963
ld hl, (S_POSN)
964+
ld h, a
964965
ld a, SCR_ROWS
965966
sub h
966967
ld (S_POSN + 1), a
967968
ld hl, __PRINT_AT2
968969
jr __PRINT_SET_STATE
969970
__PRINT_AT2:
970-
ld hl, __PRINT_START
971-
ld (PRINT_JUMP_STATE), hl ; Saves next entry call
972-
ld hl, (S_POSN)
973-
ld a, SCR_COLS
974-
sub l
975-
ld l, a
976-
jr __PRINT_EOL_END
971+
call __LOAD_S_POSN
972+
ld e, a
973+
call __SAVE_S_POSN
974+
jr __PRINT_RESTART
977975
__PRINT_DEL:
978976
call __LOAD_S_POSN ; Gets current screen position
979977
dec e
@@ -1031,14 +1029,14 @@ __PRINT_BOLD:
10311029
__PRINT_BOLD2:
10321030
call BOLD_TMP
10331031
jp __PRINT_RESTART
1034-
#line 356 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1032+
#line 354 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
10351033
__PRINT_ITA:
10361034
ld hl, __PRINT_ITA2
10371035
jp __PRINT_SET_STATE
10381036
__PRINT_ITA2:
10391037
call ITALIC_TMP
10401038
jp __PRINT_RESTART
1041-
#line 366 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1039+
#line 364 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
10421040
LOCAL __BOLD
10431041
__BOLD:
10441042
push hl
@@ -1056,7 +1054,7 @@ __BOLD:
10561054
pop hl
10571055
ld de, MEM0
10581056
ret
1059-
#line 387 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1057+
#line 385 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
10601058
LOCAL __ITALIC
10611059
__ITALIC:
10621060
push hl
@@ -1081,18 +1079,20 @@ __ITALIC:
10811079
pop hl
10821080
ld de, MEM0
10831081
ret
1084-
#line 415 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1082+
#line 413 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
10851083
LOCAL __SCROLL_SCR
1086-
#line 489 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1084+
#line 487 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
10871085
__SCROLL_SCR EQU 0DFEh ; Use ROM SCROLL
1088-
#line 491 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1089-
#line 492 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1086+
#line 489 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1087+
#line 490 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
10901088
PRINT_COMMA:
10911089
call __LOAD_S_POSN
10921090
ld a, e
10931091
and 16
10941092
add a, 16
10951093
PRINT_TAB:
1094+
; Tabulates the number of spaces in A register
1095+
; If the current cursor position is already A, does nothing
10961096
PROC
10971097
LOCAL LOOP
10981098
call __LOAD_S_POSN ; e = current row
@@ -1102,11 +1102,7 @@ PRINT_TAB:
11021102
ld b, a
11031103
LOOP:
11041104
ld a, ' '
1105-
push bc
1106-
exx
11071105
call __PRINTCHAR
1108-
exx
1109-
pop bc
11101106
djnz LOOP
11111107
ret
11121108
ENDP
@@ -1131,9 +1127,9 @@ PRINT_AT: ; Changes cursor to ROW, COL
11311127
LOCAL __PRINT_TABLE
11321128
LOCAL __PRINT_TAB, __PRINT_TAB1, __PRINT_TAB2
11331129
LOCAL __PRINT_ITA2
1134-
#line 550 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1130+
#line 546 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
11351131
LOCAL __PRINT_BOLD2
1136-
#line 556 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1132+
#line 552 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
11371133
__PRINT_TABLE: ; Jump table for 0 .. 22 codes
11381134
DW __PRINT_NOP ; 0
11391135
DW __PRINT_NOP ; 1

tests/functional/zx48k/code00.asm

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -987,19 +987,19 @@ __PRINT_TAB:
987987
jr __PRINT_SET_STATE
988988
__PRINT_TAB1:
989989
ld (MEM0), a
990-
exx
991990
ld hl, __PRINT_TAB2
992991
jr __PRINT_SET_STATE
993992
__PRINT_TAB2:
994993
ld a, (MEM0) ; Load tab code (ignore the current one)
995-
push hl
996-
push de
997-
push bc
998994
ld hl, __PRINT_START
999995
ld (PRINT_JUMP_STATE), hl
996+
exx
997+
push hl
998+
push bc
999+
push de
10001000
call PRINT_TAB
1001-
pop bc
10021001
pop de
1002+
pop bc
10031003
pop hl
10041004
ret
10051005
__PRINT_AT:
@@ -1014,19 +1014,17 @@ __PRINT_SET_STATE:
10141014
ret
10151015
__PRINT_AT1: ; Jumps here if waiting for 1st parameter
10161016
ld hl, (S_POSN)
1017+
ld h, a
10171018
ld a, SCR_ROWS
10181019
sub h
10191020
ld (S_POSN + 1), a
10201021
ld hl, __PRINT_AT2
10211022
jr __PRINT_SET_STATE
10221023
__PRINT_AT2:
1023-
ld hl, __PRINT_START
1024-
ld (PRINT_JUMP_STATE), hl ; Saves next entry call
1025-
ld hl, (S_POSN)
1026-
ld a, SCR_COLS
1027-
sub l
1028-
ld l, a
1029-
jr __PRINT_EOL_END
1024+
call __LOAD_S_POSN
1025+
ld e, a
1026+
call __SAVE_S_POSN
1027+
jr __PRINT_RESTART
10301028
__PRINT_DEL:
10311029
call __LOAD_S_POSN ; Gets current screen position
10321030
dec e
@@ -1084,14 +1082,14 @@ __PRINT_BOLD:
10841082
__PRINT_BOLD2:
10851083
call BOLD_TMP
10861084
jp __PRINT_RESTART
1087-
#line 356 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1085+
#line 354 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
10881086
__PRINT_ITA:
10891087
ld hl, __PRINT_ITA2
10901088
jp __PRINT_SET_STATE
10911089
__PRINT_ITA2:
10921090
call ITALIC_TMP
10931091
jp __PRINT_RESTART
1094-
#line 366 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1092+
#line 364 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
10951093
LOCAL __BOLD
10961094
__BOLD:
10971095
push hl
@@ -1109,7 +1107,7 @@ __BOLD:
11091107
pop hl
11101108
ld de, MEM0
11111109
ret
1112-
#line 387 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1110+
#line 385 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
11131111
LOCAL __ITALIC
11141112
__ITALIC:
11151113
push hl
@@ -1134,18 +1132,20 @@ __ITALIC:
11341132
pop hl
11351133
ld de, MEM0
11361134
ret
1137-
#line 415 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1135+
#line 413 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
11381136
LOCAL __SCROLL_SCR
1139-
#line 489 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1137+
#line 487 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
11401138
__SCROLL_SCR EQU 0DFEh ; Use ROM SCROLL
1141-
#line 491 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1142-
#line 492 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1139+
#line 489 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1140+
#line 490 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
11431141
PRINT_COMMA:
11441142
call __LOAD_S_POSN
11451143
ld a, e
11461144
and 16
11471145
add a, 16
11481146
PRINT_TAB:
1147+
; Tabulates the number of spaces in A register
1148+
; If the current cursor position is already A, does nothing
11491149
PROC
11501150
LOCAL LOOP
11511151
call __LOAD_S_POSN ; e = current row
@@ -1155,11 +1155,7 @@ PRINT_TAB:
11551155
ld b, a
11561156
LOOP:
11571157
ld a, ' '
1158-
push bc
1159-
exx
11601158
call __PRINTCHAR
1161-
exx
1162-
pop bc
11631159
djnz LOOP
11641160
ret
11651161
ENDP
@@ -1184,9 +1180,9 @@ PRINT_AT: ; Changes cursor to ROW, COL
11841180
LOCAL __PRINT_TABLE
11851181
LOCAL __PRINT_TAB, __PRINT_TAB1, __PRINT_TAB2
11861182
LOCAL __PRINT_ITA2
1187-
#line 550 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1183+
#line 546 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
11881184
LOCAL __PRINT_BOLD2
1189-
#line 556 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
1185+
#line 552 "/zxbasic/src/arch/zx48k/library-asm/print.asm"
11901186
__PRINT_TABLE: ; Jump table for 0 .. 22 codes
11911187
DW __PRINT_NOP ; 0
11921188
DW __PRINT_NOP ; 1

0 commit comments

Comments
 (0)