ORG 0000H
DDISPLAY EQU 2000H
DTIME EQU 2010H
DTIMEDPLAY EQU 2013H
DTEMP EQU 2017H
DSETTEMP EQU 201AH
DHUMID EQU 201DH
DSETHUMID EQU 2020H
DOUTPUT EQU 2023H
DASAVED EQU 2024H
DFULID EQU 2026H
DBUFFER EQU 2027H
DBUFFERT EQU 2028H
DBT EQU 2029H
DSAVED EQU 202AH
PCONTE EQU F7H
PCONHU EQU FBH
PCONKOP EQU FFH
PCONLCD EQU 03H
PDTE EQU F4H
PDHU EQU F8H
PDKE EQU FCH
PDOP EQU FDH
PDINP EQU FEH
XOR A
LD SP,3F00H
JP MAIN
ORG 0066H ;
CALL TIME ; SUBROUTINE TIME FOR NMI
RETN ;
MAIN XOR A
LD IX,DTIME
LD (IX+00H),A
LD (IX+01H),A
LD (IX+02H),A ;START TIME AT 00:00
LD A,9BH ;ALL PORT INPUT
OUT (PCONTE),A ;8255(1) TEMP
OUT (PCONHU),A ;8255(2) HUMID
LD A,80H ;ALL PORT OUTPUT
OUT (PCONLCD),A ;8255 (Z80) LCD
LD A,91H ; Pa Pcl = INPUT
Pb Pch = OUTPUT
OUT (PCONKOP),A ;8255(3) Pa = KEY
Pb = OUTPUT ;Pcl = CHACKPUMP
Pch = RS232
LD IX,DSETTEMP
LD (IX+00H),30H
LD (IX+01H),35H
LD (IX+02H),32H ;DATASETTEMP IS 25.0
LD IX,DSETHUMID
LD (IX+00H),30H
LD (IX+01H),30H
LD (IX+02H),35H ;DATASETHUMID IS 50.0
LD IX,DSAVED
LD (IX+00H),30H
LD (IX+01H),31H ;START DATE AT 01
LD IX,DOUTPUT
LD (IX+00H),20H ;NO OUTPUT
LD IX,DBUFFERT
LD (IX+00H),20H ;NO POINT
LD IX,DFULLD
LD (IX+00H),00H ;DATA NO FULL
LD IX,DASAVED
LD (IX+00H),29H
LD (IX+01H),20H ;SAVE FIRST DATA AT 2029H
LD IX,DBT
LD (IX+00H),00h ;START COUNT TIME
LD HL,TABCLEAR
LD A,O7H
CALL DISPLAY ;DISPLAY I'M WORKING!!!
MAIN1 CALL SCANA
CP 01H
JP Z,SET
CP 02H
JP Z,FNTIME
FP MAIN1
FNTIME CALL CHANGETIME
LD HL,TABTIME
LD IY,DTIMEDPLAY
LD A,00H
CALL DISPLAY
SCANB CALL SCAN1
JP NC,SCANB
CALL DELAY
SCANBB CALL SCAN1
PUSH AF
CALL CHANGETIME
LD HL,TABTIME
LD IY,DTIMEDPLAY
LD A,00H
CALL DISPLAY
CALL CHACK5M
CALL OUT
POP AF
JP C,SCANBB
CALL DELAY
CALL SCAN1
CP 01H
JP Z,SETCLEAR
CP 02H
JP Z,FNTEMP
JP SCANB
FNTEMP LD HL,TABTEMP
LD IY,DTEMP
LD A,02H
CALL DISPLAY
SCANC CALL SCAN1
JP NC,SCANC
CALL DELAY
SCANCC CALL SCAN1
PUSH AF
LD HL,TABTEMP
LD IY,DTEMP
LD A,02H
CALL DISPLAY
CALL CHACK5M
CALL OUT
POP AF
JP C,SCANCC
CALL DELAY
CALL SCAN1
CP 01H
JP Z,SETCLEAR
CP 02H
JP Z,FNHUMID
JP SCANC
FNHUMID LD HL,TABHUMID
LD IY,DHUMID
LD A,04H
CALL DISPLAY
SCAND CALL SCAN1
JP NC,SCAND
CALL DELAY
SCANDD CALL SCAN1
PUSH AF
LD HL,TABHUMID
LD IY,DHUMID
LD A,04H
CALL DISPLAY
CALL INTH
CALL CHACK5M
CALL OUT
POP AF
JP C,SCANDD
CALL DELAY
CALL SCAN1
CP 01H
JP Z,SETCLEAR
CP 02H
JP Z,FNSAVED
JP SCAND
FNSAVED LD HL,TABSAVED
LD IY,DSAVED
LD A,01H
CALL DISPLAY
SCANE PUSH IY
CALL SCANA
POP IY
CP 01H
JP Z,SETCLEAR
CP 02H
JP Z,FNTIME
CP 03H
JP Z,SCANIE
JP SCANDE
SCAND LD BC,000CH
ADD IY,BC
LD (DBUFFER),IY
LD HL,(DBUFFER)
LD A,L
CP 30H
JP Z,IE1
IE2 LD HL,TABSAVED
LD A,01H
CALL DISPLAY
JP SCANE
IE1 LD A,H
CP 3BH
JP NZ,IE2
LD IY,DSAVED
JP IE2
SCANDE LS BC,FFF4H
ADD IY,BC
LD (DBUFFER),IY
LD HL,(DBUFFER)
LD A,L
CP 24H
JP A,IE3
IE3 LD A,H
CP 20H
JP NZ,IE2
LD IY,3B23H
JP IE2
SETCLEAR LD HL,TABCLEAR
LD A,07H
CALL DISPLAY
JP MAIN1
SET LD HL,TABSET
LD A,06H
CALL DISPLAY
SETA CALL SCANA
CP 01H
JP Z,SETCLEAR
CP 02H
JP Z,SETTIME
FP SETA
SETTIME CALL CHANGETIME ;SET HOUR
LD HL,TABSETTIME
LD IY,TIMEDPLAY
LD A,0AH
CALL DISPLAY
SETB CALL SCANA
CP 01H
JP Z,SETMINUS
CP 02H
JP Z,SETTEMP
CP 03H
JP Z,INCHOUR
JP DECHOUR
SETMINUS CALL CHANGETIME
LD HL,TABSETTIME
LD IY,DTIMEDPLAY
LD A,0AH
CALL DISPLAY
CALL SCANA
CP 01H
JP Z,SETTIME ;SET HOUR
CP 02H
JR Z,SETTEMP
CP 03H
JP Z,INCMINUS
JP DECMINUS
INCHOUR LD IX,DTIME
LD A,(IX,DTIME) ;HOUR(00H-24H)
INC A
DAA
CP 24H
JP NZ,IHOUR
LD A,00H
IHOUR LD (IX+02H),A
JP SETTIME ;SETHOUR
INCMINUS LD IX,DTIME
LD A,(IX+01H) ;MINUS(00H-59H)
INC A
DAA
CP 60H
JP NZ,IMINUS
LD A,00H
IMINUS LD (IX+01H),A
JP SETMINUS
DECHOUR LD IX,DTIME
LD A,(IX+02H) ;HOUR(00H-24H)
DEC A
DAA
CP 99H
JP NZ,DHOUR
LD A,23H
DHOUR LD (IX+02H),A
JP SETTIME
DECMINUS LD IX,DTIME
XOR A
LD A,(IX+01H)
DEC A
DAA
CP 99H
JP NZ,DMINUS
XOR A
LD A,59H
DMINUS LD (IX,01H),A
JP SETMINUS
SETTEMP LD HL,TABSETTEMP ;SETHITEMP
LD IY,DSETTEMP :CAN SET BETWEEN 10.0-49.9C
LD A,03H
CALL DISPLAY
CALL SCANA
CP 01H
JP Z,SETMIDTEMP
CP 02H
JP Z,SETHUMID
CP 03H
JP Z,INCHITEMP
JP DECHITEMP
SETMIDTEMP LD HL,TABSETTEMP
LD IY,DSETTEMP
LD A,03H
CALL DISPLAY
CALL SCANA
CP 01H
JP Z,SETLOTEMP
CP 02H
JP Z,SETHUMID
CP 03H
JP Z,INCMIDTEMP
JP DECMIDTEMP
SETMIDTEMP LD HL,TABSETTEMP
LD IY,DSETTEMP
LD A,03H
CALL DISPLAY
CALL SCANA
CP 01H
JP Z,SETLOTEMP
CP 02H
JP Z,SETHUMID
CP 03H
JP Z,INCMIDTEMP
JP DECMIDTEMP
SETLOTEMP LD HL,TABSETTEMP
LD IY,DSETTEMP
LD A,03H
CALL DISPLAY
CALL SCANA
CP 01H
JP Z,SETTEMP
CP 02H
JP Z,SETHUMID
CP 03H
JP Z,INCLOTEMP
JP DECLOTEMP
INCHITEMP LD IX,DSETTEMP
LD A,(IX+02H) ;HI TEMP (31H-34H)
INC A
CP 35H
JP NZ,IHTE
LD A,31H
IHTE LD (IX+02H),A
JP SETTEMP
INCMIDTEMP LD IX,DSETTEMP ;MID TEMP (30H-39H)
LD A,(IX+01H)
INC A
CP 3AH
JP NZ,IMTE
LD A,30H
IMTE LD (IX+01H),A
JP SETMIDTEMP
INCLOTEMP LD IX,DSETTEMP
LD A,(IX+00H)
INC A
CP 3AH
JP NZ,ILTE
LD A,30H
ILTE LD (IX+00H),A
JP SETLOTEMP
DECHITEMP LD IX,DSETTEMP
LD A,(IX+02H)
DEC A
CP 30H
JP NZ,DHTE
LD A,34H
DHTE LD (IX+02H),A
JP SETTEMP
DECMIDTEMP LD IX,DSETTEMP
LD A,(IX+01H)
DEC A
CP 2FH
JP NZ,DMTE
LD A,39H
DMTE LD (IX+01H),A
JP SETMIDTEMP
DECLOTEMP LD IX,DSETTEMP
LD A,(IX+00H)
DEC A
CP 2FH
JP NZ,DLTE
LD A,39H
DLTE LD (IX+00H),A
JP SETLOTEMP
SETHUMID LD HL,TABSETHUMID ;SETHIHUMID
LD IY,DSETHUMID ;CAN SET BETWEEN 00.0-99.9%
LD A,05H
CALL DISPLAY
SETD CALL SCANA
CP 01H
JP Z,SETMHUMID
CP 02H
JP Z,SETCLEAR
CP 03H
JP Z,INCHIHUMID
JP DECHIHUMID
SETMHUMID LD HL,TABSETHUMID
LD IY,DSETHUMID
LD A,05H
CALL DISPLAY
CALL SCANA
CP 01H
JP Z,SETLOHUMID
CP 02H
JP Z,SETCLEAR
CP 03H
JP Z,INCMHUMID
JP DECMHUMID
SETLOHUMID LD HL,TABSETHUMID
LD IY,DSETHUMID
LD A,05H
CALL DISPLAY
CALL SCANA
CP 01H
JP Z,SETHUMID
CP 02H
JP Z,SETCLEAR
CP 03H
JP Z,INCLOHUMID
JP DECLOHUMID
INCHIHUMID LD IX,DSETHUMID
LD A,(IX+02H)
INC A
DAA
CP 40H
JP NZ,IHHU
LD A,30H
IHHU LD (IX+02H),A
JP SETHUMID
INCMHUMID LD IX,DSETHUMID
LD A,(IX+01H)
INC A
DAA
CP 40H
JP NZ,IMHU
LD A,30H
IMHU LD (IX+01H),A
JP SETMHUMID
INCLOHUMID LD IX,DSETHUMID
LD A,(IX+00H)
INC A
DAA
CP 40H
JP NZ,ILHU
LD A,30H
ILHU LD (IX+00H),A
JP SETLOHUMID
DECHIHUMID LD IX,DSETHUMID
LD A,(IX+02H)
DEC A
DAA
CP 29H
JP NZ,DHHU
LD A,39H
DHHU LD (IX+02H),A
JP SETHUMID
DECMHUMID LD IX,DSETHUMID
LD A,(IX+01H)
DEC A
DAA
CP 29H
JP NZ,DMHU
LD A,39H
DMHU LD (IX+01H),A
JP SETMHUMID
DECLOHUMID LD IX,DSETHUMID
LD A,(IX+00H)
DEC A
DAA
CP 29H
JP NZ,DLHU
LD A,39H
DLHU LD (IX+00H),A
JP SETLOHUMID
TABTIME DB 20H,54H,69H,6DH
DB 65H,20H,69H,73H
DB 20H,20H,FFH,FFH
DB 3AH,FFH,FFH,20H
TABSETTIME DB 53H,45H,54H,20H
DB 54H,69H,6DH,65H
DB 20H,3DH,20H,FFH
DB FFH,3AH,FFH,FFH
TABTEMP DB 20H,54H,65H,6DH
DB 70H,20H,69H,73H
DB 20H,FFH,FFH,2EH
DB FFH,DFH,63H,20H
TABSETTEMP DB 53H,45H,54H,20H
DB 54H,65H,6DH,70H
DB 20H,3DH,FFH,FFH
DB 2EH,FFH,DFH,63H
TABHUMID DB 20H,48H,75H,6DH
DB 69H,64H,20H,69H
DB 73H,20H,FFH,FFH
DB 2EH,FFH,25H,20H
TABSAVED DB 30H,FFH,20H,FFH
DB FFH,3AH,FFH,FFH
DB 20H,FFH,FFH,FFH
DB 20H,FFH,FFH,FFH,
TABSETHUMID DB 53H,45H,54H,20H
DB 48H,75H,6DH,69H
DB 64H,20H,3DH,FFH
DB FFH,2EH,FFH,25H
TABSET DB 20H,20H,20H,53H
DB 45H,54H,20H,20H
DB 20H,20H,20H,20H
DB 20H,20H,20H,20H
TABCLEAR DB 20H,49H,27H,6DH
DB 20H,77H,6FH,72H
DB 6BH,69H,6EH,67H
DB 21H,21H,21H,20H
TABNUMBER DB 40H,79H,24H,30H,19H
DB 12H,02H,78H,00H,10H
;SUBROUTINE
TIME PUSH AF
PUSH BC
PUSH DE
PUSH HL
PUSH IX
PUSH IY
LD A,(DBT)
INC A
CP 05H
LD (DBT),A
JP NZ,RETURN
LD A,00H
LD (DBT),A
LD A,(DBUFFERT)
CP 20H
JP NZ,NPOINT
LD A,3AH
LD (DBUFFERT),A
JP POINT
NPOINT LD A,20H
LD (DBUFFERT),A
LD IX,DTIME
LD A,(IX+00H)
INC A
DAA
CP 60H
JP NZ,SEC
LD (IX+00H),00H
LD A,(IX+01H)
INC A
DAA
CP 60H
JP NZ,MINUS
LD (IX+01H),00H
LD A,(IX+02H)
INC A
DAA
CP 24H
JP NZ,HOUR
LD (IX+02H),00H
RETURN POP IY
POP IX
POP HL
POP DE
POP BC
POP AF
RET
SET LD (IX+00H),A
JP RETURN
MINUS LD (IX+01H),A
JP RETURN
HOUR LD (IX+02H),A
JP RETURN
CHANGETIME LD IX,DTIME
LD IY,DTIMEDPLAY
LD A,(IX+01H)
CALL X
LD (IY+00H),L
LD (IY+01H),H
LD A,(IX+02H)
CALL X
LD (IY+02H),L
LD (IY+03H),H
RET
X LD H,A
AND OFH
OR 30H
LD L,A
LD A,H
SRL A
SRL A
SRL A
SRL A
AND OFH
OR 30H
LD H,A
RET
INTH LD IX,DTEMP
LD C,PDTE
CALL IN
LD IX,DHUMID
LD C,PDHU
CALL IN
RET
IN IN D, ( C )
INC C
IN L, ( C )
INC C
IN H, ( C )
LD A,D
CALL CHANGETH
LD (IX+00H),A
LD A,L
CALL CHANGETH
LD (IX+01H),A
LD A,H
CALL CHANGETH
LD (IX+02H),A
RET
CHANGETH LD IY,TABNUMBER
LD E,00H
LPX LD D,(IY+00H)
CP D
PUSH AF
INC IY
INC E
POP AF
JR NZ,LPX
LD A,2FH
ADD A,E
RET
OUT LD C,PDINP
IN A, ( C )
SRL A
JP C,OUT1
JP NOOP
OUT1 LD IX,DTEMP
LD IY,DSETTEMP
LD A,(IX+02H)
LD H,(IY+02H)
CP H
JP Z,OUT2
JP C,OUT3
JP NC,OUT4
OUT2 LD A,(IX+01H)
LD H,(IY+01H)
CP H
JP Z,OUT5
JP C,OUT3
JP NC,OUT4
OUT5 LD A,(IX+00H)
LD H,(IY+00H)
CP H
JP NC,OUT4
OUT3 LD A,(DOUTPUT)
RES 0,A
OUT (PDOP),A
OUTH LD IX,DHUMID
LD IY,DSETHUMID
LD A,(IX+02H)
LD H,(IY+02H)
CP H
JP Z,OUT6
JP C,OUT7
JP NC,OUT8
OUT6 LD A,(IX+01H)
LD H,(IY+01H)
CP H
JP Z,OUT9
JP C,OUT7
JP NC,OUT8
OUT9 LD A,(IX+00H)
LD H,(IY+00H)
CP H
JP NC,OUT8
OUT7 LD A,(DOUTPUT)
SET 1,A
OUT (PDOP),A
RET
OUT8 LD A,(DOUTPUT)
RES 1,A
OUT (PDOP),A
RET
OUT4 LD A,(DOUTPUT)
SET 0,A
OUT (PDOP),A
JP OUTH
NOOP LD A,(DOUTPUT)
AND 11111100B
OUT (PDOP),A
RET
DISPLAY LD DE,DDISPLAY ;PREDISPLAY
LD BC,0010H
LDIR
LD IX,DDISPLAY
CP 00H
JP Z,DTID
CP 01H
JR Z,DSAD
CP 02H
JP Z,DTE
CP 03H
JP Z,DSTE
CP 04H
JP Z,DHU
CP 05H
JP Z,DSHU
CP 0AH
JP Z,DSTID
JP DPLAY
DSHU LD A,(IY+00H)
LD (IX+0EH),A
LD A,(IY+01H)
LD (IX+0CH),A
LD A,(IY+02)
LD (IX+0BH),A
JP DPLAY
DHU LD A,(IY+00H)
LD (IX+0DH),A
LD A,(IY+01H)
LD (IX+0BH),A
LD A,(IY+02H)
LD (IX+0AH),A
JP DPLAY
DSTE LD A,(IY+00H)
LD (IX+0DH),A
LD A,(IY+01H)
LD (IX+0BH),A
LD A,(IY+02H)
LD (I+0AH),A
JP DPLAY
DTE LD A,(IY+00H)
LD (IX+0CH),A
LD A,(IY+01H)
LD (IX+0AH),A
LD A,(IY+02H)
LD (IX+09H),A
JP DPLAY
DSAD LD A,(IY+00H)
LD (IX+01H),A
LD A,(IY+01H)
LD (IX+07H),A
LD A,(IY+02H)
LD (IX+06H),A
LD A,(IY+03H)
LD (IX+04H),A
LD A,(IY+04H)
LD (IX+03H),A
LD A,(IY+05H)
LD (IX+0BH),A
LD A,(IY+06H)
LD (IX-0AH),A
LD A,(IY+07H)
LD (IX+09H),A
LD A,(IY+08H)
LD (IX+0FH),A
LD A,(IY+09H)
LD (IX+0EH),A
LD A,(IY+0AH)
LD (IX+0DH),A
JP DPLAY
DTID LD A,(DBUFFERT)
LD (IX+0CH),A
LD A,(IY+00H)
LD (IX+0EH),A
LD A,(IY+01H)
LD (IX+0DH),A
LD A,(IY+02H)
LD (IX+0BH),A
LD A,(IY+03H)
LD (IX+0AH),A
JP DPLAY
DSTID LD A,(IY+00H)
LD (IX+0FH),A
LD A,(IY+01H)
LD (IX+0EH),A
LD A,(IY+02H)
LD (IX+0CH),A
LD A,(IY+03H)
LD (IX+0BH),A
DPLAY LD HL,DDISPLAY ;DISPLAY
CALL INITLCD
LD A,01H
CALL WRLINE
LD A,02H
CALL WRLINE
RET
INITLCD LD A,00H
OUT (02H),A ;Pc = Psign
LD A,38H
OUT (00H),A ;Pa = Pdata
LD A,00H
CALL EPLUSE
CALL DELAY
LD A,0CH
OUT (00H),A
LD A,00H
CALL EPLUSE
LD A,06H
OUT (00H),A
LD A,00H
CALL EPLUSE
RET
WRLINE CP 01H
JP Z,WRL1
CP 02H
JP Z,WRL2
RET
WRL1 LD A,00H
CALL GOTO
JP WRLM
WRL2 LD A,40H
CALL GOTO
WRLM LD B,08H
WRL LD D,(HL)
PUSH BC
CALL WRBYTE
POP BC
INC HL
DJNZ WRL
RET
EPLUSE SET 2,A
OUT (02H),A
LD B,00H
EP1 DJNZ EP1
REST 2,A
OUT (02H),A
RET
GOTO PUSH BC
SET 7,A
OUT (00H),A
XOR A
OUT (02H),A
CALL EPLUSE
POP BC
RET
WRBUYTE LD A,01H
OUT (02H),A
LD A,D
OUT (00H),A
LD A,01H
CALL EPLUSE
RET
DELAY LD B,00H
DEY NOP
NOP
DJNZ DEY
RET
SCANA CALL SCAN1
JP NC,SCANA
CALL DELAY
SCANAA CALL SCAN1
PUSH AF
CALL INTH
CALL CHACK5M
CALL OUT
POP AF
JP C,SCANA
CALL DELAY
CALL SCAN1
RET
SCAN1 LD C,PDKE
IN A, ( C )
LD B,04H
LD D,00H
LPSC RRC A
PUSH AF
INC D
POP AF
JP NC,LPSC1
DJNZ LPSC
LPSC1 LD A,D
RET
CHACK5M LD IX,DFULLD
LD A,(IX+00H)
CP 00H
JP Z,CHACK5M1
RET
CHACK5M1 LD IX,DTIME
LD IY,(DASAVED)
LD A,(IX+01H)
CP 00H
JP Z,CHX
CHX1 LD A,(IX+01H)
AND 0FH
CP 00H
JP Z,CH5M
RET
OCH5M LD A,(IY+00H)
LD (IY+0BH),A
LD HL,(DASAVED)
LD BC,0BH
ADD HL,BC
LD (DASAVED),HL
RET
CHX LD A,(IX+02H)
JP CHX1
CH5M LD IX,DTIMEDPLAY ;SAVE TIME
LD A,(IX+00H)
LD (IY+01H),A
LD A,(IX+01H)
LD (IY+02H),A
LD A,(IX+02H)
LD (IY+03H),A
LD A,(IX+03H)
LD (IY+04H),A
LD IX,DTEMP ;SAVE TEMP
LD A,(IX+00H)
LD (IY+05H),A
LD A,(IX+01H)
LD (IY+06H),A
LD A,(IX+02H)
LD (IY+07H),A
LD IX,DHUMID ;SAVE HUMID
LD A,(IX+00H)
LD (IY+08H),A
LD A,(IX+01H)
LD (IY+09H),A
LD A,(IX+02H)
LD (IY+0AH),A
JP OCH5M
FULLD LD A,01H
LD (DFULLD),A
RET
END