TI99/4A – Hardware and Software Creativity
I will be listing here all my work, past and present for the TI99/4A Home Computer. As it covers about 35 years of things created, it will be in no particular order as I have yet to scan, reload and find most of my software I have scattered in many disks, printouts and cassettes, much of which have been damaged. My first uploads will be all the Mini-PEB cards I have redesigned in the last 12 months. Documentation will be updated as I find the time.

These pages will be updated regularly, regards Arto.
CALL LINK – WINDOWS
Here is listed some work I did back in 1986 when I was working on my TIGOS project, (TI Graphic Operating System). Using Mini-Memory and TI Basic you can have up to 10 windows on your screen that you can add unique text or graphics to. As I do not have any sample Basic programs to high lights it usability, I will rely on the readers ability to be creative in that aspect. Regards Arto.
**********************************CALL LINK("WOPEN",VAR,X1,X2,Y1,Y2)----------------------------------VAR =0 TO 9 TOTAL OF 10 WINDOWSX1 =1 TO 32 START COLUMNX2 =1 TO 32 END COLUMNY1 =1 TO 24 START ROWY2 =1 TO 24 END ROWONLY MINIMAL ERROR CHECKINGTHE LOCATION DECIMAL 32248 HOLDS (>7DF8)FOR THE CHARACTER USED IN THE WINDOWS BACK-PROPCALL LOAD(32248,CH,CH)*********************************CALL LINK("WCLOSE",VAR)---------------------------------VAR =0 TO 9 TOTAL OF 10 WINDOWSONLY CLOSE A WINDOW IF IT HAS BEEN PREVIOUSLY BEEN OPENED----------------------------------MINIMAL REQUIREMENTS MINI-MEM + 32K BY ARTO 1986 ------------------------------------------------------------------7D00 02E0 LWPI >70B8 WORKSPACE7D02 70B87D04 C808 MOV R11,@>7DF4 SAVE RETURN [RT]7D06 7DF47D08 04C0 CLR R0 NUMBER ARRAY7D0A 04C1 CLR R17D0C 06A0 BL @>7DB6 GET 1ST ARGUMENT [FC]7D0E 7DB6 7D10 C120 MOV @>834A,R47D12 834A 7D14 06A0 BL @>7DB6 GET 2ND [FC]7D16 7DB67D18 C160 MOV @>834A,R57D1A 834A 7D1C 06A0 BL @>7DB6 GET 3RD [FC]7D1E 7DB67D20 C1A0 MOV @>834A,R67D22 834A 7D24 06A0 BL @>7DB6 GET 4TH [FC]7D26 7DB67D28 C1E0 MOV @>834A,R77D2A 834A7D2C 06A0 BL @>7DB6 GET 5TH [FC]7D2E 7DB67D30 C220 MOV @>834A,R8 7D32 834A7D34 C244 MOV R4,R9 R9 = LOCATION STORE7D36 0A39 SLA R9,3 FOR VALUE IN 7D38 0229 AI R9,>7DFA ARGUMENT [SR]7D3A 7DFA7D3C 0288 CI R8.>18 CHECK Y2 IF 24 7D3E 00187D40 1535 JGT >7DAC [EX]7D42 0286 CI R6,>20 CHECK X2 IF 327D44 00207D46 1532 JGT >7DAC [EX]7D48 0607 DEC R7 ADJUST Y VALUE 7D4A 0A57 SLA R7,5 FOR SCREEN7D4C 0608 DEC R87D4E 0A58 SLA R8,57D50 CE45 MOV R5,*R9+ STORE X17D52 CE46 MOV R6,*R9+ X27D54 CE47 MOV R7,*R9+ Y1 7D56 CE48 MOV R8,*R9+ Y27D58 1000 NOP7D5A 1000 NOP7D5C 0209 LI R9,>1111 LOAD FOR COMPARE7D62 7DF07D64 0202 RG LI R2,>0001 R2 = AMOUNT7D68 C244 MOV R4,R9 CHANGE VARIABLE7D6A 3A60 MPY @>7DF6,R9 TO MEM LOCATION [NM]7D6C 7DF6 7D6E C10A MOV R10,R47D70 0224 AI R4,>20007D72 20007D74 0248 MOV R8,R9 FINISH ROW7D76 A246 A R6,R9 FINISH SCREEN7D78 C285 NX MOV R5,R10 COLUMN START7D7A C007 MOV R7,R0 ROW START7D7C A005 A R5,R0 SCREEN LOCATION7D7E C0C0 NT MOV R0,R3 SCREEN LOCATION TO7D80 A0C4 A R4,R3 MEM LOCATION7D82 C043 MOV R3,R1 7D84 8820 C @>7DF2,@7DF0 COMPARE OPEN OR CLOSE7D86 7DF2 [CP CO]7D88 7DF07D8A 1304 JEQ >7D94 JMP CLOSE [CC]7D8C 0420 BLWP @>6030 READ SCREEN7D8E 60307D90 0201 LI R1,>7DF8 CHAR FOR WINDOWS [SP]7D92 7DF87D94 0420 CC BLWP @>6028 WRITE SCREEN7D96 60287D98 0580 INC R0 INCREMENT POSITION7D9A 058A INC R10 INCREMENT COLUMN7D9C 0240 C R0,R9 ALL DONE7D9E 1306 JEQ >7DAC [EX]7DA0 1505 JGT >7DAC [EX]7DA2 818A C R10,R6 COLUMN <R COL7DA4 11EC JLT >7D7E NEXT COLUMN [NT]7DA6 0227 AI R7,32 ADD 32 TO START ROW7DA8 00207DAA 10E6 JMP >7D78 NEXT ROW [NX]7DAC 04E0 EX CLR @>837C NO ERROR7DAE 837C7DB0 02E0 MOV @>7DF4,R11 R11 = RETURN7DB2 7DF47DB4 045B B *R11 RETURN TO BASIC7DB6 0581 FC INC R1 NEXT ARGUMENT *********7DB8 0420 BLWP @>6044 GET NUMBER7DBA 60447DBC 0420 BLWP @>601C FLOATING POINT TO INT 7DBE 601C 7DC0 1200 DATA >12007DC2 045B B *R11 RETURN SUBROUTINE7DC4 02E0 CL LWPI >70B8 CLOSE SUBROUTINE7DC6 70B87DC8 C80B MOV R11,@>7DF4 SAVE RETURN [RT]7DCA 7DF47DCC 04C0 CLR R0 NUMBER ARRAY7DCE 04C1 CLR R17DD0 06A0 BL @>7DB6 GET WINDOW NUMBER 7DD2 7D86 USED [FC]7DD4 C120 MOV @>834A,R47DD6 834A7DD8 C244 MOV R4,R9 CHANGE VARIABLE TO7DDA 0A39 SLA R9,3 TO STORE7DDC 0229 AI R9, >7DFA LOCATION [SR]7DDE 7DFA7DE0 C179 MOV *R9+,R5 GET X17DE2 C189 MOV *R9+,R6 GET X27DE4 C1F9 MOV *R9+,R7 GET Y17DE6 C239 MOV *R9+,R8 GET Y27DE8 C820 MOV @>7DF2,@>7DF0 LOAD FOR COMPARE 7DEA 7DF2 [CP CO]7DEC 7DF07DEE 10BA JMP >7D64 JUMP TO REGISTER [RG]7DF0 0000 CO DATA >0000 COMPARE DATA7DF2 2222 CP DATA >2222 7DF4 0000 RT DATA >0000 RETURN7DF6 0300 NM DATA >0300 SCREEN7DF8 8080 SP DATA >8080 WINDOW CHARACTER7DFA 0000 SR BSS 32 STORE VALUES7E1A 0000 AORG >701E701E 7FE0 DATA >7FE07020 0000 AORG >7FE07FE0 574F TEXT 'WOPEN'7FE2 50457FE4 4E207FE6 7D00 DATA >7D007FE8 5743 TEXT 'WCLOSE'7FEA 4C4F7FEC 53457FEE 7DC4 DATA >7DC47FE0 4F4C END