Skip to content

Commit fa9a271

Browse files
fix #461
1 parent 269cd97 commit fa9a271

File tree

1 file changed

+61
-24
lines changed

1 file changed

+61
-24
lines changed

src/fileioc/fileioc.asm

+61-24
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,9 @@ ti_IsArchived:
263263
push bc
264264
push de
265265
call util_is_slot_open
266-
jp nz, util_ret_null
266+
jr z, util_is_in_ram
267+
xor a, a
268+
ret
267269
util_is_in_ram:
268270
call util_get_vat_ptr
269271
ld hl, (hl)
@@ -621,14 +623,14 @@ ti_GetC:
621623
push bc
622624
push de
623625
call util_is_slot_open
624-
jp nz, util_ret_neg_one
626+
jr nz, .ret_neg_one
625627
call util_get_slot_size
626628
push bc
627629
call util_get_offset
628630
pop hl
629631
scf
630632
sbc hl, bc ; size-offset
631-
jp c, util_ret_neg_one
633+
jr c, .ret_neg_one
632634
push bc
633635
call util_get_data_ptr
634636
ld hl, (hl)
@@ -643,6 +645,11 @@ ti_GetC:
643645
sbc hl, hl
644646
ld l, a
645647
ret
648+
.ret_neg_one:
649+
scf
650+
sbc hl, hl
651+
ld a, l
652+
ret
646653

647654
;-------------------------------------------------------------------------------
648655
ti_PutC:
@@ -661,31 +668,30 @@ ti_PutC:
661668
ld a, e
662669
ld (char_in), a
663670
call util_is_slot_open
664-
jp nz, util_ret_neg_one
671+
jr nz, .ret_neg_one
665672
call util_is_in_ram
666-
jp c, util_ret_neg_one
667-
_PutChar:
673+
jr c, .ret_neg_one
668674
call util_get_slot_size
669675
push bc
670676
call util_get_offset
671677
pop hl
672678
or a, a
673679
sbc hl, bc
674-
jp c, util_ret_neg_one
680+
jr c, .ret_neg_one
675681
jr nz, .no_increment
676682
.increment:
677683
push bc
678684
inc hl
679685
ld (resize_amount), hl
680686
call ti.EnoughMem
681687
pop bc
682-
jp c, util_ret_neg_one
688+
jr c, .ret_neg_one
683689
push bc
684690
ex de, hl
685691
call util_insert_mem
686692
pop bc
687693
or a, a
688-
jp z, util_ret_neg_one
694+
jr z, .ret_neg_one
689695
.no_increment:
690696
call util_get_data_ptr
691697
ld hl, (hl)
@@ -703,6 +709,11 @@ char_in := $-1
703709
sbc hl, hl
704710
ld l, a
705711
ret
712+
.ret_neg_one:
713+
scf
714+
sbc hl, hl
715+
ld a, l
716+
ret
706717

707718
;-------------------------------------------------------------------------------
708719
ti_Seek:
@@ -718,14 +729,14 @@ ti_Seek:
718729
ld de, (iy + 3)
719730
ld c, (iy + 9)
720731
call util_is_slot_open
721-
jp nz, util_ret_neg_one
732+
jr nz, .ret_neg_one
722733
ld a, (iy + 6) ; origin location
723734
or a, a
724735
jr z, .seek_set
725736
dec a
726737
jr z, .seek_curr
727738
dec a
728-
jp nz, util_ret_neg_one
739+
jr nz, .ret_neg_one
729740
.seek_end:
730741
push de
731742
call util_get_slot_size
@@ -741,12 +752,16 @@ ti_Seek:
741752
sbc hl, de
742753
push de
743754
pop bc
744-
jp c, util_ret_neg_one
755+
jr c, .ret_neg_one
745756
jp util_set_offset
746757
.seek_curr:
747758
push de
748759
call util_get_offset
749760
jr .seek_set_asm
761+
.ret_neg_one:
762+
scf
763+
sbc hl, hl
764+
ret
750765

