home *** CD-ROM | disk | FTP | other *** search
- ILABEL TOS\TOS.L
- GEM_INIT
- V_HIDE_C GR_HANDLE
- WIND_GET #0,4,D3,MAXARRAY
- LEA MAXARRAY,A3
- LEA XPOS,A4
- MOVE.L (A3)+,(A4)+
- MOVE.L (A3),(A4)
- WIND_CREATE #63,XPOS,D3
- LEA WIHANDLE,A3
- MOVE.W D3,(A3)
- WIND_SET WIHANDLE,2,FENSTERNAME,D0
- WIND_SET WIHANDLE,3,INFOZEILE,D0
- LEA BREITE,A3
- LSR.W (A3)+
- LSR.W (A3)
- WIND_CALC #1,#63,XPOS,D3,WORKARRAY+2
- LEA CLIPARRAY,A4
- LEA WORKARRAY+2,A3
- MOVE (A3)+,D3
- MOVE (A3)+,D4
- MOVE D3,(A4)+
- MOVE D4,(A4)+
- ADD (A3)+,D3
- SUBQ #1,D3
- MOVE D3,(A4)+
- ADD (A3),D4
- SUBQ #1,D4
- MOVE D4,(A4)
- WIND_OPEN WIHANDLE,XPOS,D3
- VS_CLIP GR_HANDLE,#1,CLIPARRAY
- BSR CLEAR_SCREEN
- BSR PRINT_TEXT
- VS_CLIP GR_HANDLE,#0,CLIPARRAY
- V_SHOW_C GR_HANDLE,#0
- GRAF_MOUSE #0,ADDROUT,D3
- LEA WORKARRAY,A3
- CLR (A3)
- LOOP:
- EVNT_MULTI #%10111,#1,#2,#2,WORKARRAY,WORKARRAY+2,#0,BUF,#0,MBUF,D7,XM,D0,D1
- BTST #0,D7
- BNE ENDE
- BTST #2,D7
- BEQ MF
- MOVE D7,-(A7)
- LEA WORKARRAY+1,A3
- BCHG #0,(A3)
- MOVE.B (A3),D7
- ANDI #1,D7
- MULU #7,D7
- GRAF_MOUSE D7,ADDROUT,D3
- MOVE (A7)+,D7
- MF:
- BTST #1,D7
- BNE ENDE
- BTST #4,D7
- BEQ LOOP
- ;MESSAGE EVENT
- LEA MBUF,A6
- CMPI #WM_CLOSED,(A6)
- BEQ ENDE
- CMPI #WM_FULLED,(A6)
- BNE N_FULLED
- LEA XPOS,A3
- LEA MAXARRAY,A4
- MOVEM.L (A3)+,D0-D1
- MOVEM.L (A4)+,D2-D3
- MOVEM.L D0-D1,-(A4)
- MOVEM.L D2-D3,-(A3)
- REDRAW:
- V_HIDE_C GR_HANDLE
- WIND_UPDATE #1,D0
- WIND_SET WIHANDLE,WF_CURRXYWH,XPOS,D3
- WIND_CALC #1,#63,XPOS,D3,WORKARRAY+2
- LEA CLIPARRAY,A4
- LEA WORKARRAY+2,A3
- MOVE (A3)+,D3
- MOVE (A3)+,D4
- MOVE D3,(A4)+
- MOVE D4,(A4)+
- ADD (A3)+,D3
- SUBQ #1,D3
- MOVE D3,(A4)+
- ADD (A3),D4
- SUBQ #1,D4
- MOVE D4,(A4)
- WIND_UPDATE #0,D0
- V_SHOW_C GR_HANDLE,#0
- BRA LOOP
- N_FULLED:CMPI #WM_SIZED,(A6)
- BNE.S N_SIZED
- LEA XPOS,A3
- ADDQ.L #8,A6
- MOVE.L (A6)+,(A3)+
- MOVE.L (A6),(A3)
- BRA REDRAW
- N_SIZED:CMPI #WM_MOVED,(A6)
- BNE N_MOVED
- LEA XPOS,A3
- ADDQ.L #8,A6
- MOVE.L (A6)+,(A3)+
- MOVE.L (A6),(A3)
- BRA REDRAW
- N_MOVED:CMPI #WM_REDRAW,(A6)
- BNE LOOP
- MOVE WIHANDLE,D0
- CMP 6(A6),D0
- BNE LOOP
- V_HIDE_C GR_HANDLE
- WIND_UPDATE #1,D0
- WIND_GET WIHANDLE,WF_FIRSTXYWH,D0,WBUF
- \LOOP:LEA WBUF,A0
- MOVE 4(A0),D0
- OR 6(A0),D0
- BEQ \FERTIG
- LEA WORKARRAY+2,A1
- LEA 8(A0),A2
- BSR SCHNITTFLĂ„CHE
- BMI \WEITER
- VS_CLIP GR_HANDLE,#1,WBUF+8
- BSR CLEAR_SCREEN
- BSR PRINT_TEXT
- VS_CLIP GR_HANDLE,#0,WBUF
- \WEITER:
- WIND_GET WIHANDLE,WF_NEXTXYWH,D0,WBUF
- BRA \LOOP
- \FERTIG:
- WIND_UPDATE #0,D0
- V_SHOW_C GR_HANDLE,#0
- BRA LOOP
- SCHNITTFLĂ„CHE;A0 ^ rectangle (x,y,w,h), A1 ^ window size (x,y,w,h)
- ; A2 ^ intersection rectangle (Xlo,Ylo,Xru,Yru)
- ;Zeroflag : EQ <=> intersection, NE <=> no intersection
- MOVE (A0)+,D0
- CMP (A1)+,D0
- BHS.S \X
- MOVE -2(A1),D0
- \X:MOVE D0,(A2)+
- MOVE (A0)+,D0
- CMP (A1)+,D0
- BHS.S \Y
- MOVE -2(A1),D0
- \Y:MOVE D0,(A2)+
- MOVE (A0)+,D0
- ADD -6(A0),D0
- MOVE (A1)+,D1
- ADD -6(A1),D1
- CMP D1,D0
- BLS.S \W
- MOVE D1,D0
- \W:SUBQ #1,D0
- MOVE D0,(A2)+
- CMP -6(A2),D0 ;X1 > X2
- BMI.S \R
- MOVE (A0),D0
- ADD -4(A0),D0
- MOVE (A1),D1
- ADD -4(A1),D1
- CMP D1,D0
- BLS.S \H
- MOVE D1,D0
- \H:SUBQ #1,D0
- MOVE D0,(A2)
- CMP -4(A2),D0
- BMI.S \R
- MOVEQ #0,D0 ;intersection
- \R:RTS ;no intersection
- ENDE:WIND_CLOSE WIHANDLE,D3
- WIND_DELETE WIHANDLE,D3
- GRAF_MOUSE #0,ADDROUT,D3
- GEM_EXIT
- PRINT_TEXT:
- VSWR_MODE GR_HANDLE,#1,D3
- MOVEQ #3,D7
- LEA S_WCHAR,A6
- MOVE #S_HBOX-S_WBOX,D6
- PRINTLP:
- MOVEM.L D6-D7/A6,-(A7)
- LEA 19(A6),A3
- MOVEQ #4,D4
- SUB D7,D4
- LSL #1,D4
- LEA GR_HANDLE,A4
- MOVE 0(A4,D4.W),D3
- BSR DEZ_CONV
- MOVE.L 8(A7),A6
- MOVEQ #4,D7
- SUB.L 4(A7),D7
- MULU GR_HHCHAR,D7
- ADD WORKARRAY+4,D7
- V_GTEXT GR_HANDLE,WORKARRAY+2,D7,(A6)
- MOVEM.L (A7)+,D6-D7/A6
- ADDA D6,A6
- DBRA D7,PRINTLP
- VSWR_MODE GR_HANDLE,#3,D3
- RTS
- CLEAR_SCREEN:
- VSWR_MODE GR_HANDLE,#1,D3
- VSF_COLOR GR_HANDLE,#0,D3
- VR_RECFL GR_HANDLE,CLIPARRAY
- VSF_COLOR GR_HANDLE,#1,D3
- VSWR_MODE GR_HANDLE,#3,D3
- RTS
- DEZ_CONV:;A3=STRING,D3=ZAHL
- MOVEQ #32,D4
- MOVEQ #1,D5
- MOVE.L #100,D6
- CLOOP:ANDI.L #$FFFF,D3
- DIVU D6,D3
- BEQ.S LZERO
- MOVEQ #48,D4
- LZERO:ADD.B D4,D3
- MOVE.B D3,(A3)+
- SWAP D3
- DIVU #10,D6
- DBRA D5,CLOOP
- ADD.B #'0',D3
- MOVE.B D3,(A3)+
- RTS
- DATA
- FENSTERNAME DC.B "TEST",0,0
- CLS_ARRAY:DC.W 0,18,640,400
- BSS
- NUMMER:DC.W 0
- XM:DC.W 0
- YM:DC.W 0
- STATUS:DC.W 0,0,0,0
- CLIPARRAY:DC.W 0,0,0,0
- WORKARRAY:DC.W 0,0,0,0,0
- MAXARRAY:DC.W 0,0,0,0
- DATA
- MAX_GR:DC.W 1000
- XPOS DC.W 0
- YPOS DC.W 0
- BREITE DC.W 640
- HOEHE DC.W 400
- WIHANDLE DC.W 0
- INFOZEILE:DC.B "This is the Info line",0,0
- ALIGN
- S_WCHAR:DC.B "Width char : ",0
- S_HCHAR:DC.B "Height char : ",0
- S_WBOX: DC.B "Width box : ",0
- S_HBOX: DC.B "Height box : ",0
- ALIGN
- BSS
- WBUF:DS.W 8
- MBUF:DS.B 16
- BUF:DS.B 256
- END