incdir includes: include lvos.i include exec/exec.i include datatypes/datatypes.i include datatypes/datatypesclass.i include libraries/cybergraphics.i include lvo/cybergraphics_lib.i include datatypes/pictureclass.i include libraries/reqtools.i include lvo/reqtools_lib.i include graphics/scale.i include lvo/mrqutilities_lib.i include libraries/mrqutilities.i minterm1=$e2 minterm2=$c0 bsr.w args move.l obraz,obr+4 bsr.w openall cmp.l #FALSE,d0 beq.w _nodt ;------- ;wyōwietlenie tekstu w konsoli move.l mrqbase,a6 lea text1,a0 jsr _LVOPrint(a6) move.l obraz,a0 jsr _LVOPrint(a6) jsr _LVOReturn(a6) ;------- bsr.w lock ;zalokowanie ekranu do którego ma byź ;remapowana grafika move.l d0,window+4 ;------- moveq #$00,d2 moveq #$00,d3 move.l obraz,a0 ;nazwa pliku move.l d0,a1 ;ekran do którego zremapowaź obrazek move.l #TRUE,d0 ;czy produkowaź maskė move.l #TRUE,d1 ;czy skalowaź do wymiarów ekr. move.w sc_Width(a1),d2 ;x move.w sc_Height(a1),d3 ;(y) move.l #TRUE,d4 ;czy skalowaź w pionie move.l #BMF_DISPLAYABLE,d5 ;wykorzystanie blittera kart graficznych move.l #FALSE,d6 ;czy produkowac zinwertowana maske move.l mrqbase,a6 jsr _LVOLoadPic(a6) move.l d0,-(a7) bsr.w wyswhex move.l mrqbase,a6 move.l LoadPicError(a6),d0 bsr.w wyswhex move.l (a7)+,d0 move.l d0,bm_struct cmp.l #FALSE,d0 bne.b _yes lea text3,a0 bsr.w info2 bra.w quit _yes lea oktext,a0 move.l mrqbase,a6 jsr _LVOPrint(a6) move.l bm_struct,a5 move.l dtl_Picture(a5),a0 move.l a0,picek move.l dtl_Mask(a5),a0 move.l a0,maska move.l dtl_Width(a5),d0 move.l d0,w move.l d0,w3+4 move.l dtl_Height(a5),d0 move.l d0,h move.l d0,w4+4 move.l dtl_Colorkey(a5),kolorkey move.l dtl_IsInterLeaved(a5),interl bsr.w openwindow tst.l d0 beq.w quit moveq #$00,d0 moveq #$00,d1 moveq #$00,d2 moveq #$00,d3 move.l w,d4 move.l h,d5 move.l #minterm1,d6 move.l picek,a0 move.l wi_rastport,a1 move.l maska,a2 move.l mrqbase,a6 move.l gfxbase1(a6),a6 jsr _LVOBltMaskBitMapRastPort(a6) bsr.w disp_inf move.l winbase,a0 move.l wd_UserPort(a0),message ;------- petla move.l message,a0 move.l 4,a6 jsr _LVOGetMsg(a6) tst.l d0 ;czekanie na gadūet zamkniecie okna bne.b jest move.l message,a0 jsr _LVOWaitPort(a6) bra.b petla jest move.l d0,a1 move.l (im_Class,a1),d2 move.w (im_Code,a1),d3 jsr _LVOReplyMsg(a6) cmp.l #IDCMP_CLOSEWINDOW,d2 ;czy kod zamkniecia okna bne.b petla ;------- quit move.l mrqbase,a6 move.l intbase1(a6),a6 move.l winbase,a0 tst.l a0 beq.b _j jsr _LVOCloseWindow(a6) _j tst.l bitmap+4 beq.b baa2 move.l mrqbase,a6 move.l bitmap+4,a0 jsr _LVOFreeBitMapA(a6) clr.l bitmap+4 baa2 ;------- bsr.w unlock move.l bm_struct,a0 move.l mrqbase,a6 jsr _LVOFreePic(a6) .l move.l mrqbase,a6 lea text2,a0 jsr _LVOPrint(a6) ;------- clean bsr.w closebib move.l #$00,d0 rts ;------- _nodt move.l #$20,d0 rts ;------- disp_inf move.l mrqbase,a6 jsr _LVOReturn(a6) move.l depth,d0 bsr.w wyswhex move.l abitmap1,d0 bsr.w wyswhex move.l bitmap+4,d0 bsr.w wyswhex move.l iscgx1,d0 bsr.w wyswhex move.l iscgx2,d0 bsr.w wyswhex move.l result,d0 bsr.w wyswhex move.l mode_id,d0 bsr.w wyswhex move.l w3+4,d0 bsr.w wyswhex move.l w4+4,d0 bsr.w wyswhex move.l abitmap1,a0 moveq #$00,d0 move.w bm_BytesPerRow(a0),d0 bsr.w wyswhex move.l abitmap1,a0 moveq #$00,d0 move.w bm_Rows(a0),d0 bsr.w wyswhex move.l kolorkey,d0 bsr.w wyswhex move.l interl,d0 bsr.w wyswhex move.l trans,d0 bsr.w wyswhex rts ;------- depth dc.l $00 abitmap1 dc.l $00 iscgx1 dc.l $00 iscgx2 dc.l $00 result dc.l $00 mode_id dc.l $00 kolorkey dc.l $00 interl dc.l $00 trans dc.l $00 ;------- check_bit move.l #CYBRMATTR_ISCYBERGFX,d0 move.l mrqbase,a6 move.l cgxbase1(a6),a6 tst.l a6 bne.b .k4 move.l #$eaeaeaea,d0 bra.b .j1 .k4 jsr _LVOGetCyberMapAttr(a6) ;sprawdzenie czy bitmapa jest .j1 rts ;------- openwindow move.l window+4,a0 add.l #sc_RastPort,a0 move.l rp_BitMap(a0),a0 move.l a0,bit move.l a0,abitmap1 move.l window+4,d0 add.l #sc_ViewPort,d0 move.l d0,a0 move.l mrqbase,a6 move.l gfxbase1(a6),a6 jsr _LVOGetVPModeID(a6) move.l d0,mode_id move.l mrqbase,a6 tst.l cgxbase1(a6) beq.b .ncgx move.l d0,d1 move.l #CYBRIDATTR_DEPTH,d0 move.l mrqbase,a6 move.l cgxbase1(a6),a6 jsr _LVOGetCyberIDAttr(a6) and.l #$000000ff,d0 cmp.b #$ff,d0 beq.b .ncgx bra.b .ycgx .ncgx move.l bit,a0 move.b bm_Depth(a0),d0 and.l #$000000ff,d0 .ycgx move.l d0,depth move.l d0,d2 move.l w3+4,d0 move.l w4+4,d1 move.l #BMF_MINPLANES,d3 move.l bit,a0 ;friend move.l mrqbase,a6 jsr _LVOAllocBitMapA(a6) ;alokacja bitmapy dla okna tst.l d0 bne.b .ok0 lea eer5,a0 move.l mrqbase,a6 jsr _LVOPrint(a6) move.l #FALSE,d0 rts .ok0 move.l d0,bitmap+4 move.l bit,a0 move.l bitmap+4,a1 move.l w1+4,d0 move.l w2+4,d1 moveq #$00,d2 moveq #$00,d3 move.l w3+4,d4 move.l w4+4,d5 move.l #minterm2,d6 move.l #$ff,d7 move.l mrqbase,a6 move.l gfxbase1(a6),a6 jsr _LVOBltBitMap(a6) ;prześroczyste okno move.l d0,result move.l abitmap1,a0 bsr.w check_bit move.l d0,iscgx1 move.l bitmap+4,a0 bsr.w check_bit move.l d0,iscgx2 move.l mrqbase,a6 move.l intbase1(a6),a6 move.l #$00,a0 lea window,a1 jsr _LVOOpenWindowTagList(a6) tst.l d0 bne.b .ok1 lea eer1,a0 move.l mrqbase,a6 jsr _LVOPrint(a6) move.l #FALSE,d0 rts .ok1 move.l d0,winbase move.l d0,a0 move.l wd_RPort(a0),wi_rastport move.l #TRUE,d0 rts ;------- openall move.l 4,a6 lea mrqlib,a1 moveq #$00,d0 jsr _LVOOpenLibrary(a6) tst.l d0 beq.b _nodt1 move.l d0,mrqbase move.l #TRUE,d0 rts _nodt1 move.l #FALSE,d0 rts ;------- closebib move.l 4,a6 move.l mrqbase,a1 tst.l a1 beq.b .j0 jmp _LVOCloseLibrary(a6) .j0 rts ;------- unlock cmp.l #FALSE,lock_sc beq.b .a1 tst.l wbbase beq.b .a1 move.l #$00,a0 move.l mrqbase,a6 move.l intbase1(a6),a6 move.l wbbase,a1 jsr _LVOUnLockPubScreen(a6) move.l #FALSE,lock_sc .a1 rts ;------- lock move.l #$00,a0 move.l mrqbase,a6 move.l intbase1(a6),a6 jsr _LVOLockPubScreen(a6) move.l d0,-(a7) add.l #sc_ViewPort,d0 move.l d0,viewport_wb move.l (a7)+,d0 move.l d0,-(a7) add.l #sc_RastPort,d0 move.l d0,sc_rastport move.l (a7)+,d0 move.l #TRUE,lock_sc rts ;------- args move.l a0,obraz add.l d0,a0 subq #$01,a0 clr.b (a0) move.l #255,d1 aa0 subq #$01,a0 move.b (a0),d0 cmp.b #' ',d0 bne.b aa1 clr.b (a0) dbf d1,aa0 aa1 move.l obraz,a0 move.l a0,a2 move.b (a0),d0 cmp.b #'"',d0 bne.b aa2 move.l a0,a1 add.l #$01,a1 move.l #255,d1 aa4 move.b (a1)+,d0 cmp.b #'"',d0 beq.b aa3 tst.b d0 beq.b aa3 move.b d0,(a0)+ dbf d1,aa4 aa3 clr.b (a0)+ clr.b (a0)+ aa2 move.l a2,a0 rts ;------- info2 move.l a0,a1 request tst.l a1 beq.b .a1 movem.l d0-a6,-(sp) move.l mrqbase,a6 move.l reqbase1(a6),a6 lea text0,a2 sub.l a3,a3 sub.l a4,a4 lea Tags,a0 jsr _LVOrtEZRequestA(a6) movem.l (sp)+,d0-a6 .a1 rts ;------- wyswhex movem.l d0-a6,-(sp) lea string,a1 tst.l a1 bne.b _no1 movem.l (sp)+,d0-a6 rts _no1 move.b #'$',(a1)+ lea tabelka,a0 swap d0 move.l d0,-(sp) and.l #$f000,d0 lsr.l #8,d0 lsr.l #4,d0 move.b (a0,d0.w),(a1)+ move.l (sp)+,d0 move.l d0,-(sp) and.l #$0f00,d0 lsr.l #8,d0 move.b (a0,d0.w),(a1)+ move.l (sp)+,d0 move.l d0,-(sp) and.l #$00f0,d0 lsr.w #4,d0 move.b (a0,d0.w),(a1)+ move.l (sp)+,d0 move.l d0,-(sp) and.w #$000f,d0 move.b (a0,d0.w),(a1)+ move.l (sp)+,d0 swap d0 move.l d0,-(sp) and.l #$f000,d0 lsr.l #8,d0 lsr.l #4,d0 move.b (a0,d0.w),(a1)+ move.l (sp)+,d0 move.l d0,-(sp) and.l #$0f00,d0 lsr.l #8,d0 move.b (a0,d0.w),(a1)+ move.l (sp)+,d0 move.l d0,-(sp) and.l #$00f0,d0 lsr.w #4,d0 move.b (a0,d0.w),(a1)+ move.l (sp)+,d0 move.l d0,-(sp) and.w #$000f,d0 move.b (a0,d0.w),(a1)+ clr.b (a1)+ move.l (sp)+,d0 movem.l (sp)+,d0-a6 lea string,a0 move.l mrqbase,a6 jsr _LVOPrint(a6) jmp _LVOReturn(a6) ;------- window dc.l WA_PubScreen,0 w3 dc.l WA_Width,1 w4 dc.l WA_Height,1 w1 dc.l WA_Left,0 w2 dc.l WA_Top,0 dc.l WA_CloseGadget,TRUE dc.l WA_DragBar,TRUE dc.l WA_DepthGadget,FALSE dc.l WA_IDCMP,IDCMP_CLOSEWINDOW dc.l WA_Borderless,TRUE dc.l WA_Activate,FALSE dc.l WA_SizeGadget,FALSE bitmap dc.l WA_SuperBitMap,$00 obr dc.l WA_Title,$00 dc.l $00,$00 ;------- Tags dc.l RT_Screen,0 dc.l $00,$00 ;------- mrqbase dc.l $00 ;------- object dc.l $00 userport dc.l $00 winbase dc.l $00 lock_sc dc.l $00 wbbase dc.l $00 viewport_wb dc.l $00 modeid dc.l $00 picek dc.l $00 wi_rastport dc.l $00 sc_rastport dc.l $00 screenbase dc.l $00 bm_struct dc.l $00 obraz dc.l $00 message dc.l $00 maska dc.l $00 rastport dc.l $00 type dc.l $00 paleta1 dc.l $00 bit dc.l $00 w dc.l $00 h dc.l $00 ;------- mrqlib dc.b 'mrqutilities.library',0 ;------- text0 dc.b 'Aha, rozumiem...',0 ;------- text1 dc.b 'Īadujė grafikė...',$0a,$0a dc.b 'File =',$00 ;------- text3 dc.b 'Grafika nie zostaīa wczytana. Sā dwie moūliwoōci:',$0a dc.b 'Albo nie ma jej na dysku,',$0a dc.b 'Albo masz zbyt maīo pamiėci,',$0a dc.b 'aby mogīa zostaź poprawnie wczytana.',$00 ;------- text2 dc.b $0a,$0a,$00 ;------- oktext dc.b 'Grafikė wczytano pomyōlnie',$0a,00 eer1 dc.b 'Nie mogė otworzyź okienka!!',$0a,00 eer5 dc.b 'Nie mogė zaalokowaź pamiėci potrzebnej na dane!',$0a,00 ;------- tabelka dc.b '0123456789abcdef' string dc.b '$00000000',$0a,$00 return dc.b $0a,$00 ;-------