type› adr = integers;›› dlinst = record› op : byte; (* display list instruction *)› addrop: adr; (* address for op *)› end; (*dlinst*)›› dlrec = record› bl8lines : array [0..2] of byte; (* blank 8 lines *)› lms : array [0..12] of dlinst; (* 3 byte DL instructions *)› end; (*dlrec*)››var› i,j : adr;› dl : ^dlrec; (* pointer to type dlrec *)› dladdr : absolute [$230] ^dlrec; (*address of display list pointer *)››procedure initdl; (*initialize display list*)› var› i : integer;››begin› dl := dladdr; (* point to the current DL *)›› dl^.bl8lines[0] := 112; (*blank 8 scan lines*)› dl^.bl8lines[1] := 112;› dl^.bl8lines[2] := 112;›› for i := 0 to 11 do› begin (* set the top op and address in modified DL *)› dl^.lms[i].op := 71; (* load memory scan basic 2*)› dl^.lms[i].addrop := i*256› end; (*for*)›› dl^.lms[12].op := 65; (*jump vertical blank*)› dl^.lms[12].addrop := dladdr;›end; (*initdl*)››begin (* main procedure *)› initdl;› while TRUE do› begin› for i := 0 to 235 do› begin (* loop through a page *)› for j := 0 to 11 do› begin (* set the 12 lines addresses *)› dl^.lms[j].addrop := (dl^.lms[j].addrop & $ff00) + i›(* add one to the address, do not change the page the address points to *)› end; (*for j*)› end; (*for i*)› end;›end;›