MILC logo

IndexVorigeVolgendeLeeg

Listing 1 van 'Met mathpack routines rekenen in ML'
Jan vd Meer?, 00-00-00


    
;ASSEMBLERLISTING 1
;------------------
DAC     EQU  #F7F6    ;Buffer 1e rekenfactor of uitkomst berekening
ARG     EQU  #F847    ;Buffer 2e rekenfactor
VALTYP	EQU  #F663    ;Type code van variabele (= aantal relevante bytes)
FIN     EQU  #3299    ;Conversie ascii-Z string naar mathpack notatie
FOUT    EQU  #3425    ;Conversie mathpak notatie naar afdrukbare string
FRCDBL  EQU  #303A    ;Conversie integer DAC+2/+3 naar dubb.preciesie (DAC)
DECDIV  EQU  #289F    ;DAC / ARG ----> DAC (delen)
MAF     EQU  #2C4D    ;DAC  ----> ARG
ENTRY_A EQU  #F580    ;Invuladres voor entry-adres van mathpack routine
STRING1 EQU  #F59D    ;Opslag te typen numerieke string (1e byte = lengte)
RESULT1 EQU  #F5BD    ;Opslag resultaat (valtyp + mathpack notatie)
RESULT2 EQU  #F5C6    ;Idem
;-----------------
        LD   HL,MATHP_0 ;Beginadres te kopie‰ren ML-code (bronadres)
        LD   DE,#F55E   ;Input-buffer (doeladres)
        LD   BC,#003F   ;Aantal bytes
        LDIR            ;ML-code kopie‰ren naar inputbuffer #F55E
        JP   NEXT       ;(zie assemblerlisting 2)
;--------------------------------------
;NAAR INPUT-BUFFER TE KOPIEEREN ML-CODE
;--------------------------------------
;Input: #FF in 'A' indien basic-rom aan te schakelen, else #00

MATHP_0 INC  A          ;Basic-rom aanschakelen ?
        PUSH AF         ;     Save vlaggen
        JR   NZ,MATHP_1 ;Nee
	IN   A,(#A8)	;Inhoud slotregister
	LD   (#F59B),A	; opslaan
        LD   A,(#FFFF)  ;Lees komplement van subslotregister
        CPL             ;Werkelijk inhoud van subslotregister
	LD   (#F59C),A	; opslaan
        LD   A,(#FCC1)  ;Slotadres basic-ROM
        LD   H,#40      ;ID page 1
        CALL #0024      ;Basic-rom aanschakelen
        LD   HL,#F59E   ;Pointer naar begin ascii-Z string
        LD   A,(HL)     ;Eerste karakter van string
MATHP_1 PUSH IX
        PUSH IY
        LD   IX,#3299   ;Entry-adres mathpack-routine "FIN"
                        ;  NOOT: Invuladres voor ander entry-adres = #F580
	LD   IY,(#FCC0) ;Slot ID biosrom
        CALL #001C      ;Mathpack-routine uitvoeren
        POP  IY
        POP  IX
        POP  AF         ;Herstel vlaggen
        RET  NZ         ;RET indien rom niet aangeschakeld werd
        LD   A,(#F59B)  ;Oude instelling slotregister
        OUT  (#A8),A    ; herstellen
        LD   A,(#F59C)  ;Oude instelling subslotregister
        LD   (#FFFF),A  ; herstellen
        RET
        DEFS 1          ;Opslag slotregister    (adres = #F59B)
        DEFS 1          ;Opslag subslotregister (adres = #F59C)
;---------------------------------------------------------------

    

Index

Vorige

Volgende