751766
;-------------------------------------------------------------------------------
752767
ti_DeleteVar:
@@ -805,13 +820,17 @@ ti_Rewind:
805820
push bc
806821
push hl
807822
call util_is_slot_open
808-
jp nz, util_ret_neg_one
823+
jr nz, .ret_neg_one
809824
.rewind:
810825
ld bc, 0
811826
call util_set_offset
812827
or a, a
813828
sbc hl, hl
814829
ret
830+
scf
831+
.ret_neg_one:
832+
sbc hl, hl
833+
ret
815834

816835
;-------------------------------------------------------------------------------
817836
ti_Tell:
@@ -825,11 +844,14 @@ ti_Tell:
825844
push bc
826845
push hl
827846
call util_is_slot_open
828-
jp nz, util_ret_neg_one
847+
jr nz, .ret_neg_one
829848
call util_get_offset
830849
push bc
831850
pop hl
832851
ret
852+
.ret_neg_one:
853+
sbc hl, hl
854+
ret
833855

834856
;-------------------------------------------------------------------------------
835857
ti_GetSize:
@@ -843,11 +865,14 @@ ti_GetSize:
843865
push bc
844866
push hl
845867
call util_is_slot_open
846-
jp nz, util_ret_neg_one
868+
jr nz, .ret_neg_one
847869
call util_get_slot_size
848870
push bc
849871
pop hl
850872
ret
873+
.ret_neg_one:
874+
sbc hl, hl
875+
ret
851876

852877
;-------------------------------------------------------------------------------
853878
ti_Close:
@@ -1088,14 +1113,18 @@ ti_GetDataPtr:
10881113
push bc
10891114
push de
10901115
call util_is_slot_open
1091-
jp nz, util_ret_null
1116+
jr nz, .ret_null
10921117
call util_get_slot_size
10931118
inc hl
10941119
push hl
10951120
call util_get_offset
10961121
pop hl
10971122
add hl, bc
10981123
ret
1124+
.ret_null:
1125+
xor a, a
1126+
sbc hl, hl
1127+
ret
10991128

11001129
;-------------------------------------------------------------------------------
11011130
ti_GetVATPtr:
@@ -1109,10 +1138,14 @@ ti_GetVATPtr:
11091138
push bc
11101139
push de
11111140
call util_is_slot_open
1112-
jp nz, util_ret_null
1141+
jr nz, .ret_null
11131142
call util_get_vat_ptr
11141143
ld hl, (hl)
11151144
ret
1145+
.ret_null:
1146+
xor a, a
1147+
sbc hl, hl
1148+
ret
11161149

11171150
;-------------------------------------------------------------------------------
11181151
ti_GetName:
@@ -1345,20 +1378,23 @@ ti_RclVar:
13451378
ld iy,ti.flags
13461379
call util_set_var_str
13471380
call ti.FindSym
1348-
jp c, util_ret_neg_one_byte
1381+
jr c, .ret_neg_one
13491382
push af
13501383
call ti.ChkInRam
13511384
pop bc
13521385
ld a, b
1353-
jp nz, util_ret_neg_one_byte
1386+
jr nz, .ret_neg_one
13541387
ld iy, 0
13551388
add iy, sp
13561389
and a, $3f
13571390
sub a, (iy + 3) ; var type
1358-
jp nz, util_ret_neg_one_byte
1391+
jr nz, .ret_neg_one
13591392
ld hl, (iy + 9)
13601393
ld (hl), de
13611394
ret
1395+
.ret_neg_one:
1396+
ld a,-1
1397+
ret
13621398

13631399
;-------------------------------------------------------------------------------
13641400
ti_ArchiveHasRoom:
@@ -1499,7 +1535,11 @@ util_insert_mem:
14991535
call ti.EnoughMem
15001536
pop de
15011537
pop hl
1502-
jr c, util_ret_null_byte
1538+
jr nc, .enough_mem
1539+
pop hl
1540+
xor a, a
1541+
ret
1542+
.enough_mem:
15031543
call ti.InsertMem
15041544
pop hl
15051545
ld hl, (hl)
@@ -1544,9 +1584,6 @@ util_save_size:
15441584
util_ret_neg_one_byte:
15451585
ld a, 255
15461586
ret
1547-
util_ret_null_byte:
1548-
xor a, a
1549-
ret
15501587

15511588
util_ret_null_pop_ix:
15521589
pop ix

0 commit comments

Comments
 (0)