Windows by Shade, Part 3

I am enclosing two copies of the program listings of both versions of my LKDOS extended BASIC data entry demo programs divided into sections, including the LKDOS extended BASIC window operations section which needs to be converted to machine code.

Please give a floppy disk and listings of my Timex & LKDOS extended BASIC data entry demo programs to any machine code programmer who is interested in working with me to complete this project.

Both of my LKDOS extended BASIC data entry demos, Timex & LKDOS extended BASIC lines of programming, are configured identically each having three sections.

The first section of Timex & LKDOS extended BASIC is the ‘LOADER’ section. This section uses program lines 0 to 99. This section is used for Timex DELETE / MERGE operations. This section first DELETEs the lines of Timex & LKDOS extended BASIC of the existing Implementation Program and then MERGEs in and starts the next Implementation Program from a floppy disk.or RAMDISK. This LOADER section can also be used to LOAD machine code blocks, fonts etc. above RAMTOP as needed by a specific Implementation Program. This is the only program that I am familiar with that takes advantage of the powerful Timex DELETE / MERGE functions.

The second section of Timex & LKDOS extended BASIC is the Implementation Program’ section. This section uses program lines 100 to 9799, An Implementation Program is the program That does the work / job the user needs done, When the work of the existing Implementation Program is completed the user is presented with a menu from which to select one of several different types of work / jobs to be done next. The existing Implementation Program then does a GOTO to one of the lines in the LOADER section and the existing Implementation Program lines are DELETEd and the next Implementation Program is MERGEd in from floppy disk or RAMDISK and started. This Implementation Program could do the same job as the Implementation Program in the two LKDOS extended BASIC data entry demos, which is <I> Data entry. The Implementation Program could also be used for <2> Data editing. <3> Label or page printing. <4> Disk or tape ( load / save / catalog / erase / verify ). <5> Data encoding / decoding. <6> Data graphing. <7> Setting / reading the real time clock, <B> Cueing audio / video system equipment <9> Switching process control devices. <10> Reading / assessing / PLOTting sensor data. There are many more types of Implementation Programs than the 10 types LISTed above. Some Implementation ProgramS can be setup to do two or more of the above operations. There is a RAM usage reciprocal between the size of the Implementation Program and the size of any files held in STRING$ variables or above RAMTOP in data buffers. The larger the file size, the smaller the Implementation Program size must be and vice versa. With 100 lines to be used for DELETE / MERGE operations a huge program, larger than the whole usable RAM when empty, could be divided into separate Implementation ProgramS while still providing considerable file space, as large as three tracks of data from a LarKen format disk, A large program, broken down into as many as one-hundred Implementation ProgramS, would provide more functions than any program that has been written for the TS-2068 computer to this date.

The third section of Timex & LKDOS extended BASIC is the ‘Core Routines’ section. This section uses program lines 9800 t 9993. This section contains all the Timex & LKDOS extended BASIC operations most frequently used by most Implementation ProgramS These o operations are reached b GOSUBs from the Implementation ProgramS. Each Core Routine operation ends with a RETURN to the Implementation Program The Core Routines include such Timex & LarKen extended BASIC operations as <I> Set printer codes. <2> Printer part output / polling. <3> Timex font start addresses setup. <4> LarKen font start addresses setup. <5> Open / close setup ( size & position ) / set ( ink & paper colors) / clear & reset / set x – y print positions / fill ( specific screen area ) for all three LKDOS windows. <6> Timex PRINT #0 clearing / menus & notices. <7> LarKen menus & notices. <8> POKE screen printing parameters into the parameters buffer above RAMTOP. <9> PEEKing the 64 character storage buffer data into STRING$ variable. <10> Drawing Timex borders. <11> Setting / reading variables from DATA statements. <12> Year checker. <13>Month checker. <14> Day checker. <15> Hour checker, <16> Minutes checker. <17> Seconds checker. <18> Disk utilities operator. <19> BREAK enable-disable operator.

Both of the Timex & LKDOS extended BASIC data entry demos setup RAMTOP at 60551 and divide the upper RAM into eight parts.

First is the LarKen disk utilities #1 block by Jack Dohany from address 60552 to 60807. These routines provide reports <I> Whether a disk in the current drive is protected, not protected, or absent. <2> Whether a given file exists an disk. <3> The number of total and free tracks, <4> The number of the current drive ( 0 to 4 ). These utilities allow the program to check the drives and current disks in those drives to protect the user from SAVEs to and LOADs from the wrong or a full disk.

Second is the BREAK utility block from Jack Dohany from address 60813 to 60893. This routine can be enabled / disabled and is used to prevent program halts at the SCROLL notice when the screen is full and when a disk filled with files is CATaloged.

ROBERT SHADE
3210 N BROAD ST
PHILADELPHIA PA 19140-5008

