@@ -492,9 +492,9 @@ ti_Write:
492
492
add iy , sp
493
493
ld c , (iy + 12 )
494
494
call util_is_slot_open
495
- jr z , util_ret_null_closer
495
+ jr z , .ret0
496
496
call util_is_in_ram
497
- jr z , util_ret_null_closer
497
+ jr z , .ret0
498
498
ld bc , (iy + 6 )
499
499
ld hl , (iy + 9 )
500
500
call __smulu
@@ -518,7 +518,7 @@ ti_Write:
518
518
ld (resize_amount) , hl
519
519
call util_insert_mem
520
520
or a , a
521
- jr z , util_ret_null_closer
521
+ jr z , .ret0
522
522
.no_core_needed:
523
523
call util_get_data_offset
524
524
ex de , hl
@@ -535,10 +535,7 @@ ti_Write:
535
535
ld (hl) , de
536
536
ld hl , (iy + 9 )
537
537
ret
538
-
539
- util_ret_null_closer_pop_hl:
540
- pop hl
541
- util_ret_null_closer:
538
+ .ret0:
542
539
xor a , a
543
540
sbc hl , hl
544
541
ret
@@ -568,28 +565,49 @@ ti_Read:
568
565
add iy , sp
569
566
ld c , (iy + 12 )
570
567
call util_is_slot_open
571
- jr z , util_ret_null_closer
568
+ jr z , .ret0
572
569
ld bc , (iy + 6 )
573
570
ld hl , (iy + 9 )
574
- push hl
575
571
call __smulu
576
572
add hl , de
577
573
xor a , a
578
574
sbc hl , de
579
- jr z , util_ret_null_closer_pop_hl
580
- push hl
575
+ jr z , .ret0
576
+ push hl ; hl = total size to read
577
+ call util_get_slot_size
578
+ push bc
579
+ call util_get_offset
580
+ pop hl
581
+ or a , a
582
+ sbc hl , bc ; size - offset = bytes left to read
583
+ pop de ; if no bytes left, return
584
+ jr z , .ret0
585
+ jr c , .ret0
586
+ or a , a
587
+ sbc hl , de
588
+ add hl , de ; check if left size <= read size
589
+ jr nc , .copy
590
+ ex de , hl ; otherwise just copy remaining bytes
591
+ .copy:
592
+ push de
581
593
call util_get_data_offset
582
594
ld de , (iy + 3 )
583
595
pop bc
584
596
push bc
585
597
ldir
586
598
call util_get_offset
587
599
pop hl
588
- add hl , bc
589
- ex de , hl
600
+ push hl
601
+ add hl , bc
602
+ ex de , hl
590
603
call util_get_offset_ptr
591
604
ld (hl) , de
592
605
pop hl
606
+ ld bc , (iy + 6 )
607
+ jp __sdivu ; return actual chunks read
608
+ .ret0:
609
+ xor a , a
610
+ sbc hl , hl
593
611
ret
594
612
595
613
;-------------------------------------------------------------------------------
0 commit comments