mirror of
https://github.com/wfjm/w11.git
synced 2026-01-21 10:42:10 +00:00
105 lines
2.9 KiB
Plaintext
105 lines
2.9 KiB
Plaintext
; $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 <W.F.J.Mueller@gsi.de>
|
|
;
|
|
; 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
|