Code: Select all
defpage 0,16393
page 0
incbin HRDEMO30.P
code ! 48f5h
call 1be9h
code ! 4a40h
call nz,1b8dh
code ! 4b80h
call 19fdh
Code: Select all
defpage 0,16393
page 0
incbin HRDEMO30.P
code ! 48f5h
call 1be9h
code ! 4a40h
call nz,1b8dh
code ! 4b80h
call 19fdh
It is very likely that there are another direct calls to the changed ROM areas...
Code: Select all
lstoff
; ZX 81 stack calculator functions (ZX81 version of ZXFP)
; $Id: 81fp.def,v 1.7 2015-08-01 09:14:43 stefano Exp $
; function codes:
; RST 28h activates the FP calculator
DEFC ZXFP_BEGIN_CALC = $28
DEFC ZXFP_STK_PTR = $401C
DEFC ZXFP_STK_STORE = $12C3
DEFC ZXFP_TEST_5_FP = $19EB
DEFC ZXFP_STK_STR = $12C3
DEFC ZXFP_STK_FETCH = $13F8
DEFC ZXFP_STACK_A = $151D
DEFC ZXFP_STACK_BC = $1520
DEFC ZXFP_FP_TO_BC = $158A
DEFC ZXFP_FP_TO_A = $15CD
DEFC ZXFP_INT_TO_FP = $1548
DEFC ZXFP_DEC_TO_FP = $14D9
DEFC ZXFP_JUMP_TRUE = $00
DEFC ZXFP_EXCHANGE = $01
DEFC ZXFP_DELETE = $02
DEFC ZXFP_SUBTRACT = $03
DEFC ZXFP_MULTIPLY = $04
DEFC ZXFP_DIVISION = $05
DEFC ZXFP_TO_POWER = $06
DEFC ZXFP_OR = $07
DEFC ZXFP_NO_AND_NO = $08
DEFC ZXFP_NO_L_EQL = $09
DEFC ZXFP_NO_GR_EQL = $0A
DEFC ZXFP_NOS_NEQL = $0B
DEFC ZXFP_NO_GRTR = $0C
DEFC ZXFP_NO_LESS = $0D
DEFC ZXFP_NOS_EQL = $0E
DEFC ZXFP_ADDITION = $0F
DEFC ZXFP_STR_AND_NO = $10 ; String and Number
DEFC ZXFP_STR_L_EQL = $11 ; String <=
DEFC ZXFP_STR_GR_EQL = $12 ; String >=
DEFC ZXFP_STRS_NEQL = $13 ; String <>
DEFC ZXFP_STRS_GRTR = $14 ; String >
DEFC ZXFP_STRS_LESS = $15 ; String <
DEFC ZXFP_STRS_EQL = $16 ; String =
DEFC ZXFP_STRS_ADD = $17 ; String addition
DEFC ZXFP_NEGATE = $18
DEFC ZXFP_CODE = $19
DEFC ZXFP_VAL = $1A
DEFC ZXFP_LEN = $1B
DEFC ZXFP_SIN = $1C
DEFC ZXFP_COS = $1D
DEFC ZXFP_TAN = $1E
DEFC ZXFP_ASN = $1F
DEFC ZXFP_ACS = $20
DEFC ZXFP_ATN = $21
DEFC ZXFP_LN = $22
DEFC ZXFP_EXP = $23
DEFC ZXFP_INT = $24
DEFC ZXFP_SQR = $25
DEFC ZXFP_SGN = $26
DEFC ZXFP_ABS = $27
DEFC ZXFP_PEEK = $28
DEFC ZXFP_USR_NO = $29
DEFC ZXFP_STRS = $2A
DEFC ZXFP_CHRS = $2B
DEFC ZXFP_NOT = $2C
DEFC ZXFP_DUPLICATE = $2D
DEFC ZXFP_N_MOD_M = $2E
DEFC ZXFP_JUMP = $2F
DEFC ZXFP_STK_DATA = $30
DEFC ZXFP_DEC_JR_NZ = $31
DEFC ZXFP_LESS_0 = $32
DEFC ZXFP_GREATER_0 = $33
DEFC ZXFP_END_CALC = $34 ; END
DEFC ZXFP_GET_ARGT = $35
DEFC ZXFP_TRUNCATE = $36
DEFC ZXFP_FP_CALC_2 = $37
DEFC ZXFP_E_TO_FP = $38
DEFC ZXFP_SERIES_00 = $80
DEFC ZXFP_SERIES_01 = $81
DEFC ZXFP_SERIES_02 = $82
DEFC ZXFP_SERIES_03 = $83
DEFC ZXFP_SERIES_04 = $84
DEFC ZXFP_SERIES_05 = $85
DEFC ZXFP_SERIES_06 = $86
DEFC ZXFP_SERIES_07 = $87
DEFC ZXFP_SERIES_08 = $88
DEFC ZXFP_SERIES_09 = $89
DEFC ZXFP_SERIES_0A = $8A
DEFC ZXFP_SERIES_0B = $8B
DEFC ZXFP_SERIES_0C = $8C
DEFC ZXFP_SERIES_0D = $8D
DEFC ZXFP_SERIES_0E = $8E
DEFC ZXFP_SERIES_0F = $8F
DEFC ZXFP_STK_ZERO = $A0
DEFC ZXFP_STK_ONE = $A1
DEFC ZXFP_STK_HALF = $A2
DEFC ZXFP_STK_PI_D_2 = $A3
DEFC ZXFP_STK_TEN = $A4
DEFC ZXFP_ST_MEM_0 = $C0
DEFC ZXFP_ST_MEM_1 = $C1
DEFC ZXFP_ST_MEM_2 = $C2
DEFC ZXFP_ST_MEM_3 = $C3
DEFC ZXFP_ST_MEM_4 = $C4
DEFC ZXFP_ST_MEM_5 = $C5
DEFC ZXFP_GET_MEM_0 = $E0
DEFC ZXFP_GET_MEM_1 = $E1
DEFC ZXFP_GET_MEM_2 = $E2
DEFC ZXFP_GET_MEM_3 = $E3
DEFC ZXFP_GET_MEM_4 = $E4
DEFC ZXFP_GET_MEM_5 = $E5
; System variables
DEFC ZXFP_CH_ADD = $4016
lston
Code: Select all
;
; ZX Maths Routines
;
; 9/12/02 - Stefano Bodrato
;
; $Id: atof.asm,v 1.5 2016-06-22 19:59:18 dom Exp $
;
;double atof(char *) - convert string to number, leave in fa
IF FORts2068
INCLUDE "target/ts2068/def/ts2068fp.def"
ENDIF
IF FORzx
INCLUDE "target/zx/def/zxfp.def"
ENDIF
IF FORzx81
INCLUDE "target/zx81/def/81fp.def"
ENDIF
IF FORlambda
INCLUDE "target/lambda/def/lambdafp.def"
ENDIF
SECTION code_fp
PUBLIC atof
EXTERN stkequ
;.casave defw 0
.atof
pop hl
pop de ;the string
push de
push hl
ld hl,(ZXFP_CH_ADD)
push hl
.nobloop ld a,(de) ; load the first number digit in A
cp ' ' ; skip spaces
jr nz,noblank
inc de
jr nobloop
.noblank
cp '-'
push af
jr nz,noneg
inc de
ld a,(de)
.noneg
IF (FORzx | FORts2068)
ELSE
ld hl,txtbuffer
push hl
.nloop
cp 0
jr z,converted
sub 20
cp 26
jr nz,nodot
ld a,27
.nodot
ld (hl),a
inc hl
inc de
ld a,(de)
jr nloop
.txtbuffer defs 15
.converted
ld a,$76
ld (de),a
pop de
ld a,(de)
ENDIF
ld (ZXFP_CH_ADD),de ; Init the BASIC interpreter pointer
call ZXFP_DEC_TO_FP ; ask BASIC to load the string into a number
pop af
jr nz,noneg1
rst ZXFP_BEGIN_CALC
IF FORlambda
defb ZXFP_NEGATE + 128
ELSE
defb ZXFP_NEGATE
defb ZXFP_END_CALC
ENDIF
.noneg1
pop hl
ld (ZXFP_CH_ADD),hl ; restore the pointer
jp stkequ