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