Timex & LKDOS Extended BASIC True and Pseudo Three Windows Demo

Loader Routines

Because this demo only has one Implementation Program there is no need to use the timex DELETE / MERGE operations. To use the DELETE / MERGE operations, a dummy REM statement must be added at line 100 of the empty program so the delete operation will not cause a program halt.

10 CLEAR VAL "60511": LET A=SGN PI: LET B=SGN PI: LET C=SGN PI:GO SUB 9873: LET W$= "
": LET A=SGN PI: LET B=SGN PI: GO SUB VAL "9872": POKE VAL "23658",VAL "11": PRINT #VAL "4":LOAD "DECODE,C1"CODE VAL "60552": PAUSE VAL"10": PRINT #VAL "4": LOAD "FONTS1.C1"CODE VAL "62460"

Timex Basic 64 Character Storage Buffer Clearing Routine With Parameters For Compiling With TIMACHINE

  10 REM ! INT +X
20 REM ! USR 62304
30 REM ! OPEN #
40 FOR X=62390 TO 62454: POKE X,0: NEXT X
50 REM ! CLOSE #
9994 STOP
9995 PRINT #4: SAVE "DATACL.B1"
9996 STOP

Demo program Timex BASIC part #1 the data entry routine with parameters for compiling with TIMACHINE

900 REM !LEN Z$<=1
910 REM !INT +A,B,C,E,G,J,Z
950 REM !USR 60899
960 REM ! OPEN #
1000 BEEP .004,10: LET Z=1: POKE 62390,Z: LET J=1: POKE 62385,J: POKE 23658,8: LET C=PEEK 62377: LET E=PEEK 62379: POKE 62376,E: POKE 62383,1; GO TO 1415
1020 LET Z$=INKEY$
1030 IF C=0 AND CODE Z$=6 THEN BEEP.004,40: GO TO 1280
1040 IF Z=1 AND CODE Z$=12 THEN GO TO 1020
1050 IF CODE Z$=12 THEN BEEP .004,20: GO TO 1210
1060 IF CODE Z$=13 THEN BEEP .004,20: GO TO 1350
1070 LET G=PEEK 62381; LET Z=PEEK 62390: IF Z>G THEN GO TO 1020
1080 IF CODE Z$=198 THEN LET Z$="[": GO TO 1150
1090 IF CODE Z$=197 THEN LET Z$="]": GO TO 1150
1100 IF CODE Z$=204 THEN LET Z$="": GO TO 1150
1110 IF CODE Z$=203 THEN LET Z$="": GO TO 1150
1120 IF CODE Z$=172 THEN LET Z$="": GO TO 1150
1130 IF CODE Z$>=0 AND CODE Z$<=31 OR CODE Z$>=128 AND CODE Z$<=255 THEN GO TO 1020
1140 IF CODE Z$=92 OR CODE Z$=94 OR CODE Z$=95 OR CODE Z$=!24 OR CODE Z$=126 THEN GO TO 1020
1150 IF C=2 AND CODE Z$>31 AND CODE Z$<48 OR C=2 AND CODE Z$>57 AND CODE Z$<128 THEN GO TO 1020
1160 BEEP .004,10: LET Z=Z+1: POKE 62390,Z: LET A=62391+(Z-2): LET B=CODE Z$: POKE A,B: POKE 62375,B: LET A=((Z*4)+(E-8)): POKE 62376,A: POKE 62384,1: POKE 62383,2: GO TO 1415
1210 LET A=((Z*4)+(E-8)): POKE 62376,A: POKE 62384,2: POKE 62383,3
1211 STOP
1213 REM ! OPEN #
1230 LET Z=Z-1: POKE 42390,Z
1231 IF Z>=1 THEN GO TO 1260
1240 LET Z=1: POKE 12390,Z: POKE 62376,E: POKE 62383,1: GO TO 1415
1260 LET A=(((Z*4)+4)+(E-8)): POKE 62376,A: POKE 62383,1: GO TO 1415
1280 IF J=0 THEN POKE 23658,8: LET J=1: POKE 62385,J: GO TO 1300
1290 IF J=1 THEN POKE 23658,0: LET J=0: POKE 62385,J
1300 LET A=(((Z*4)+4)+(E-8)): POKE 62376,A: POKE 62384,1: POKE 62383,4: GO TO 1415 1350 LET A=(((Z*4)+4)+(E-8)): POKE 62376,A: POKE 62384,1: POKE 62383,5
1415 STOP
1420 REM ! OPEN #
1425 GO TO 1020
1760 REM ! CLOSE #
9994 STOP
9995 PRINT #4: SAVE "DATAEN.B1": PAUSE 20: PRINT #4: SAVE "DATAEN.B2"
9996 STOP

[Figure: galloping horse drawing]

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.