;STEAL font program bra skip filename: dc.b "big2.FNT",0 ;destination name even pic: incbin "big_2_2.pi1" ;source picture even skip bsr set_super dc.w $a00a bsr get_screen_base bsr get_old_palette bsr set_new_palette bsr get_original_rez bsr set_low_rez move.l screen_base,a1 lea pic+34,a0 move.w #32000/4-1,d0 loop: move.l (a0)+,(a1)+ dbf d0,loop DEPTH equ 32 move.l screen_base,a0 move.l a0,a6 lea buffer,a1 moveq #4-1,d2 repeat move.l a6,a0 move.w #(10*4)-1,d1 across: move.w #DEPTH-1,d0 shift move.b (a0),(a1)+ move.b 2(a0),(a1)+ move.b 4(a0),(a1)+ move.b 6(a0),(a1)+ not.b (a0) add.w #160,a0 bsr pause dbf d0,shift sub.w #(160*DEPTH)-1,a0 move.w a0,d0 btst.l #0,d0 bne.s .ok addq.w #6,a0 .ok dbf d1,across add.w #DEPTH*160,a6 add.w #1*160,a6 dbf d2,repeat move.l a1,a5 ;now save bsr f_create move.l a5,a1 bsr f_write bsr f_close wait: bsr get_key CMP.B #27,D0 ;Wait for ESC. bne wait bsr set_old_palette bsr set_med_rez dc.w $a009 bsr set_user MOVE.W #$0,-(SP) ; RETURN TO GEM DESKTOP. TRAP #1 RTS *********************** * SUBROUTINES SECTION * *********************** f_create: move.w #0,-(sp) pea filename move.w #$3c,-(sp) trap #1 add.l #8,sp move.w d0,handle rts f_write: lea buffer,a0 sub.l a0,a1 move.l #buffer,-(sp) move.l a1,-(sp) move.w handle,-(sp) move.w #$40,-(sp) trap #1 add.l #12,sp rts f_close: move.w handle,-(sp) move.w #$3e,-(sp) trap #1 addq.l #4,sp rts pause: move.w d0,-(sp) move.w #100,d0 pau: nop dbf d0,pau move.w (sp)+,d0 rts get_key: move.w #7,-(sp) trap #1 addq.l #2,sp rts set_super: clr.l -(sp) ;Set super stack equal move.w #$20,-(sp) ; to user stack before call trap #1 addq.l #6,sp ;correct stack move.l d0,stack_save ;save old supervisor stack value rts set_user: move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 ;back to user addq.l #6,sp ;correct stack rts get_old_palette: move.w #8-1,d0 lea $ff8240,a0 lea old_palette,a1 get_old: move.l (a0)+,(a1)+ dbf D0,get_old rts set_new_palette: lea pic+2,a0 bra set_pal set_old_palette: lea old_palette,a0 set_pal: lea $ff8240,a1 move.w #8-1,d0 set_p: move.l (a0)+,(a1)+ dbf d0,set_p rts get_screen_base: move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,screen_base rts get_original_rez: move.w #4,-(sp) trap #14 addq.l #2,sp move.w d0,original_rez rts set_low_rez: clr.w -(sp) bra set_rez set_med_rez: move.w #1,-(sp) set_rez: move.l #-1,-(sp) move.l #-1,-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts **************** * DATA SECTION * **************** stack_save: dc.l 0 screen_base dc.l 0 original_rez: dc.w 0 handle: dc.w 0 old_palette: ds.w 16 even buffer: ds.l 10000