Skip to content

Commit 95ac236

Browse files
Implemented GETPTR, PUTPTR, GETEXT
1 parent 9cc018e commit 95ac236

File tree

1 file changed

+36
-5
lines changed

1 file changed

+36
-5
lines changed

patch.asm

+36-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; Title: BBC Basic for AGON
33
; Author: Dean Belfield
44
; Created: 03/05/2022
5-
; Last Updated: 02/04/2023
5+
; Last Updated: 16/04/2023
66
;
77
; Modinfo:
88
; 24/07/2022: OSWRCH and OSRDCH now execute code in MOS
@@ -25,6 +25,7 @@
2525
; 25/03/2023: Fixed range error in OSBYTE, now calls VBLANK_INIT in OSINIT, improved keyboard handling
2626
; 28/03/2023: Improved BYE command
2727
; 02/04/2023: Various keyboard tweaks
28+
; 16/04/2023: Implemented GETPTR, PUTPTR, GETEXT
2829
2930
.ASSUME ADL = 0
3031
@@ -404,7 +405,7 @@ STAR_BYE: CALL VBLANK_STOP ; Restore MOS interrupts
404405
; *VERSION
405406
;
406407
STAR_VERSION: CALL TELL ; Output the welcome message
407-
DB "BBC BASIC (Agon) Version 1.04 RC3\n\r",0
408+
DB "BBC BASIC (Agon) Version 1.04 RC4\n\r",0
408409
RET
409410
410411
; *EDIT linenum
@@ -861,22 +862,52 @@ OSSTAT: PUSH BC
861862
; DEHL = pointer (0-&7FFFFF)
862863
; Destroys: A,B,C,D,E,H,L,F
863864
;
864-
GETPTR: RET
865+
GETPTR: PUSH IY
866+
LD C, E
867+
MOSCALL mos_getfil ; HLU: Pointer to FIL structure
868+
PUSH.LIL HL
869+
POP.LIL IY ; IYU: Pointer to FIL structure
870+
LD.LIL L, (IY + FIL.fptr + 0)
871+
LD.LIL H, (IY + FIL.fptr + 1)
872+
LD.LIL E, (IY + FIL.fptr + 2)
873+
LD.LIL D, (IY + FIL.fptr + 3)
874+
POP IY
875+
RET
865876

866877
; PUTPTR - Update file pointer.
867878
; A = file channel
868879
; DEHL = new pointer (0-&7FFFFF)
869880
; Destroys: A,B,C,D,E,H,L,F
870881
;
871-
PUTPTR: RET
882+
PUTPTR: PUSH IY
883+
LD C, A ; C: Filehandle
884+
PUSH.LIL HL
885+
LD.LIL HL, 2
886+
ADD.LIL HL, SP
887+
LD.LIL (HL), E ; 3rd byte of DWORD set to E
888+
POP.LIL HL
889+
LD E, D ; 4th byte passed as E
890+
MOSCALL mos_flseek
891+
POP IY
892+
RET
872893
873894
; GETEXT - Find file size.
874895
; E = file channel
875896
; Returns:
876897
; DEHL = file size (0-&800000)
877898
; Destroys: A,B,C,D,E,H,L,F
878899
;
879-
GETEXT: RET
900+
GETEXT: PUSH IY
901+
LD C, E
902+
MOSCALL mos_getfil ; HLU: Pointer to FIL structure
903+
PUSH.LIL HL
904+
POP.LIL IY ; IYU: Pointer to FIL structure
905+
LD.LIL L, (IY + FIL.obj.objsize + 0)
906+
LD.LIL H, (IY + FIL.obj.objsize + 1)
907+
LD.LIL E, (IY + FIL.obj.objsize + 2)
908+
LD.LIL D, (IY + FIL.obj.objsize + 3)
909+
POP IY
910+
RET
880911

881912
; GETIMS - Get time from RTC
882913
;

0 commit comments

Comments
 (0)