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 WINDOWS
X1 =1 TO 32 START COLUMN
X2 =1 TO 32 END COLUMN
Y1 =1 TO 24 START ROW
Y2 =1 TO 24 END ROW
ONLY MINIMAL ERROR CHECKING
THE LOCATION DECIMAL 32248 HOLDS (>7DF8)
THE CHARACTER FOR THE WINDOWS BACK-PROP
----------------------------------
CALL LINK("WCLOSE",VAR)
VAR =0 TO 9 TOTAL OF 10 WINDOWS
ONLY CLOSE A WINDOW IF IT HAS
BEEN PREVIOUSLY BEEN OPENED
----------------------------------
MINIMAL REQUIREMENTS MINI-MEM + 32K
BY ARTO 1986
------------------------------------------------------------------
7D00 02E0 LWPI >70B8 WORKSPACE
7D02 70B8
7D04 C808 MOV R11,@>7DF4 SAVE RETURN [RT]
7D06 7DF4
7D08 04C0 CLR R0 NUMBER ARRAY
7D0A 04C1 CLR R1
7D0C 06A0 BL @>7DB6 GET 1ST ARGUMENT [FC]
7D0E 7DB6
7D10 C120 MOV @>834A,R4
7D12 834A
7D14 06A0 BL @>7DB6 2ND [FC]
7D16 7DB6
7D18 C160 MOV @>834A,R5
7D1A 834A
7D1C 06A0 BL @>7DB6 3RD [FC]
7D1E 7DB6
7D20 C1A0 MOV @>834A,R6
7D22 834A
7D24 06A0 BL @>7DB6 4TH [FC]
7D26 7DB6
7D28 C1E0 MOV @>834A,R7
7D2A 834A
7D2C 06A0 BL @>7DB6 5TH [FC]
7D2E 7DB6
7D30 C220 MOV @>834A,R8
7D32 834A
7D34 C244 MOV R4,R9 R9 = LOCATION STORE
7D36 0A39 SLA R9,3 FOR VALUE IN
7D38 0229 AI R9,>7DFA ARGUMENT [SR]
7D3A 7DFA
7D3C 0288 CI R8.>18 CHECK Y2 IF 24
7D3E 0018
7D40 1535 JGT >7DAC [EX]
7D42 0286 CI R6,>20 CHECK X2 IF 32
7D44 0020
7D46 1532 JGT >7DAC [EX]
7D48 0607 DEC R7 ADJUST Y VALUE
7D4A 0A57 SLA R7,5 FOR SCREEN
7D4C 0608 DEC R8
7D4E 0A58 SLA R8,5
7D50 CE45 MOV R5,*R9+ STORE X1
7D52 CE46 MOV R6,*R9+ X2
7D54 CE47 MOV R7,*R9+ Y1
7D56 CE48 MOV R8,*R9+ Y2
7D58 1000 NOP
7D5A 1000 NOP
7D5C 0209 LI R9,>1111 LOAD FOR COMPARE
7D62 7DF0
7D64 0202 RG LI R2,>0001 R2 = AMOUNT
7D68 C244 MOV R4,R9 CHANGE VARIABLE
7D6A 3A60 MPY @>7DF6,R9 TO MEM LOCATION [NM]
7D6C 7DF6
7D6E C10A MOV R10,R4
7D70 0224 AI R4,>2000
7D72 2000
7D74 0248 MOV R8,R9 FINISH ROW
7D76 A246 A R6,R9 FINISH SCREEN
7D78 C285 NX MOV R5,R10 COLUMN START
7D7A C007 MOV R7,R0 ROW START
7D7C A005 A R5,R0 SCREEN LOCATION
7D7E C0C0 NT MOV R0,R3 SCREEN LOCATION TO
7D80 A0C4 A R4,R3 MEM LOCATION
7D82 C043 MOV R3,R1
7D84 8820 C @>7DF2,@7DF0 COMPARE OPEN OR CLOSE
7D86 7DF2 [CP CO]
7D88 7DF0
7D8A 1304 JEQ >7D94 JMP CLOSE [CC]
7D8C 0420 BLWP @>6030 READ SCREEN
7D8E 6030
7D90 0201 LI R1,>7DF8 CHAR FOR WINDOWS [SP]
7D92 7DF8
7D94 0420 CC BLWP @>6028 WRITE SCREEN
7D96 6028
7D98 0580 INC R0 INCREMENT POSITION
7D9A 058A INC R10 INCREMENT COLUMN
7D9C 0240 C R0,R9 ALL DONE
7D9E 1306 JEQ >7DAC [EX]
7DA0 1505 JGT >7DAC [EX]
7DA2 818A C R10,R6 COLUMN <R COL
7DA4 11EC JLT >7D7E NEXT COLUMN [NT]
7DA6 0227 AI R7,32 ADD 32 TO START ROW
7DA8 0020
7DAA 10E6 JMP >7D78 NEXT ROW [NX]
7DAC 04E0 EX CLR @>837C NO ERROR
7DAE 837C
7DB0 02E0 MOV @>7DF4,R11 R11 = RETURN
7DB2 7DF4
7DB4 045B B *R11 RETURN TO BASIC
7DB6 0581 FC INC R1 NEXT ARGUMENT
7DB8 0420 BLWP @>6044 GET NUMBER
7DBA 6044
7DBC 0420 BLWP @>601C FLOATING POINT TO INT
7DBE 601C
7DC0 1200 DATA >1200
7DC2 045B B *R11 RETURN SUBROUTINE
7DC4 02E0 CL LWPI >70B8 CLOSE SUBROUTINE
7DC6 70B8
7DC8 C80B MOV R11,@>7DF4 SAVE RETURN [RT]
7DCA 7DF4
7DCC 04C0 CLR R0 NUMBER ARRAY
7DCE 04C1 CLR R1
7DD0 06A0 BL @>7DB6 GET WINDOW NUMBER
7DD2 7D86 USED [FC]
7DD4 C120 MOV @>834A,R4
7DD6 834A
7DD8 C244 MOV R4,R9 CHANGE VARIABLE TO
7DDA 0A39 SLA R9,3 TO STORE
7DDC 0229 AI R9, >7DFA LOCATION [SR]
7DDE 7DFA
7DE0 C179 MOV *R9+,R5 GET X1
7DE2 C189 MOV *R9+,R6 GET X2
7DE4 C1F9 MOV *R9+,R7 GET Y1
7DE6 C239 MOV *R9+,R8 GET Y2
7DE8 C820 MOV @>7DF2,@>7DF0 LOAD FOR COMPARE
7DEA 7DF2 [CP CO]
7DEC 7DF0
7DEE 10BA JMP >7D64 JUMP TO REGISTER [RG]
7DF0 0000 CO DATA >0000 COMPARE DATA
7DF2 2222 CP DATA >2222
7DF4 0000 RT DATA >0000 RETURN
7DF6 0300 NM DATA >0300 SCREEN
7DF8 8080 SP DATA >8080 WINDOW CHARACTER
7DFA 0000 SR BSS 32 STORE VALUES
7E1A 0000 AORG >701E
701E 7FE0 DATA >7FE0
7020 0000 AORG >7FE0
7FE0 574F TEXT 'WOPEN'
7FE2 5045
7FE4 4E20
7FE6 7D00 DATA >7D00
7FE8 5743 TEXT 'WCLOSE'
7FEA 4C4F
7FEC 5345
7FEE 7DC4 DATA >7DC4
7FE0 4F4C END