' ' SIMPLE DEMONSTRATION FOR USING 320x240x256 on the Falcon 030 ' based upon sources by Fantomas ' ' (c) 2005/2006 by Simon Sunnyboy / Paradize http://paradize.atari.org/ ' COPY ME, I WANT TO TRAVEL! ' err!=FALSE ON ERROR GOSUB error_handler ON BREAK GOSUB endit ' RESERVE 50000 INLINE palette%,1024 super%=GEMDOS(32,L:0) ! go SUPERVISOR resol&=XBIOS(88,W:-1) ! save old resolution old_phys%=XBIOS(2) ! save old screen buffer%=MALLOC(77824) ! 320x240 + palette 1024 monitor%=XBIOS(89) ! what sort of display? image%=buffer%+1024 IF monitor%=2 vga!=TRUE rgb!=FALSE ~XBIOS(5,L:image%,L:image%,W:3,W:&X100110011) ! VGA: 320x240 256c. yoffset%=20 ELSE rgb!=TRUE vga!=FALSE ~XBIOS(5,L:image%,L:image%,W:3,W:&X11) ! TV: 320x200 256c. yoffset%=0 ENDIF BMOVE &HFFFF9800,palette%,1024 OUT 4,18 ' ** MAIN CODE ** ' FOR i&=0 TO 255 set_color(i&,i&,0,0) ! define a red gradient NEXT i& set_color(255,&HFF,&HFF,&HFF) ! 255 = white ' draw reddish screen FOR x&=0 TO 255 FOR y&=0 TO 239 IF y&<199 PSET x&,y&,x& ELSE PSET x&,y&,255 ENDIF NEXT y& NEXT x& ' endit > PROCEDURE set_color(t&,r&,g&,b&) LOCAL r$,g$,b$ r$=STRING$(2-LEN(HEX$(r&)),"0")+HEX$(r&) ! red g$=STRING$(2-LEN(HEX$(g&)),"0")+HEX$(g&) ! green b$=STRING$(2-LEN(HEX$(b&)),"0")+HEX$(b&) ! blue {ADD(&HFFFF9800,MUL(t&,4))}=VAL("&h"+r$+g$+"00"+b$) ! set the Falcon color reg RETURN ' proper termination > PROCEDURE endit BMOVE palette%,&HFFFF9800,1024 ~GEMDOS(32,L:super%) ! back to USER MODER ~XBIOS(5,L:old_phys%,L:old_phys%,3,resol&) ! restore old screen ~MFREE(buffer%) ! free memory RESERVE OUT 4,8 IF ERR!=TRUE ~FORM_ALERT(1,ERR$(ERR)) ENDIF EDIT RETURN > PROCEDURE error_handler err!=TRUE endit RETURN