;›;Ultima IV overview program›;›;This program shows an overview of›;the Ultima IV Brittannia map using›;Graphics 15. Only the gradation of›;either water or land can be seen at›;one time.›;›;The program assumes BRIT.MAP on the›;default drive.›;›BYTE keyp=764,dma=559,dma2=54272,w1,w2,›w3›CARD dl=560›BYTE ARRAY Sc(512),co=708,ndl=40192,›bdl=[112 112 112],edl=[65 0 93],›mdl=[78 0 93]››PROC mkdl()›dl=ndl›MoveBlock(ndl,bdl,3)›MoveBlock(ndl+3,mdl,3)›MoveBlock(ndl+6,ndl+3,573)›MoveBlock(ndl+579,edl,3)›RETURN››PROC Disp(BYTE x,y)›CARD POINTER q›CARD p›BYTE i›p=23808+x+y*64›q=ndl+4›FOR i=0 TO 191 DO› q^=p p==+64 q==+3›OD›RETURN››PROC CIO=$E456(BYTE A,BYTE X)››CARD FUNC Burst(BYTE chan,mode,›CARD addr,buflen)›TYPE IOCB=[BYTE id,num,cmd,stat›CARD badr,padr,blen›BYTE a1,a2,a3,a4,a5,a6]›IOCB POINTER iptr›chan==&$07›iptr=$340+(chan LSH 4)›iptr.cmd=mode›iptr.blen=buflen›iptr.badr=addr›CIO(0,chan LSH 4)›RETURN(iptr.blen)››CARD FUNC BGet(BYTE chan CARD addr,len)›CARD temp›temp=Burst(chan,7,addr,len)›RETURN(temp)››PROC Init()›BYTE k›Graphics(0)›Print("Ěand or ×ater gradient?")›w1=0›DO› k=GetD(7)› IF (k='L) OR (k='l) THEN› w1=3› w2=5› w3=8› ELSEIF (k='w) OR (k='W) THEN› w1=1› w2=2› w3=3› FI›UNTIL w1#0 OD›Graphics(15+16)›mkdl()›dma=0 dma2=0›IF w1=3 THEN› co^=6› co(1)=10› co(2)=14› co(4)=128›ELSE› co^=128+32+4› co(1)=128+16+2› co(2)=0› co(4)=128›FI›RETURN››PROC Display(BYTE ux,uy)›BYTE xp,yp,f,bt,qq,g,bb›BYTE POINTER scp,lk›CARD ooscp,oscp,q,p›Close(1)›Open(1,"D:BRIT.MAP",4,0)›scp=93*256›FOR yp=0 TO 15 DO› ooscp=scp+1024;16*64› FOR xp=0 TO 15 DO› oscp=scp+4› q=(xp+yp*16)*256› Point(1,q,0)› BGet(1,Sc,256)› lk=sc› f=0› DO› FOR qq=0 TO 3 DO› bt=0› FOR g=0 TO 3 DO› bb=lk^› IF bb