0001   0000             ;ROM programs for Z80 computer
0002   0000             ;Version 4 2/17/03
0003   0000             .ORG 0000H
0004   0000 C3 20 00    	JP 0020H	;Jump to start of programs
0005   0020             .ORG 0020H
0006   0020 DB 00       	IN A,(0)	;Jump to address on input ports
0007   0022 6F          	LD L,A
0008   0023 DB 01       	IN A,(1)
0009   0025 67          	LD H,A
0010   0026 E9          	JP (HL)
0011   0027 DB 00       LOOP1	IN A,(0)	;Simple port reflector
0012   0029 D3 00       	OUT (0),A
0013   002B DB 01       	IN A,(1)
0014   002D D3 01       	OUT (1),A
0015   002F C3 27 00    	JP LOOP1
0016   0032 3E 00       	LD A,00H	;Simple counter
0017   0034 D3 00       LOOP2	OUT (0),A
0018   0036 3C          	INC A
0019   0037 C3 34 00    	JP LOOP2
0020   003A 2E 00       	LD L,0		;Count to 1,000,000
0021   003C 26 00       	LD H,0
0022   003E 3E 10       LOOP4	LD A,16
0023   0040 3D          LOOP3	DEC A
0024   0041 C2 40 00    	JP NZ,LOOP3
0025   0044 23          	INC HL
0026   0045 7D          	LD A,L
0027   0046 D3 00       	OUT (0),A
0028   0048 7C          	LD A,H
0029   0049 D3 01       	OUT (1),A
0030   004B C3 3E 00    	JP LOOP4
0031   004E 21 00 08    	LD HL,0800H	;Load program in RAM from input port 0
0032   0051 DB 01       LOOP5	IN A,(1)	;Look at input port 1, bits 0 and 7
0033   0053 E6 81       	AND 81H		;Loop until a switch is closed
0034   0055 CA 51 00    	JP Z,LOOP5
0035   0058 06 80       	LD B,80H
0036   005A 10 FE       DEBNC1	DJNZ DEBNC1	;Debounce loop for switch closure
0037   005C E6 80       	AND 80H		;Look at input port 1, bit 7 switch
0038   005E C2 00 08    	JP NZ,0800H	;If switch is closed, jump to start of RAM
0039   0061 DB 00       	IN A,(0)	;Switch open, get byte from input port 0
0040   0063 D3 00       	OUT (0),A	;Display byte on output port 0
0041   0065 77          	LD (HL),A	;Store byte in RAM
0042   0066 23          	INC HL		;Point to next location in RAM
0043   0067 3E FF       	LD A,0FFH	;Turn all output port 1 lights on
0044   0069 D3 01       	OUT (1),A
0045   006B DB 01       LOOP6	IN A,(1)	;Look at input port 1, bit 0 switch
0046   006D E6 01       	AND 01H
0047   006F C2 6B 00    	JP NZ,LOOP6	;Loop until switch for bit 0 opens
0048   0072 06 80       	LD B,80H
0049   0074 10 FE       DEBNC2	DJNZ DEBNC2	;Debounce loop for switch opening
0050   0076 3E 00       	LD A,0
0051   0078 D3 01       	OUT (1),A	;Turn off port 1 lights
0052   007A C3 51 00    	JP LOOP5	;Start over
0053   007D             .END
0054   007D             
0055   007D             
0056   007D             
tasm: Number of errors = 0