So What Techncial Notes
#13
Call Box
Standard Program Templates
Written by: William Stephens - March 20,1990
This technical note describes the Standard Call Box BASIC Templates which are used to construct Call Box BASIC applications.
The templates outlined here should be inserted into your program code using the MERGE.EDIT program provided on sampler #1. This merge program will overwrite existing lines which gives it an update capability ... Other merge programs may not work this way and this type of action is needed for proper template integration.
Desktop. Tmplt
0 REM =====================================
1 REM BASIC CODE TEMPLATE
2 REM -------------------------------------
3 REM Desktop environment
4 REM -------------------------------------
5 REM Reference:
6 REM -------------------------------------
7 REM So What Software V1.0 25-Jan-90
8 REM =====================================
9 END : REM
10 PRINT CHR$ (4);"PR#3": HOME : PRINT CHR$ (4);"-CB" : PRINT CHR$ (4);"RESTORE
CB.VARS"
20 CALL TL,2:DESK" : CALL SC,2,640 : CALL SC,1 : CALL WN,3 : CALL CU,1 : CALL CU,3 :
GOSUB 56000
39 REM
Load in the Entities ...
40 CALL WN,0,3,"Entity:Window:Load.Window" : CALL WN,1,3 : CALL PT,0,3 : CALL TX,1,0,15 :
CALL PN,2,5,17 : CALL TX,0,0,"Loading Entities " : CALL WN,4,3,1
41 GOSUB 42 : GOTO 50
42 CALL PT,0,3 : CALL TX,0,0,". " : CALL WN,4,3,1 : RETURN
50 CALL ME,0,1,"Entity:Menu:M.Master" : CALL ME,1,1 : GOSUB 42
51 CALL DI,0,2,"Entity:Dialog:DemoQuit.D": GOSUB 42
99 REM
Set-up Entities
100 CALL WN,2,3 : REM Close the Loading window
140 CALL CU,2 : REM change to arrow cursor
199 REM
Event Loop
200 CALL EV,@,X,Y,B,M,K,T,C,D : CALL ME,2,1 : REM check for an event
210 IF C = 17 THEN 300: REM Menu item hit!
220 IF C = 22 THEN 290: REM Close box hit!
288 GOTO 200
290 CALL WN,8,N,D,2 : CALL WN,2,N : GOTO 200 : REM Close the top window
299 REM
Menu Distributor
300 M1 = INT (D / 65536):M2 = (0 - M1 * 65536) - 255
310 ON M2 GOSUB 330,40C
320 CALL ME,7,l ,M1 ,0: GOTO 200: REM Un-hilite the bar item
330 RETURN: REM Do Nothing !!
399 REM
Quit
400 CALL 01,1,2: CALL Di,2,2, I
410 IF I = 1 THEN 440
420 IF I = 2 THEN 480
430 CALL DI,3,2: RETURN
440 REM
479 POP: CALL 01,3,2: CALL QF: PRINT CHR$ (4);"BYE"
480 REM
498 POP: CALL 01,3,2: CALL OF: END
55998 REM
*** Environment Initialization ***
56000 REM
59998 RETURN
Memory.Tmplt
0 REM =====================================
1 REM BASIC CODE TEMPLATE
2 REM -------------------------------------
3 REM Memory allocation/de-allocation
4 REM -------------------------------------
5 REM Reference: Tech Note(s) #2,#4 and #6
6 REM -------------------------------------
7 REM So What Software V1.0 15-Feb-90
8 REM =====================================
9 END : REM
405 GOSUB 45020
485 GOSUB 45020
44999 REM
Allocate a block of memory
45000 ID = 6144 + PEEK (PO + 180) : CALL LC,_0,_L,ID,$8000,_0\$0902\_H : IF H = 0 THEN
55030
45010 CALL PE,4,H,P : RETURN
45019 REM
De-Allocate all special blocks
45020 CALL LC,ID\$1102\ : RETURN
45029 REM
Allocate and Clear a Direct Page
45030 CALL PO,4,704,$F52001A9 : CALL PO,2,708,$60BE : CALL 704 : A = PEEK (PO + 244) : A
= A + 1: POKE PO + 244,A : D1 = PO - (A * 256) : FOR I = 0 TO 255 : POKE D1 + 1,0 : NEXT
: RETURN
55029 REM
Memory Error
55030 POP CALL SC,0 : PRINT "Memory Allocation Error ... " : GOSUB 45020 : CALL QF : END
GSOS.Tmplt
0 REM =====================================
1 REM BASIC COOE TEMPLATE
2 REM -------------------------------------
3 REM GS/OS Calls
4 REM -------------------------------------
5 REM Reference: Tech Note #6
6 REM -------------------------------------
7 REM So What Software Vl.0 24-Feb-90
8 REM =====================================
9 END: REM
49999 REM
Load a file into memory GS/OS Class 1
50000 GOSUB 50100 : GOSUB 50200 : CALL PE,4,42 + D2,L : GOSUB 45000 : GOSUB 50300 :
GOTO 50400
50099 REM
GSExpand]ath
50100 Ll = LEN (A$) : FOR I = 1 TO Ll : A = ASC ( MID$ (A$,I,l)) : POKE D6 + 1 + I,A : NEXT :
CALL PO,2,D6,L 1 : CALL PO,4,2 + D4,D6 : CALL P0,4,6 + D4,D8
50110 CALL PO,4,10 + D1,D4 : CALL PO,2,8 + D1,$200E : CALL D1 : IF PEEK (254) < > 0 THEN
55000
50120 RETURN
50199 REM
GSOpen
50200 CALL PO,4,4 + D2,D7 : CALL PO,4,10 + D1,D2 : CALL PO,2,8 + D1,$2010 : CALL D1 : IF
PEEK (254) < > 0 THEN 55000
50210 CALL PE,2,2 + D2,A : CALL PO,2,2 + D3,A : CALL PO,2,2 + D5,A : RETURN
50299 REM
GSRead
50300 CALL PO,4,4 + D3,P : CALL P0,4,8 + D3,L : CALL PO,4,10 + D1,D3 : CALL PO,2,8 +
D1,$2012: CALL D1: IF PEEK (254) < > 0 THEN 55000
50310 RETURN
50399 REM
GSClose
50400 CALL PO,4,10 + D1,D5 : CALL PO,2,8 + D1,$2014 : CALL D1 : RETURN
54989 REM
GSOS Error Handler
55000 CALL SC,0 : HOME : FOR I = 0 TO 21: CALL AY,2,ER,[I],A : IF A = PEEK (254) THEN
55020
55010 NEXT
55020 CALL SC,0 : HOME : PRINT "GS/OS Error .... " : CALL AY,2,ER$,[I],A$ GOSUB 45020 : CALL - 1052 : CALL QF : END
55999 REM
Setup the GSOS Dir. Page and Error Messages
56000 GOSUB 45030 : D2 = D1 + 25 : D3 = D2 + 58 : D4 = D3 + 18 : D5 = D4 + 12 : D6 = D1 + 128 : D7
D1 + 190 : D8 = D1 + 188
56010 CALL PO,4,D1,$30C2FB18 : CALL PO,4,4 + D1,$E100A822 : CALL PO,4,14 +
D1,$02BOFE85 : CALL PO,4,18 + D1,$30E2FE64 : CALL PO,3,22 + D1,$60FB38 CALL
PO,2,D2,15: CALL PO,2,D3,5: CALL PO,2,D4,3: CALL PO,2,D5,1: CALL PO,2,D8,66
56020 CALL AY,1,ER,[21] : CALL AY,1,ER$,[21] : PRINT CHR$ (4);"OPEN GSOSERROR.T" :
PRINT CHR$ (4);"READ GSOSERROR.T"
56030 FOR I = 0 TO 21 : INPUT A : CALL AY,3,ER,[I],A : NEXT : FOR I = 0 TO 21 : INPUT A$:
CALL AY,3,ER$,[I],A$ : NEXT : PRINT CHR$ (4);"CLOSE" : A = FRE (0)
Sound. Tmplt
0 REM =====================================
1 REM BASIC CODE TEMPLATE
2 REM -------------------------------------
3 REM Sound / ACE Calls
4 REM -------------------------------------
5 REM Reference: Tech Note #10
6 REM -------------------------------------
7 REM So What Software V1.0 14-Mar-90
8 REM =====================================
9 END: REM
410 CALL LC\$031D\ : CALL LC\$0308\
490 CALL LC\$031D\ : CALL LC\$0308\
39999 REM
Load/uncompress sound file
40000 GOSUB 50000 : H2 = H : P2 = P : L2 = L
40010 CALL PE,2,16 + D2,PB : IF PB > 32767 THEN PB = PB - 32768
40020 CALL PE,2,14 + D2,A : IF A = 205 THEN 40040
40030 CALL PO,4,P1,P : CALL PO,2,4 + P1,0 + L2 / 256 : CALL PO,2,6 + P1,PB : CALL
PO,2,16 + P1,255 : RETURN
40040 L = 2 * L : F = 1 : CALL PE,2,16 + D2,PB : IF PB > 32767 THEN L = (L / 2) *
2.6667 : F = 2 : PB = PB - 32768
40050 GOSUB 45000 : H3 = H : P3 = P : L3 = L : L = L3 / 512
40060 CALL LC,_H2,_0,_H3,_0,L,F\$0A10\ : CALL LC,_H2\$1002\ : CALL PO,4,P1,P3 :
CALL PO,2,4 + P1,0 + L3 / 256 : CALL PO,2,6 + P1,PB : CALL PO,2,16 + P1,255 : RETURN
40099 REM
Play sound
40100 CALL LC,0,4\$1408\F : IF F = 0 THEN 40100
40110 CALL LC,16\$0F08\ : CALL LC,$0401,_P1\$0E08\ : RETURN
40199 REM
Play sound (exclusive)
40200 CALL LC,$0401,_P1\$0E08\
40210 CALL LC,0,4\$1408\F : IF F = 0 THEN 40210
40220 CALL LC,16\$0F08\ : RETURN
56099 REM
Sound / ACE setup
56100 DT = D1 : GOSUB 45030 : SO = D1 : GOSUB 45030 : AC = D1 : D1 = DT : CALL LC,SO\
$0208\ : CALL LC ,AC\$021D\
56110 L = 18 : GOSUB 45000 : H1 = H : P1 = P : FOR A = 0 TO 17 : CALL PO,1,0 + A + P1,
0 : NEXT
Long.Strt. Tmplt
0 REM =====================================
1 REM BASIC CODE TEMPLATE
2 REM -------------------------------------
3 REM Long Program Initialization
4 REM -------------------------------------
5 REM Reference:
6 REM -------------------------------------
7 REM So What Software V1.0 12-Feb-90
8 REM =====================================
9 END: REM
10 FN$ = "_Program Name_" : PRINT CHR$ (4);"CHAIN CB.STARTUP"
Further Reference
Call Box BASIC Manual V2.0 Tech Note 2, 3,4,6 and 10
Call Box - So What Software 10221 Slater Ave. Suite 103 Fountain Valley, CA. 92708