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