Subversion Repositories MB01 Project

Rev

Blame | Last modification | View Log | Download | RSS feed

;----------------------------------------------------------
; DIRP02.ASM
; PROGETTO: B1601
;
; Variabili in Direct Page $02
;----------------------------------------------------------

; sezione COMMON -- questo permette di includere il file in piu' file

DIRP02: .SECTION page0, ref_only, common        ;Direct-Page 02

        .ABSOLUTE               ;; inizia sempre da $00
        .ORG            0x00
        
; variabili usate nella funzione _vprintl e famiglia funzioni di formattazione
FmtParm         .DW             ;; ptr array parametri banco 0
FmtLPFmt        LP              ;; long ptr stringa szFmt
FmtLPPut        LP              ;; long ptr funzione 'putter'
FmtSpec         .DB             ;; indice '%' corrente in szFmt
FmtWidth        .DB             ;; campo width
FmtPrec         .DB             ;; campo precision
FmtFlag         .DB             ;; flag formattazione
FmtSgn          .DB             ;; segno positivo (se 0 -> no segno)
VStoreF         .DB             ;; flag modo store 
FmtMod          .DB             ;; flag modificatori
FmtDst          .DB             ;; ptr stringa szDst banco 0

FmtCnt          .DW             ;; contatore caratteri
FmtGMax         .DW             ;; max. len stringa globale
                
XVDec           .DW             ; esponente decimale (signed)
XVFlag          .DB             ; flag per conversioni numeriche
                                
ACMCmps         .DB             ; flag compare segno e tipo (intero)

ACM             DQ              ; accumulatore #1 integer 64 bit
ACMSize         .DB             ; size
ACMSgn          .DB             ; <7>:segno, <6>:tipo signed 
ACMMinSize      .DB             ; minima dimensione richiesta per ACM
IARGMinSize     .DB

FPTmp1          .DB             ; byte temporaneo
FPTmp2          .DB             ; byte temporaneo
FPTmp3          .DB             ; byte temporaneo
FPTmp4          .DB             ; byte temporaneo

IARG            DQ              ; accumulatore #2 integer 64 bit
IARGSize        .DB             ; size
IARGSgn         .DB             ; <7>:segno, <6>:tipo signed 

FOP             DS      9       ; temporaneo per FDIV/FMULT/integer MULT/DIV
                                ; conversione integer -> string
FPIndx          .DB             ; byte generico indice
FPWTmp7         .DW             ; word temporanea
FPWTmp8         .DW             ; word temporanea

; variabili temporanee sovrapposte a FOP
FACXM           .EQU    FOP+4   ; byte temporaneo
ARGXM           .EQU    FOP+5   ; byte temporaneo
FPWTmp5         .EQU    FOP+6   ; word temporanea
FPTmp6          .EQU    FOP+8   ; byte temporaneo

; Floating Point Accumulator #1 - FAC
FACSGN          .DB             ; FAC mantissa sign
FACEXT          .DB             ; FAC 8 bit extension (rounding)
FACM            DQ              ; FAC Mantissa (64 bit)
FACExp          .DW             ; FAC Exponent
FACEXPL         .EQU    FACExp          ; FAC Exponent Low
FACEXPH         .EQU    FACExp+1        ; FAC Exponent Hi

FACSCMP         .DB             ; Sign Comparison Result: FAC vs ARG
FACMlt          .DB             ; flag MULT
FACUndf         .DB             ; conteggio shift per underflow
FPDCnt          .DB             ; contatore per inserzione punto decimale
                
; Floating Point Accumulator #2 - ARG
ARGSGN          .DB             ; ARG mantissa sign
ARGEXT          .DB             ; ARG 8 bit extension (rounding)
ARGM            DQ              ; ARG Mantissa (64 bit)
ARGExp          .DW             ; ARG Exponent
ARGEXPL         .EQU    ARGExp          ; ARG Exponent Low
ARGEXPH         .EQU    ARGExp+1        ; ARG Exponent Hi

; numero bytes FAC
FACSIZE         .EQU    (FACEXPH - FACEXT)
MANTSIZE        .EQU    (FACSIZE - 2)
FACMBITS        .EQU    (MANTSIZE * 8)
FAC             .EQU    FACEXT
ARG             .EQU    ARGEXT

FPWTmp          .DW
FPExp           .DW             ; esponente conversioni str/float
FPLPtr          LP              ; long ptr operazioni move
FPFlag          .DB             ; flag generico operazioni FPU
FACTmp          .DS     12      ; registro FAC temporaneo (con sgn ed ext)

; buffer per conversione da int/float a string (20 digit + 2)
FPSTRSIZE       .EQU    22
FPUStr          .DS     FPSTRSIZE

; buffer per formattazione int/float
XFSTRSIZE       .EQU    48
XCVTStr         .DS     XFSTRSIZE
XCVTStrEnd      .EQU    ($ - 1)

DUMMY100        .DS     22

PTR1    .EQU    FPLPtr          ; long ptr operazioni 'move'
FPFLAG  .EQU    FPFlag
FPDCNT  .EQU    FPDCnt
        
        .RELATIVE

        .ENDS

MAXMANTSHIFT    .EQU    (-(FACMBITS + 16))      ; max. shift divisione mant.
XCVTMAXF        .EQU    (XFSTRSIZE - 1)         ; max. caratteri formato F
XCVTMAXE        .EQU    (XCVTMAXF -  8)         ; max. caratteri formato E
XCVTMAXI        .EQU    (XFSTRSIZE - 2)         ; max. caratteri stringa int.