home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1993-01-17 | 7.8 KB | 305 lines |
- Rem <-------------------------------->
- Rem < >
- Rem < My very own REM designer >
- Rem < >
- Rem < Written in AMOS >
- Rem < ~~~~ >
- Rem < of course >
- Rem < >
- Rem < June 29th 1992 >
- Rem < >
- Rem <-------------------------------->
- '
- ' Keys F1 Saves the the data ready for merging into your
- ' own program
- ' F10 Clears the display
- ' Up Cursor Select top characters for scrolling
- ' Down Cursor Select bottom characters for scrolling
- ' Left/Right cursor scrolls the top/bottom characters
- ' Escape Quits
- ' characters may be selected by clicking on them with the
- ' mouse
- '
- ' NB Line draw is not yet working properly
- '
- '
- Flash Off : Curs Off
- Limit Mouse 127,49 To 448,298
- '
- Dim RM$(24)
- Global CHAR,SO1,SO2,SC,X,Y,RM$(),_FIN,_ST1$,ST2$
- _ST1$="Rem " : _ST2$="' "
- '
- _INIT
- '
- Do
- '
- Screen 0
- If Key State(96)=False Then X=X Text(X Screen(X Mouse))
- If Key State(97)=False Then Y=Y Text(Y Screen(Y Mouse))
- If Mouse Screen>0 Then Screen Mouse Screen
- If Key State(69) Then _QUIT
- If Key State(78) Then _SCRR
- If Key State(79) Then _SCRL
- If Key State(76) Then SC=1
- If Key State(77) Then SC=2
- If Mouse Screen=0 and Mouse Key=1 and Y Text(Y Screen(Y Mouse))<25
- Print At(X,Y)+Chr$(CHAR)
- RM$(Y)=Left$(RM$(Y),X)+Chr$(CHAR)+Right$(RM$(Y),80-(X+1))
- End If
- CLK=Mouse Click
- If Mouse Screen=1 and CLK=1 Then CHAR=Mouse Zone+31
- If Mouse Screen=2 and CLK=1 Then CHAR=Mouse Zone+143
- If Mouse Screen=3 and CLK=1
- Screen 3
- If Mouse Zone=1
- _RUBBERBOX["L"]
- End If
- If Mouse Zone=2
- _RUBBERBOX["C"]
- End If
- If Mouse Zone=3
- _RUBBERLINE
- End If
- If Mouse Zone=4
- Swap _ST1$,_ST2$
- Text 221,14," "
- Text 221,14,_ST1$-Chr$(32)
- Wait 10
- End If
- End If
- If Key State(80) Then _REMSAVE
- If Key State(89) Then _CLEAR
- K$=Inkey$
- If K$>=" "
- Screen 0
- Repeat
- Locate X,Y
- Print K$;
- RM$(Y)=Left$(RM$(Y),X)+K$+Right$(RM$(Y),80-(X+1))
- Inc X
- K$=""
- Repeat
- If Key State(69)
- _QUIT
- End If
- K$=Inkey$
- Until Asc(K$)>31 and Asc(K$)<256 or Key State(68)
- Until Key State(68)
- K$=""
- End If
- Wait Vbl
- '
- Loop
- '
- Procedure _INIT
- Auto View Off
- Flash Off
- Screen Open 0,640,208,2,Hires
- Flash Off : Curs Off
- Palette $8,$ED
- Screen Display 0,,72,,
- Screen Open 1,930,9,2,Lowres
- Palette $AAA,$0
- Curs Off
- Screen Open 2,930,9,2,Lowres
- Get Palette 1
- Curs Off
- Screen Display 2,,61,,
- Screen 1
- Reserve Zone 112
- Print Chr$(32)+Chr$(32);
- For N=32 To 143
- Print Zone$(Chr$(N),N-31);
- Next N
- Screen 2
- Reserve Zone 112
- Print Chr$(32)+Chr$(32);
- For N=144 To 255
- Print Zone$(Chr$(N),N-143);
- Next N
- Screen Open 3,640,24,2,Hires
- Flash Off : Curs Off
- Get Palette 1
- Screen Display 3,,274,,
- Reserve Zone 4
- Box 10,3 To 83,19
- Box 93,3 To 206,19
- Box 216,3 To 335,19
- Text 15,14,"Line Box"
- Text 98,14,"Character Box"
- Text 221,14,"Character Line"
- Set Zone 1,10,3 To 83,19
- Set Zone 2,93,3 To 206,19
- Set Zone 3,216,3 To 335,19
- Change Mouse 2
- _CLEAR
- Auto View On
- View
- SO1=0 : SC=1
- End Proc
- Procedure _VLINE[VX,VY,VL,ST$]
- CH=0
- If ST$="L" Then CH=131
- If ST$="R" Then CH=132
- If ST$="C" Then CH=CHAR
- If CH=0 Then CH=42
- Locate VX,VY
- For N=1 To VL
- Print At(VX,)+Chr$(CH)
- If _FIN=1 Then RM$(VY+N-1)=Left$(RM$(VY+N-1),VX)+Chr$(CH)+Right$(RM$(VY+N-1),80-(VX+1))
- Next N
- End Proc
- Procedure _HLINE[HX,HY,HL,ST$]
- CH=0
- If ST$="T" Then CH=129
- If ST$="B" Then CH=134
- If ST$="C" Then CH=CHAR
- If CH=0 Then CH=42
- Locate HX,HY
- For N=1 To HL
- Print Chr$(CH);
- If _FIN=1 Then RM$(HY)=Left$(RM$(HY),HX+N-1)+Chr$(CH)+Right$(RM$(HY),80-(HX+N))
- Next N
- End Proc
- Procedure _LBOX[HX,HY,HL,HH]
- Print At(HX,HY);Chr$(128)
- Print At(HX+HL,HY);Chr$(130)
- Print At(HX,HY+HH);Chr$(133)
- Print At(HX+HL,HY+HH);Chr$(135)
- _HLINE[HX+1,HY,HL-1,"T"]
- _HLINE[HX+1,HY+HH,HL-1,"B"]
- _VLINE[HX,HY+1,HH-1,"L"]
- _VLINE[HX+HL,HY+1,HH-1,"R"]
- If _FIN=1
- _FIN=0
- RM$(HY)=Left$(RM$(HY),HX)+Chr$(128)+Right$(RM$(HY),80-(HX+1))
- RM$(HY)=Left$(RM$(HY),HX+HL)+Chr$(130)+Right$(RM$(HY),80-(HX+HL+1))
- RM$(HY+HH)=Left$(RM$(HY+HH),HX)+Chr$(133)+Right$(RM$(HY+HH),80-(HX+1))
- RM$(HY+HH)=Left$(RM$(HY+HH),HX+HL)+Chr$(135)+Right$(RM$(HY+HH),80-(HX+HL+1))
- End If
- End Proc
- Procedure _CBOX[HX,HY,HL,HH]
- _HLINE[HX,HY,HL+1,"C"]
- _HLINE[HX,HY+HH,HL+1,"C"]
- _VLINE[HX,HY+1,HH-1,"C"]
- _VLINE[HX+HL,HY+1,HH-1,"C"]
- If _FIN=1
- _FIN=0
- RM$(HY)=Left$(RM$(HY),HX)+Chr$(CHAR)+Right$(RM$(HY),80-(HX+1))
- RM$(HY)=Left$(RM$(HY),HX+HL)+Chr$(CHAR)+Right$(RM$(HY),80-(HX+HL+1))
- RM$(HY+HH)=Left$(RM$(HY+HH),HX)+Chr$(CHAR)+Right$(RM$(HY+HH),80-(HX+1))
- RM$(HY+HH)=Left$(RM$(HY+HH),HX+HL)+Chr$(CHAR)+Right$(RM$(HY+HH),80-(HX+HL+1))
- End If
- End Proc
- Procedure _RUBBERBOX[TYPE$]
- Repeat
- Until Mouse Screen=0 and Mouse Key=1
- Screen 0
- X1=X Text(X Screen(X Mouse)) : Y1=Y Text(Y Screen(Y Mouse))
- X2=X1+1 : Y2=Y1
- Writing 2
- If TYPE$="L" Then _LBOX[X1,Y1,X2-X1,Y2-Y1]
- If TYPE$="C" Then _CBOX[X1,Y1,X2-X1,Y2-Y1]
- Repeat
- If X2<>X Text(X Screen(X Mouse)) or Y2<>Y Text(Y Screen(Y Mouse))
- If TYPE$="L"
- _LBOX[X1,Y1,X2-X1,Y2-Y1]
- End If
- If TYPE$="C"
- _CBOX[X1,Y1,X2-X1,Y2-Y1]
- End If
- If Mouse Screen=0 and Y Text(Y Screen(Y Mouse))<25
- X2=X Text(X Screen(X Mouse)) : Y2=Y Text(Y Screen(Y Mouse))
- End If
- If X2=X1
- Inc X2
- End If
- If Y2=Y1
- Inc Y2
- End If
- If TYPE$="L"
- _LBOX[X1,Y1,X2-X1,Y2-Y1]
- End If
- If TYPE$="C"
- _CBOX[X1,Y1,X2-X1,Y2-Y1]
- End If
- End If
- Until Mouse Key=0
- Writing 0
- _FIN=1
- If TYPE$="L" Then _LBOX[X1,Y1,X2-X1,Y2-Y1]
- If TYPE$="C" Then _CBOX[X1,Y1,X2-X1,Y2-Y1]
- For N=0 To 24
- Locate 0,N : Print RM$(N);
- Next N
- End Proc
- Procedure _RUBBERLINE
- Screen 0
- Repeat
- Until Mouse Screen=0 and Mouse Key=1
- XRL=X Screen(X Mouse) : YRL=Y Screen(Y Mouse)
- Gr Writing 3
- While Mouse Screen=0 and Mouse Key=1
- XT=X Screen(X Mouse) : YT=Y Screen(Y Mouse)
- Draw XRL,YRL To XT,YT
- Draw XRL,YRL To XT,YT
- Wend
- Gr Writing 1
- XRL2=X Screen(X Mouse) : YRL2=Y Screen(Y Mouse)
- XA=(XRL2-XRL)/8 : YA=(YRL2-YRL)/8 : T=0
- For N=XRL To XRL2 Step XA
- XP=N : YP=YRL+(YA*T)
- Print At(X Text(XP),Y Text(YP))+Chr$(CHAR)
- Inc T
- Next N
- End Proc
- Procedure _REMSAVE
- For N=0 To 24
- If Right$(RM$(N),1)=Chr$(32)
- Repeat
- RM$(N)=Left$(RM$(N),Len(RM$(N))-1)
- Until Right$(RM$(N),1)<>Chr$(32) or Len(RM$(N))=0
- End If
- Next N
- VP=24
- If Len(RM$(24))=0
- Repeat
- Dec VP
- Until Len(RM$(VP))>0 or VP=0
- End If
- If VP=0 and Len(RM$(0))=0 Then Pop Proc
- Open Out 1,"VD0:TEMP.ASC"
- For N=0 To VP
- Print #1,_ST1$+RM$(N)
- Next N
- Close 1
- End Proc
- Procedure _CLEAR
- Screen 0
- T$=Space$(80)
- For N=0 To 24
- RM$(N)=T$
- Print RM$(N)
- Next N
- End Proc
- Procedure _SCRR
- If SC=1 Then SO=SO1
- If SC=2 Then SO=SO2
- If SO<577 Then Add SO,4
- Screen Offset SC,SO,
- If SC=1 Then SO1=SO
- If SC=2 Then SO2=SO
- End Proc
- Procedure _SCRL
- If SC=1 Then SO=SO1
- If SC=2 Then SO=SO2
- If SO>0 Then Add SO,-4
- Screen Offset SC,SO,
- If SC=1 Then SO1=SO
- If SC=2 Then SO2=SO
- End Proc
- Procedure _QUIT
- Default
- Edit
- End Proc