File tree Expand file tree Collapse file tree 5 files changed +142
-31
lines changed
Expand file tree Collapse file tree 5 files changed +142
-31
lines changed Original file line number Diff line number Diff line change @@ -81,8 +81,16 @@ SAVE_CONT:
8181 ldir ; Copy String block NAME
8282 ld l , (ix + 13 )
8383 ld h , (ix + 14 ) ; Restores start of bytes
84-
84+
85+ ld a , r
86+ push af
8587 call ROM_SAVE
88+
89+ LOCAL NO_INT
90+ pop af
91+ jp po , NO_INT
92+ ei
93+ NO_INT:
8694 ; Recovers ECHO_E since ROM SAVE changes it
8795 ld hl , 1821h
8896 ld ( 23682 ) , hl
@@ -98,14 +106,15 @@ SAVE_STOP:
98106 LOCAL PO_MSG
99107 LOCAL WAIT_KEY
100108 LOCAL SA_BYTES
109+ LOCAL SA_CHK_BRK
110+ LOCAL SA_CONT
101111
102112 CHAN_OPEN EQU 1601h
103113 PO_MSG EQU 0C0Ah
104114 WAIT_KEY EQU 15D4h
105115 SA_BYTES EQU 04C6h
106116
107117ROM_SAVE:
108-
109118 push hl
110119 ld a , 0FDh
111120 call CHAN_OPEN
@@ -116,12 +125,17 @@ ROM_SAVE:
116125 call WAIT_KEY
117126 push ix
118127 ld de , 0011h
119- ld a , r
120- push af
121128 xor a
122129 call SA_BYTES
130+ pop ix
123131
132+ call SA_CHK_BRK
133+ jr c , SA_CONT
124134 pop ix
135+ ret
136+
137+ SA_CONT:
138+ ei
125139 ld b , 32h
126140
127141LOCAL SA_1_SEC
@@ -135,9 +149,18 @@ SA_1_SEC:
135149 pop ix
136150 call SA_BYTES
137151
138- pop af
139- ret po
140- ei
152+ SA_CHK_BRK:
153+ ld b , a
154+ ld a , ( 5C48h )
155+ and 38h
156+ rrca
157+ rrca
158+ rrca
159+ out ( 0FEh ) , a
160+ ld a , 7Fh
161+ in a , ( 0FEh )
162+ rra
163+ ld a , b
141164 ret
142165
143166#endif
Original file line number Diff line number Diff line change @@ -439,7 +439,14 @@ SAVE_CONT:
439439 ldir ; Copy String block NAME
440440 ld l , (ix + 13 )
441441 ld h , (ix + 14 ) ; Restores start of bytes
442+ ld a , r
443+ push af
442444 call ROM_SAVE
445+ LOCAL NO_INT
446+ pop af
447+ jp po , NO_INT
448+ ei
449+ NO_INT:
443450 ; Recovers ECHO_E since ROM SAVE changes it
444451 ld hl , 1821h
445452 ld ( 23682 ) , hl
@@ -452,6 +459,8 @@ SAVE_STOP:
452459 LOCAL PO_MSG
453460 LOCAL WAIT_KEY
454461 LOCAL SA_BYTES
462+ LOCAL SA_CHK_BRK
463+ LOCAL SA_CONT
455464 CHAN_OPEN EQU 1601h
456465 PO_MSG EQU 0C0Ah
457466 WAIT_KEY EQU 15D4h
@@ -467,11 +476,15 @@ ROM_SAVE:
467476 call WAIT_KEY
468477 push ix
469478 ld de , 0011h
470- ld a , r
471- push af
472479 xor a
473480 call SA_BYTES
474481 pop ix
482+ call SA_CHK_BRK
483+ jr c , SA_CONT
484+ pop ix
485+ ret
486+ SA_CONT:
487+ ei
475488 ld b , 32h
476489 LOCAL SA_1_SEC
477490SA_1_SEC:
@@ -482,11 +495,20 @@ SA_1_SEC:
482495 ld a , 0FFh
483496 pop ix
484497 call SA_BYTES
485- pop af
486- ret po
487- ei
498+ SA_CHK_BRK:
499+ ld b , a
500+ ld a , ( 5C48h )
501+ and 38h
502+ rrca
503+ rrca
504+ rrca
505+ out ( 0FEh ) , a
506+ ld a , 7Fh
507+ in a , ( 0FEh )
508+ rra
509+ ld a , b
488510 ret
489- #line 144 "/zxbasic/library-asm/save.asm"
511+ #line 167 "/zxbasic/library-asm/save.asm"
490512 ENDP
491513#line 33 "save.bas"
492514ZXBASIC_USER_DATA:
Original file line number Diff line number Diff line change @@ -443,7 +443,14 @@ SAVE_CONT:
443443 ldir ; Copy String block NAME
444444 ld l , (ix + 13 )
445445 ld h , (ix + 14 ) ; Restores start of bytes
446+ ld a , r
447+ push af
446448 call ROM_SAVE
449+ LOCAL NO_INT
450+ pop af
451+ jp po , NO_INT
452+ ei
453+ NO_INT:
447454 ; Recovers ECHO_E since ROM SAVE changes it
448455 ld hl , 1821h
449456 ld ( 23682 ) , hl
@@ -456,6 +463,8 @@ SAVE_STOP:
456463 LOCAL PO_MSG
457464 LOCAL WAIT_KEY
458465 LOCAL SA_BYTES
466+ LOCAL SA_CHK_BRK
467+ LOCAL SA_CONT
459468 CHAN_OPEN EQU 1601h
460469 PO_MSG EQU 0C0Ah
461470 WAIT_KEY EQU 15D4h
@@ -471,11 +480,15 @@ ROM_SAVE:
471480 call WAIT_KEY
472481 push ix
473482 ld de , 0011h
474- ld a , r
475- push af
476483 xor a
477484 call SA_BYTES
478485 pop ix
486+ call SA_CHK_BRK
487+ jr c , SA_CONT
488+ pop ix
489+ ret
490+ SA_CONT:
491+ ei
479492 ld b , 32h
480493 LOCAL SA_1_SEC
481494SA_1_SEC:
@@ -486,11 +499,20 @@ SA_1_SEC:
486499 ld a , 0FFh
487500 pop ix
488501 call SA_BYTES
489- pop af
490- ret po
491- ei
502+ SA_CHK_BRK:
503+ ld b , a
504+ ld a , ( 5C48h )
505+ and 38h
506+ rrca
507+ rrca
508+ rrca
509+ out ( 0FEh ) , a
510+ ld a , 7Fh
511+ in a , ( 0FEh )
512+ rra
513+ ld a , b
492514 ret
493- #line 144 "/zxbasic/library-asm/save.asm"
515+ #line 167 "/zxbasic/library-asm/save.asm"
494516 ENDP
495517#line 37 "save01.bas"
496518ZXBASIC_USER_DATA:
Original file line number Diff line number Diff line change @@ -440,7 +440,14 @@ SAVE_CONT:
440440 ldir ; Copy String block NAME
441441 ld l , (ix + 13 )
442442 ld h , (ix + 14 ) ; Restores start of bytes
443+ ld a , r
444+ push af
443445 call ROM_SAVE
446+ LOCAL NO_INT
447+ pop af
448+ jp po , NO_INT
449+ ei
450+ NO_INT:
444451 ; Recovers ECHO_E since ROM SAVE changes it
445452 ld hl , 1821h
446453 ld ( 23682 ) , hl
@@ -453,6 +460,8 @@ SAVE_STOP:
453460 LOCAL PO_MSG
454461 LOCAL WAIT_KEY
455462 LOCAL SA_BYTES
463+ LOCAL SA_CHK_BRK
464+ LOCAL SA_CONT
456465 CHAN_OPEN EQU 1601h
457466 PO_MSG EQU 0C0Ah
458467 WAIT_KEY EQU 15D4h
@@ -468,11 +477,15 @@ ROM_SAVE:
468477 call WAIT_KEY
469478 push ix
470479 ld de , 0011h
471- ld a , r
472- push af
473480 xor a
474481 call SA_BYTES
475482 pop ix
483+ call SA_CHK_BRK
484+ jr c , SA_CONT
485+ pop ix
486+ ret
487+ SA_CONT:
488+ ei
476489 ld b , 32h
477490 LOCAL SA_1_SEC
478491SA_1_SEC:
@@ -483,11 +496,20 @@ SA_1_SEC:
483496 ld a , 0FFh
484497 pop ix
485498 call SA_BYTES
486- pop af
487- ret po
488- ei
499+ SA_CHK_BRK:
500+ ld b , a
501+ ld a , ( 5C48h )
502+ and 38h
503+ rrca
504+ rrca
505+ rrca
506+ out ( 0FEh ) , a
507+ ld a , 7Fh
508+ in a , ( 0FEh )
509+ rra
510+ ld a , b
489511 ret
490- #line 144 "/zxbasic/library-asm/save.asm"
512+ #line 167 "/zxbasic/library-asm/save.asm"
491513 ENDP
492514#line 34 "save02.bas"
493515ZXBASIC_USER_DATA:
Original file line number Diff line number Diff line change @@ -439,7 +439,14 @@ SAVE_CONT:
439439 ldir ; Copy String block NAME
440440 ld l , (ix + 13 )
441441 ld h , (ix + 14 ) ; Restores start of bytes
442+ ld a , r
443+ push af
442444 call ROM_SAVE
445+ LOCAL NO_INT
446+ pop af
447+ jp po , NO_INT
448+ ei
449+ NO_INT:
443450 ; Recovers ECHO_E since ROM SAVE changes it
444451 ld hl , 1821h
445452 ld ( 23682 ) , hl
@@ -452,6 +459,8 @@ SAVE_STOP:
452459 LOCAL PO_MSG
453460 LOCAL WAIT_KEY
454461 LOCAL SA_BYTES
462+ LOCAL SA_CHK_BRK
463+ LOCAL SA_CONT
455464 CHAN_OPEN EQU 1601h
456465 PO_MSG EQU 0C0Ah
457466 WAIT_KEY EQU 15D4h
@@ -467,11 +476,15 @@ ROM_SAVE:
467476 call WAIT_KEY
468477 push ix
469478 ld de , 0011h
470- ld a , r
471- push af
472479 xor a
473480 call SA_BYTES
474481 pop ix
482+ call SA_CHK_BRK
483+ jr c , SA_CONT
484+ pop ix
485+ ret
486+ SA_CONT:
487+ ei
475488 ld b , 32h
476489 LOCAL SA_1_SEC
477490SA_1_SEC:
@@ -482,11 +495,20 @@ SA_1_SEC:
482495 ld a , 0FFh
483496 pop ix
484497 call SA_BYTES
485- pop af
486- ret po
487- ei
498+ SA_CHK_BRK:
499+ ld b , a
500+ ld a , ( 5C48h )
501+ and 38h
502+ rrca
503+ rrca
504+ rrca
505+ out ( 0FEh ) , a
506+ ld a , 7Fh
507+ in a , ( 0FEh )
508+ rra
509+ ld a , b
488510 ret
489- #line 144 "/zxbasic/library-asm/save.asm"
511+ #line 167 "/zxbasic/library-asm/save.asm"
490512 ENDP
491513#line 33 "save03.bas"
492514ZXBASIC_USER_DATA:
You can’t perform that action at this time.
0 commit comments