Subversion Repositories MB01 Project

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 - 1
;----------------------------------------------------------
2
; DIRP02.ASM
3
; PROGETTO: B1601
4
;
5
; Variabili in Direct Page $02
6
;----------------------------------------------------------
7
 
8
; sezione COMMON -- questo permette di includere il file in piu' file
9
 
10
DIRP02:	.SECTION page0, ref_only, common	;Direct-Page 02
11
 
12
	.ABSOLUTE		;; inizia sempre da $00
13
	.ORG		0x00
14
 
15
; variabili usate nella funzione _vprintl e famiglia funzioni di formattazione
16
FmtParm		.DW		;; ptr array parametri banco 0
17
FmtLPFmt	LP		;; long ptr stringa szFmt
18
FmtLPPut	LP		;; long ptr funzione 'putter'
19
FmtSpec		.DB		;; indice '%' corrente in szFmt
20
FmtWidth	.DB		;; campo width
21
FmtPrec		.DB		;; campo precision
22
FmtFlag		.DB		;; flag formattazione
23
FmtSgn		.DB		;; segno positivo (se 0 -> no segno)
24
VStoreF		.DB		;; flag modo store
25
FmtMod		.DB		;; flag modificatori
26
FmtDst		.DB		;; ptr stringa szDst banco 0
27
 
28
FmtCnt		.DW		;; contatore caratteri
29
FmtGMax		.DW		;; max. len stringa globale
30
 
31
XVDec		.DW		; esponente decimale (signed)
32
XVFlag		.DB		; flag per conversioni numeriche
33
 
34
ACMCmps		.DB		; flag compare segno e tipo (intero)
35
 
36
ACM		DQ		; accumulatore #1 integer 64 bit
37
ACMSize		.DB		; size
38
ACMSgn		.DB		; <7>:segno, <6>:tipo signed
39
ACMMinSize	.DB		; minima dimensione richiesta per ACM
40
IARGMinSize	.DB
41
 
42
FPTmp1		.DB		; byte temporaneo
43
FPTmp2		.DB		; byte temporaneo
44
FPTmp3		.DB		; byte temporaneo
45
FPTmp4		.DB		; byte temporaneo
46
 
47
IARG		DQ		; accumulatore #2 integer 64 bit
48
IARGSize	.DB		; size
49
IARGSgn		.DB		; <7>:segno, <6>:tipo signed
50
 
51
FOP		DS	9	; temporaneo per FDIV/FMULT/integer MULT/DIV
52
				; conversione integer -> string
53
FPIndx		.DB		; byte generico indice
54
FPWTmp7		.DW		; word temporanea
55
FPWTmp8		.DW		; word temporanea
56
 
57
; variabili temporanee sovrapposte a FOP
58
FACXM		.EQU	FOP+4	; byte temporaneo
59
ARGXM		.EQU	FOP+5	; byte temporaneo
60
FPWTmp5		.EQU	FOP+6	; word temporanea
61
FPTmp6		.EQU	FOP+8	; byte temporaneo
62
 
63
; Floating Point Accumulator #1 - FAC
64
FACSGN		.DB		; FAC mantissa sign
65
FACEXT		.DB		; FAC 8 bit extension (rounding)
66
FACM		DQ		; FAC Mantissa (64 bit)
67
FACExp		.DW		; FAC Exponent
68
FACEXPL		.EQU	FACExp		; FAC Exponent Low
69
FACEXPH		.EQU	FACExp+1	; FAC Exponent Hi
70
 
71
FACSCMP		.DB		; Sign Comparison Result: FAC vs ARG
72
FACMlt		.DB		; flag MULT
73
FACUndf		.DB		; conteggio shift per underflow
74
FPDCnt		.DB		; contatore per inserzione punto decimale
75
 
76
; Floating Point Accumulator #2 - ARG
77
ARGSGN		.DB		; ARG mantissa sign
78
ARGEXT		.DB		; ARG 8 bit extension (rounding)
79
ARGM		DQ		; ARG Mantissa (64 bit)
80
ARGExp		.DW		; ARG Exponent
81
ARGEXPL		.EQU	ARGExp		; ARG Exponent Low
82
ARGEXPH		.EQU	ARGExp+1	; ARG Exponent Hi
83
 
84
; numero bytes FAC
85
FACSIZE		.EQU	(FACEXPH - FACEXT)
86
MANTSIZE	.EQU	(FACSIZE - 2)
87
FACMBITS	.EQU	(MANTSIZE * 8)
88
FAC		.EQU	FACEXT
89
ARG		.EQU	ARGEXT
90
 
91
FPWTmp		.DW
92
FPExp		.DW		; esponente conversioni str/float
93
FPLPtr		LP		; long ptr operazioni move
94
FPFlag		.DB		; flag generico operazioni FPU
95
FACTmp		.DS	12	; registro FAC temporaneo (con sgn ed ext)
96
 
97
; buffer per conversione da int/float a string (20 digit + 2)
98
FPSTRSIZE	.EQU	22
99
FPUStr		.DS	FPSTRSIZE
100
 
101
; buffer per formattazione int/float
102
XFSTRSIZE	.EQU	48
103
XCVTStr		.DS	XFSTRSIZE
104
XCVTStrEnd	.EQU	($ - 1)
105
 
106
DUMMY100	.DS	22
107
 
108
PTR1	.EQU	FPLPtr		; long ptr operazioni 'move'
109
FPFLAG	.EQU	FPFlag
110
FPDCNT	.EQU	FPDCnt
111
 
112
	.RELATIVE
113
 
114
	.ENDS
115
 
116
MAXMANTSHIFT	.EQU	(-(FACMBITS + 16))	; max. shift divisione mant.
117
XCVTMAXF	.EQU	(XFSTRSIZE - 1)		; max. caratteri formato F
118
XCVTMAXE	.EQU	(XCVTMAXF -  8)		; max. caratteri formato E
119
XCVTMAXI	.EQU	(XFSTRSIZE - 2)		; max. caratteri stringa int.
120
 
121