MACHINE 68000 INCDIR "c:/Users/capitano/Documents/giochino/" INCLUDE "custom.i" SECTION Code,CODE_C START: ; Don't use OS calls - we're booting from scratch lea CUSTOM,a6 ; Save old DMA/INT state move.w DMACONR(a6),d0 or.w #$8000,d0 move.w d0,OldDmaCon move.w INTENAR(a6),d0 or.w #$8000,d0 move.w d0,OldIntEna ; Disable interrupts and DMA move.w #$7FFF,INTENA(a6) move.w #$7FFF,DMACON(a6) move.w #$7FFF,INTREQ(a6) ; Setup 1 bitplane display move.w #$1200,BPLCON0(a6) move.w #0,BPLCON1(a6) move.w #0,BPLCON2(a6) move.w #0,BPL1MOD(a6) ; Display window move.w #$2c81,DIWSTRT(a6) move.w #$2cc1,DIWSTOP(a6) move.w #$0038,DDFSTRT(a6) move.w #$00d0,DDFSTOP(a6) ; Set bitplane pointer lea Screen(pc),a0 move.l a0,d0 move.w d0,BPL1PTL(a6) swap d0 move.w d0,BPL1PTH(a6) ; Set colors move.w #$0000,COLOR00(a6) ; Black background move.w #$0FF0,COLOR01(a6) ; Green text ; Setup Copper (simple - just colors) lea CopperList(pc),a0 move.l a0,d0 move.w d0,COP1LCL(a6) swap d0 move.w d0,COP1LCH(a6) move.w #0,COPJMP1(a6) ; Enable DMA move.w #$83C0,DMACON(a6) ; Clear screen lea Screen(pc),a0 move.w #(40*256)/4-1,d0 .clear: move.l #0,(a0)+ dbf d0,.clear ; Draw simple text lea WelcomeMsg(pc),a0 moveq #5,d0 ; X moveq #10,d1 ; Y bsr DrawText MAIN_LOOP: ; Wait VBlank bsr WaitVBlank ; Check mouse button to exit btst #6,CIAA bne.s MAIN_LOOP EXIT: ; Restore and exit (reboot) lea CUSTOM,a6 move.w #$7FFF,DMACON(a6) move.w #$7FFF,INTENA(a6) ; Cold reboot lea $1000000,a0 jmp (a0) WaitVBlank: lea CUSTOM,a6 .wait: move.l $04(a6),d0 and.l #$1ff00,d0 cmp.l #300<<8,d0 bne.s .wait rts ; DrawText - Simple version ; a0=string, d0=X, d1=Y DrawText: movem.l d0-d3/a0-a2,-(sp) lea Screen(pc),a1 mulu #320,d1 add.l d1,a1 add.w d0,a1 .loop: move.b (a0)+,d2 beq.s .done cmp.b #32,d2 blt.s .loop sub.b #32,d2 ext.w d2 lea Font8x8(pc),a2 lsl.w #3,d2 add.w d2,a2 move.b (a2)+,(a1) move.b (a2)+,40(a1) move.b (a2)+,80(a1) move.b (a2)+,120(a1) move.b (a2)+,160(a1) move.b (a2)+,200(a1) move.b (a2)+,240(a1) move.b (a2)+,280(a1) addq.w #1,a1 bra.s .loop .done: movem.l (sp)+,d0-d3/a0-a2 rts ; Data CNOP 0,4 CopperList: DC.W COLOR00,$0000 DC.W COLOR01,$0FF0 DC.W $FFFF,$FFFE WelcomeMsg: dc.b "OFFICE EMAIL GAME",0 dc.b "CLICK MOUSE TO EXIT",0 OldDmaCon: dc.w 0 OldIntEna: dc.w 0 CNOP 0,2 Font8x8: ; Minimal font (space + A-Z) dc.b $00,$00,$00,$00,$00,$00,$00,$00 ; Space dcb.b 8*15,0 ; Skip to A dc.b $18,$24,$42,$42,$7E,$42,$42,$00 ; A dc.b $7C,$42,$42,$7C,$42,$42,$7C,$00 ; B dc.b $3C,$42,$40,$40,$40,$42,$3C,$00 ; C dc.b $78,$44,$42,$42,$42,$44,$78,$00 ; D dc.b $7E,$40,$40,$78,$40,$40,$7E,$00 ; E dc.b $7E,$40,$40,$78,$40,$40,$40,$00 ; F dc.b $3C,$42,$40,$4E,$42,$42,$3C,$00 ; G dc.b $42,$42,$42,$7E,$42,$42,$42,$00 ; H dc.b $3C,$18,$18,$18,$18,$18,$3C,$00 ; I dc.b $06,$06,$06,$06,$06,$46,$3C,$00 ; J dc.b $44,$48,$50,$60,$50,$48,$44,$00 ; K dc.b $40,$40,$40,$40,$40,$40,$7E,$00 ; L dc.b $42,$66,$5A,$42,$42,$42,$42,$00 ; M dc.b $42,$62,$52,$4A,$46,$42,$42,$00 ; N dc.b $3C,$42,$42,$42,$42,$42,$3C,$00 ; O dc.b $7C,$42,$42,$7C,$40,$40,$40,$00 ; P dc.b $3C,$42,$42,$42,$52,$4A,$3C,$00 ; Q dc.b $7C,$42,$42,$7C,$48,$44,$42,$00 ; R dc.b $3C,$40,$40,$3C,$02,$02,$3C,$00 ; S dc.b $7E,$18,$18,$18,$18,$18,$18,$00 ; T dc.b $42,$42,$42,$42,$42,$42,$3C,$00 ; U dc.b $42,$42,$42,$42,$42,$24,$18,$00 ; V dc.b $42,$42,$42,$5A,$5A,$66,$42,$00 ; W dc.b $42,$24,$18,$18,$18,$24,$42,$00 ; X dc.b $42,$42,$24,$18,$18,$18,$18,$00 ; Y dc.b $7E,$04,$08,$10,$20,$40,$7E,$00 ; Z CNOP 0,4 Screen: ds.b 40*256 END