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) ;--------------------------------------------------------------- |