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