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 |