@@ -70,8 +70,9 @@ _test__leave:
7070 ld sp , ix
7171 pop ix
7272 ret
73- #line 1 "addf.asm"
74- #line 1 "stackf.asm"
73+ ;; --- end of user code ---
74+ #line 1 "/zxbasic/src/arch/zx48k/library-asm/addf.asm"
75+ #line 1 "/zxbasic/src/arch/zx48k/library-asm/stackf.asm"
7576 ; -------------------------------------------------------------
7677 ; Functions to manage FP-Stack of the ZX Spectrum ROM CALC
7778 ; -------------------------------------------------------------
@@ -108,7 +109,7 @@ __FPSTACK_I16: ; Pushes 16 bits integer in HL into the FP ROM STACK
108109 xor a
109110 ld b , a
110111 jp __FPSTACK_PUSH
111- #line 2 "addf.asm"
112+ #line 2 "/zxbasic/src/arch/zx48k/library-asm/ addf.asm"
112113 ; -------------------------------------------------------------
113114 ; Floating point library using the FP ROM Calculator (ZX 48K)
114115 ; All of them uses A EDCB registers as 1st paramter.
@@ -124,8 +125,8 @@ __ADDF: ; Addition
124125 defb 0fh ; ADD
125126 defb 38h ; ; END CALC
126127 jp __FPSTACK_POP
127- #line 54 "opt4_keepix.bas"
128- #line 1 "mulf.asm"
128+ #line 55 "opt4_keepix.bas"
129+ #line 1 "/zxbasic/src/arch/zx48k/library-asm/ mulf.asm"
129130 ; -------------------------------------------------------------
130131 ; Floating point library using the FP ROM Calculator (ZX 48K)
131132 ; All of them uses A EDCB registers as 1st paramter.
@@ -141,13 +142,13 @@ __MULF: ; Multiplication
141142 defb 04h ;
142143 defb 38h ; ; END CALC
143144 jp __FPSTACK_POP
144- #line 55 "opt4_keepix.bas"
145- #line 1 "ploadf.asm"
145+ #line 56 "opt4_keepix.bas"
146+ #line 1 "/zxbasic/src/arch/zx48k/library-asm/ ploadf.asm"
146147 ; Parameter / Local var load
147148 ; A => Offset
148149 ; IX = Stack Frame
149150; RESULT: HL => IX + DE
150- #line 1 "iloadf.asm"
151+ #line 1 "/zxbasic/src/arch/zx48k/library-asm/ iloadf.asm"
151152 ; __FASTCALL__ routine which
152153 ; loads a 40 bits floating point into A ED CB
153154 ; stored at position pointed by POINTER HL
@@ -172,19 +173,19 @@ __LOADF: ; Loads a 40 bits FP number from address pointed by HL
172173 inc hl
173174 ld b , (hl)
174175 ret
175- #line 7 "ploadf.asm"
176+ #line 7 "/zxbasic/src/arch/zx48k/library-asm/ ploadf.asm"
176177__PLOADF:
177178 push ix
178179 pop hl
179180 add hl , de
180181 jp __LOADF
181- #line 56 "opt4_keepix.bas"
182- #line 1 "pstoref.asm"
182+ #line 57 "opt4_keepix.bas"
183+ #line 1 "/zxbasic/src/arch/zx48k/library-asm/ pstoref.asm"
183184 ; Stores FP number in A ED CB at location HL+IX
184185 ; HL = Offset
185186 ; IX = Stack Frame
186187 ; A ED CB = FP Number
187- #line 1 "storef.asm"
188+ #line 1 "/zxbasic/src/arch/zx48k/library-asm/ storef.asm"
188189__PISTOREF: ; Indect Stores a float (A, E, D, C, B) at location stored in memory, pointed by (IX + HL)
189190 push de
190191 ex de , hl ; DE <- HL
@@ -210,7 +211,7 @@ __STOREF: ; Stores the given FP number in A EDCB at address HL
210211 inc hl
211212 ld (hl) , b
212213 ret
213- #line 7 "pstoref.asm"
214+ #line 7 "/zxbasic/src/arch/zx48k/library-asm/ pstoref.asm"
214215 ; Stored a float number in A ED CB into the address pointed by IX + HL
215216__PSTOREF:
216217 push de
@@ -220,8 +221,8 @@ __PSTOREF:
220221 add hl , de ; HL <- IX + DE
221222 pop de
222223 jp __STOREF
223- #line 57 "opt4_keepix.bas"
224- #line 1 "random.asm"
224+ #line 58 "opt4_keepix.bas"
225+ #line 1 "/zxbasic/src/arch/zx48k/library-asm/ random.asm"
225226 ; RANDOM functions
226227RANDOMIZE:
227228 ; Randomize with 32 bit seed in DE HL
@@ -246,8 +247,8 @@ TAKE_FRAMES:
246247 ret
247248 FRAMES EQU 23672
248249 ENDP
249- RANDOM_SEED_HIGH EQU RAND + 6 ; RANDOM seed, 16 higher bits
250- RANDOM_SEED_LOW EQU 23670 ; RANDOM seed, 16 lower bits
250+ RANDOM_SEED_HIGH EQU RAND + 6 ; RANDOM seed, 16 higher bits
251+ RANDOM_SEED_LOW EQU 23670 ; RANDOM seed, 16 lower bits
251252RAND:
252253 PROC
253254 LOCAL RAND_LOOP
@@ -269,18 +270,17 @@ RAND_LOOP:
269270 rra ; t = t ^ (t >> 1) ^ w
270271 xor d
271272 xor e
272- ld h , l ; y = z
273- ld l , a ; w = t
274- ld (RANDOM_SEED_HIGH) , hl
273+ ld d , l ; y = z
274+ ld e , a ; w = t
275+ ld (RANDOM_SEED_HIGH) , de
275276 push af
276277 djnz RAND_LOOP
277- pop af
278- pop af
279- ld d , a
278+ pop de
280279 pop af
281280 ld e , a
281+ pop hl
282282 pop af
283- ld h , a
283+ ld l , a
284284 ret
285285 ENDP
286286RND:
299299 ret z ; Returns 0 if BC=DE=0
300300 ; We already have a random 32 bit mantissa in ED CB
301301 ; From 0001h to FFFFh
302- ld l , 81h ; Exponent
302+ ld l , 81h ; Exponent
303303 ; At this point we have [0 .. 1) FP number;
304304 ; Now we must shift mantissa left until highest bit goes into carry
305305 ld a , e ; Use A register for rotating E faster (using RLA instead of RL E)
@@ -320,5 +320,5 @@ RND_LOOP:
320320 ld a , l ; exponent in A
321321 ret
322322 ENDP
323- #line 58 "opt4_keepix.bas"
323+ #line 59 "opt4_keepix.bas"
324324 END
0 commit comments