; $Id: memclr.mac 1280 2022-08-15 09:12:03Z mueller $ ; SPDX-License-Identifier: GPL-3.0-or-later ; Copyright 2009-2022 by Walter F.J. Mueller ; ; Revision History: ; Date Rev Version Comment ; 2022-08-09 1277 2.0 ported to asm-11 ; 2009-07-04 231 1.0 Initial version (for RT-11 MACRO-11) ; ; Program to clear all available memory ; ; definitions ; .include |lib/defs_cpu.mac| .include |lib/defs_reg70.mac| .include |lib/defs_mmu.mac| ; kipdr0=kipdr+ 0 kipdr1=kipdr+ 2 kipdr7=kipdr+16 kipar0=kipar+ 0 kipar1=kipar+ 2 kipar7=kipar+16 ; ; set up vector catchers ; .include |lib/vec_cpucatch.mac| ; ; setup 2 word code starting at 0 will zero the main part of the memclr ; this will be the only trace left when memclr halts .=0 beg: clr (r3)+ sob r1,beg ; ; main clear routine, will be erased by code at 0 and 2 at the end... ; .=200 start: mov #start,sp reset mov #end,r0 ; r0=end-of-code address add #76,r0 bic #76,r0 ; r0=base of first free click ; mov r0,r1 ash #-6.,r1 ; r1=size of memclr in clicks ; mov @#losize,r2 ; memory size in clicks sub r1,r2 ; r2=clicks to be cleared ; mov #000000,@#kipar0 ; page 0: base 0 mov #<127.*md.plf>!md.arw,@#kipdr0 ; 128 clicks, read/write mov r1,@#kipar1 ; page 1: base above memclr mov #<127.*md.plf>!md.arw,@#kipdr1 ; 128 clicks, read/write mov #177600,@#kipar7 ; page 7: io page mov #<127.*md.plf>!md.arw,@#kipdr7 ; 128 clicks, read/write ; mov #m3.e22,@#mmr3 ; enable 22bit mapping mov #m0.ena,@#mmr0 ; enable mmu ; nxtblk: mov #020000,r3 ; base of page 1 clr (r3)+ ; clear a click (64 byte/32 words) clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ ; +8 clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ ; +16 clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ ; +24 clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ clr (r3)+ inc @#kipar1 ; advance to next click sob r2,nxtblk ; and go till end ; mov #0000004,r3 ; clear now from here ash #5.,r1 ; size of memclr in words jmp @#beg ; end: ; end-of-code ; .end start