; Fil: EXEMPEL.ASM ; F|r: ABC800-serien, Av Kristoffer Eriksson 1987-05-27 ConWrite: = 11 StmTbA: = 65405 Y.Botm: = 65292 ; Botten av BASIC-minnet Y.ComTop: = 65328 ; Toppen av COMMON-variablerna ; Ny l{nk i instruktionslistan. L{nk.StmTab:DEFW 0 ; Utrymme f|r gammal STMTBA. StmTOffs: DEFB 128 ; F|rsta instruktionskod. DEFB 2 ; 1 instruktion i tabellen. ExecPtr: DEFW ExecTab DEFW TextTab DEFW CmplTab TextTab: DEFB 80H DEFM "HEJ" DEFB 0FFH ExecTab: DEFW Exec.Hej CmplTab: DEFW Cmpl.Hej ; Kompilera parametrar o dyl till instruktionen. ; Inmatad text vid (HL), Basic-koder till (DE). Cmpl.Hej: RET ; 'Hej' saknar parametrar. ; Exekvera instruktionen. Exec.Hej: PUSH DE ; Skydda Basic-instruktions-pekaren. LD HL,Hej.Text LD BC,Hej.TextEnd - Hej.Text CALL ConWrite ; Skriv. POP DE RET ; Slut. Hej.Text: DEFM "Hej sj{lv!" DEFB 13, 10 Hej.TextEnd: ResidentEnd: ;_ Initiering _ Init: LD HL,(StmTba) ; L{nka in den nya instruktionsl{nken. LD (L{nk.StmTab),HL LD HL,L{nk.StmTab LD (StmTba),HL LD HL,ResidentEnd LD (Y.Botm),HL ; Skydda det minne programmet ligger i. LD (Y.ComTop),HL RET NUL: DEFM "NUL:" NULEnd: REL PUSH Init REL CALL ; Anropa Init innan relokeringen ; forts{tter. REL PUSH NUL REL PUSH NULEnd-NUL REL CHAIN ; CHAIN:a NUL:, dvs avsluta och g|r NEW.