BEGIN: CALL INIT ; èíèöèàëèçàöèÿ ïðîãðàììû CALL SINIT ; èíèöèàëèçàöèÿ ýêðàíà 2: CALL TERR ; îáðàáîòêà îøèáîê èçìåðåíèÿ CALL TSCAN ; ñáîð äàííûõ CALL TSCREN ; îòîáðàæåíèå ðåçóëüòàòîâ CALL ANALIZ ; àíàëèç ñîñòîÿíèÿ è óïðàâëåíèå CALL LSHIFT ; ñäâèã ãðàôè÷åñêîãî ýêðàíà CALL LGRSO ; îòîáðàæåíèå ñîñòîÿíèÿ ; ðèñóåì ãðàôèê MOV TMEM,R2 MOV #1,R0 CALL LGRAF MOV TMEM+2.,R2 MOV #2,R0 CALL LGRAF MOV TMEM+12.,R2 MOV #3,R0 CALL LGRAF MOV REGMOD,R1 CALL LOCTW MOV NAGREV,R1 CALL LOCTW MOV RAZMOR,R1 CALL LOCTW MOV ERTEMP,R1 CALL LOCTW MTPS #0 TST EXM ; ÏÐÎÂÅÐÈÌ ÍÅ ÍÀÆÈÌÀËÈ ËÈ ÑÒÎÏ BEQ 2 ; ÍÅÒ - ÍÅ ÍÀÆÈÌÀËÈ MTPS #340 CLR EXM MOV #600,R0 MOV #2000,R1 CALL LSOUND MTPS #0 TST EXM BEQ 2 EXT: MOV MEMSTP,@#4 ; ÂÎÑÑÒÀÍÎÂÈÌ ÎÁÐÀÁÎÒ×ÈÊ MOV #233,R0 EMT 16 MOV #232,R0 EMT 16 MOV MEMSP,SP HALT EXM: .WORD 0 ; ß×ÅÉÊÀ ÄËß ÕÐÀÍÅÍÈß ÏÐÈÇÍÀÊÀ ; ÍÀÆÀÒÈß STOP ; ÈÍÈÖÈÀËÈÇÀÖÈß ÏÐÎÃÐÀÌÌÛ MEMSTP: .WORD 120000 ; ÑÎÕÐÀÍÅÍÈÅ ÂÅÊÒÎÐÀ 4 MEMSP: .WORD 1000 ; ÑÎÕÐÀÍÅÍÈÅ ÓÊÀÇÀÒÅËß ÑÒÅÊÀ INIT: ;EMT14 CLR KOMMAD MOV #233,R0 EMT 16 MOV #232,R0 EMT 16 MOV SP,MEMSP MOV @#4,MEMSTP MOV #LSTOP,@#4 ; ÏÎÑÒÀÂÈÌ ÎÁÐÀÁÎÒ×ÈÊ MOV #340,@#6 MOV #TMEM,R0 ; î÷èñòèì ìàññèâ òåìïåðàòóð MOV #16.,R1 0: CLR (R0)+ SOB R1,0 CALL LSCANT ; R4 ÌÀÑÊÀ ÍÀÉÄÅÍÍÛÕ ÄÀÒ×ÈÊΠMOV R4,TMASK ; ÑÐÕÐÀÍÈÌ ÌÀÑÊÓ ÍÀÉÄÅÍÍÛÕ ÒÌÐ CLR ERTEMP ; î÷èñòèì ñ÷åò÷èê RETURN ; ÎÁÐÀÁÎÒÊÀ ÑÒÎÏ LSTOP: INC EXM SUB (PC),(SP) RTI ; ÎÁÐÀÁÎÒÊÀ ÑÎÁÛÒÈÉ ; ÀÍÀËÈÇ ÇÍÀ×ÅÍÈÉ ÄÀÒ×ÈÊΠKOMMAD: .WORD 0 TLOW: .WORD 260. ; ÍÀ×ÀËÜÍÛÅ ÇÍÀ×ÅÍÈß - ÍÈÆÍÅÅ THI: .WORD 290. ; ÂÅÐÕÍÅÅ ÇÍÀ×ÅÍÈÅ ; ÊÎÍÒÐÎËÜÍÛÅ ÒÎ×ÊÈ MTS: .WORD 1.,MT00,50.,MT05,100.,MT10,150.,MT15,200.,MT20 .WORD 250.,MT25,999.,MT99,71,72 ; ÌÀÑÑÈ ÓÏÐÀÂËÅÍÈß ; Ò3 L1 H2 Z2 ; L2 H1 Z1 MT00: .WORD 280.,27,25,35,35,25,05,04 MT05: .WORD 280.,27,25,37,35,25,05,04 MT10: .WORD 275.,27,25,37,35,25,05,04 MT15: .WORD 270.,07,05,05,35,25,05,04 MT20: .WORD 260.,15,15,05,07,05,05,04 MT25: .WORD 250.,17,15,05,07,05,05,04 MT99: .WORD 240.,17,15,05,07,05,05,04 ; ÑÌÅÙÅÍÈÅ 0 2 4 6 10 12 14 16 MTT: .WORD MT00 ; ÓÊÀÇÀÒÅËÜ ÍÀ ÌÀÑÑÈ ÓÏÐÀÂËÅÍÈß DT1: .WORD 5. ; ÄÅËÜÒÀ1-ÐÅÃÓËÈÐÎÂÀÍÈÅ Â ÏÐÅÄÅËÀÕ L1H1 DT2: .WORD 10. ; H2 L2 ÑÎÎÒÂÅÑÒÂÅÍÍÎ REGMOD: .WORD 0 ; ÐÅÆÈÌ ÐÅÃÓËÈÐÎÂÀÍÈß 0=Í1-L1 ; 1=H2-Tç-L2 NAGREV: .WORD 0 ; ÐÅÆÈÌ =1 ÍÀÃÐÅ ; =0 ÎÕËÀÆÄÅÍÈÅ RAZMOR: .WORD 0 ; ÐÅÆÈÌ ÇÈÌÍÅÉ ÐÀÇÌÎÐÎÇÊÈ ; =1 ÐÀÇÌÎÐÎÇÊÀ ; ÐÅÃÈÑÒÐ ÓÏÐÀÂËÅÍÈß ÊÎÍÄÈÖÈÎÍÅÐÎÌ 177714 ; ÁÈÒÛ ÌÀÑÊÀ ; 0 - 01 - ÂÊËÞ×ÅÍÈÅ ÂÅÍÒÈËßÒÎÐÀ ÊÎÍÄÈÖÈÎÍÅÐÀ ; 1 - 02 - ÂÊËÞ×ÅÍÈÅ ÒÓÐÁÎ ÐÅÆÈÌÀ ÂÅÍÒÈËßÒÎÐÀ ÊÎÍÄÈÖÎÍÅÐÀ ; 2 - 04 - ÂÊËÞ×ÅÍÈÅ ÂÛÄÓÂÍÎÃÎ ÂÅÍÒÈËßÒÎÐÀ ; 3 - 10 - ÂÊËÞ×ÅÍÈÅ KOMÏÐÅÑÑÎÐÀ ; 4 - 20 - ÂÊËÞ×ÅÍÈÅ ÊËÀÏÀÍÀ ÍÀ ÍÀÃÐÅ ; 5 - 40 - ÐÅÇÅР- ÐÀÇÌÎÐÎÇÊÀ ; 1àÿ(ANREG1) ÑÒÀÄÈß ÓÑÒÀÍÎÂÊÀ ÓÊÀÇÀÒÅËß ÍÀ ÌÀÑÑÈ ÓÏÐÀÂËÅÍÈß ; ÏÎ ÏÎÊÀÇÀÍÈßÌ ÄÀÒ×ÈÊÀ ÂÍÅØÍÅÉ ÒÅÌÏÅÐÀÒÓÐÛ ; 2àÿ(ANREG2) ÑÒÀÄÈß ÑÎÁÑÒÂÅÍÍÎ ÐÅÃÓËÈÐÎÂÀÍÈÅ ; ÍÀ ÎÑÍÎÂÀÍÈÈ ÈÍÔÎÐÌÀÖÈÈ Ñ ÄÀÒ×ÈÊΠ ÊÂÀÐÒÈÐÅ ; ANALIZ: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) MOV R5,-(SP) 00: CALL ZSTART ; çèìíèé ïóñê ñèñòåìû CALL ANZIM ; çèìíÿÿ ðàçìîðîçêà TST R5 ; îáðàáîòàåì ôëàã âûõîäà BNE 99 ; 68: CALL ANREG1 ; îïðåäåëåíèå óêàçàòåëÿ ÌÒÒ 13: CALL ANREG2 ; ðåãóëèðîâàíèå ïî ïðåäåëàì 99: CALL AISKL ; îáðàáîòàåì èñêëþ÷åíèÿ MOV (SP)+,R5 MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 RETURN ; ïîäïðîãðàììà çèìíåãî ïóñêà ñèñòåìû ZSTART: TST KOMMAD ; ïðîâåðèì ïåðâûé ëè ýòî ïóñê BNE 99 ; íåò MOV TMEM+6,R0 ; äàííûå ñ èñïàðèòåëÿ â R0 TST R0 BPL 99 ; åñëè èñïàðèòåëü èìååò ïëþñ ; òî âûõîäèì èíà÷å CLR RAZMOR ; ðàçìîðîçêà INC RAZMOR ; o÷åâèäíî ÷òî ëåòîì òóò æå MOV #24,KOMMAD ; âûéäåò èç ýòîãî ðåæèìà 99: RETURN ; ïîäïðîãðàììà îáðàáîòêè çèìíåé ðàçìîðîçêè ANZIM: ; ÏÐÎÂÅÐÈÌ ÃÎÒΠËÈ ÊÎÍÖÈÎÍÅÐ Ê ÏÓÑÊÓ - ÇÈÌÀ ; EÑËÈ ÒÅÌÏÅÐÀÒÓÐÀ ÈÑÏÀÐÈÒÅËß ÌÅÍÜØÅ -10 ; ÒÎ ÂÊËÞ×ÈÌ ÒÎËÜÊÎ ÂÛÄÓÂÍÎÉ ÂÅÍÒÈËßÒÎÐ ÄÎ ; ÄÎÑÒÈÆÅÍÈß ÏÎËÎÆÈÒÅËÜÍÎÉ ÅÃÎ ÒÅÌÏÅÐÀÒÓÐÛ - ÒÅ +1 MOV TMEM+6,R0 ; ÄÀÍÍÛÅ Ñ ÈÑÏÀÐÈÒÅËß Â R0 TST RAZMOR ; ÌÛ Â ÐÅÆÈÌÅ ÐÀÇÌÎÐÎÇÊÈ ? BEQ 60 ; ÍÅÒ CCC TST R0 ; ÏÐÎÂÅÐÈÌ ÒÅÌÏÅÐÀÒÓÐÓ BPL 61 ; ÏÎËÎÆÈÒÅËÜÍÀß - ÏÐÎÂÅÐÈÌ BR 99 ; ÂÛÕÎÄÈÌ - ÍÈ×ÅÃÎ ÍÅ ÌÅÍß 61: CCC CMP R0,#50. ; ÈÑÏÀÐÈÒÅËÜ ÒÅÏËÅÅ +5Ñ BLE 99 ; ÅÑËÈ ÌÅÍÜØÅ ÒÎ ÐÀÇÌÎÐÀÆÈÂÀÅÌ BR 69 ; ÅÑËÈ ÁÎËÜØÅ ÑÍÈÌÀÅÌ ÏÐÈÇÍÀÊ 60: CCC TST R0 ; ÏÐÎÂÅÐÈÌ ÒÅÌÏÅÐÀÒÓÐÓ BPL 69 ; ÏÎËÎÆÈÒÅËÜÍÀß - ÂÑÅ OK NEG R0 ; ÑÌÅÍÈÌ ÇÍÀÊ CCC CMP #150.,R0 ; ÈÑÏÀÐÈÒÅËÜ ÍÈÆÅ -15C ? BGT 69 ; OÁÌÅÐÇÀÍÈß ÍÅ ÎÁÍÀÐÓÆÅÍÎ MOV #24,KOMMAD ; ÓÑÒÀÍÎÂÈÌ ÐÅÆÈÌ INC RAZMOR ; ÓÑÒÀÍÎÂÈÌ ÏÐÈÇÍÀÊ ÐÀÇÌÎÐÎÇÊÈ BR 99 69: CLR RAZMOR ; ÑÁÐÎÑÈÌ ÏÐÈÇÍÀÊ ÐÀÇÌÎÐÎÇÊÈ CMP #24,KOMMAD ; ÏÐÎÂÅÐÈÌ ÏÐÅÄÈÄÓÙÓÞ ÊÎÌÀÍÄÓ BNE 68 ; ÅÑËÈ ÍÅ ÐÀÇÌÎÐÎÇÊÀ MOV #5,KOMMAD ; EÑËÈ ÁÛËÀ ÐÀÇÌÎÐÎÇÊÀ - ÂÛÉÄÅÌ ; ÈÇ ÍÅÅ - ÂÅÍÒÈËßÖÈß CLR REGMOD ; ÑÁÐÎÑÈÌ ÏÐÈÇÍÀÊÈ CLR NAGREV 68: CLR R5 RETURN 99: CLR R5 ; âûõîä ñ ïðèçíàêîì INC R5 ; âûéòè íà èñêëþ÷åíèÿ RETURN ; ïîäïðîãðàììà óñòàíîâêè óêàçàòåëåé íà ìàññèâ óïðàâëåíèÿ ; 1àÿ ÑÒÀÄÈß ANREG1: NOP 68: MOV TMEM,R0 ; ÄÀÍÍÛÅ Ñ ÏÅÐÂÎÃÎ Â R0 TST R0 ; ÏÐÎÂÅÐÈÌ ÇÍÀÊ BPL 12 ; ÅÑËÈ ÏÎËÎÆÈÒÅËÜÍÀß MOV #MT00,MTT ; ÓÑÒÀÍÎÂÈ ÓÊÀÇÀÒÅËÜ BR 13 ; ÏÅÐÅÉÄÅÌ KO ÂÒÎÐÎÌÓ ÝÒÀÏÓ 12: MOV MTS,R1 ; ÌÀÑÑÈ MOV #6,R2 ; ÊÎËÈ×ÅÑÒÂÎ ØÀÃΠCLR R3 ; ÐÅÃÈÑÒÐ ÑÌÅÙÅÍÈß 10: CCC ; ÑÁÐÎÑÈÌ ÏÐÈÇÍÀÊÈ CMP MTS(R3),R0 ; ÑÐÀÂÍÈÌ Ñ ÌÀÑÑÈÂÎÌ BGE 11 ; ÅÑËÈ ÌÅÍÜØÅ ÒÎ ÒÎ ×ÒÎ ÍÀÄÎ ADD #4,R3 ; ÄÎÁÀÂÈÌ ÑÌÅÙÅÍÈÅ SOB R2,10 ; ÖÈÊË 11: MOV MTS+2(R3),MTT ; ÓÑÒÀÍÎÂÈÌ ÓÊÀÇÀÒÅËÜ ; MTT - ÓÊÀÇÀÒÅËÜ ÍÀ ÓÊÀÇÀÒÅËÜ ÍÀ ÌÀÑÑÈ ÓÏÐÀÂËÅÍÈß 13: RETURN ;ïîäðîãðàììà îáðàáîòêè ðåãóëèðîâàíèÿ ïî ïðåäåëàì ; ANREG2: ; 2àÿ ÑÒÀÄÈß ; ÍÀ×ÍÅÌ ÀÍÀËÈÇÈÐÎÂÀÒÜ ÈÑÕÎÄÍÛÅ ÄÀÍÍÛÅ ; ÂÛÁÈÐÀÅÌ 2 ÀËÃÎÐÈÒÌÀ ÐÅÃÓËÈÐÎÂÀÍÈß ; 1É ÝÒÎ ÏÐÈ ÏÐÅÂÛØÅÍÈÈ H2 ÈËÈ L2 ; ÐÅÃÓËÈÐÎÂÀÍÈÅ ÈÄÅÒ ÄÎ ÄÎÑÒÈÆÅÍÈß ÇÀÄÀÍÍÎÉ ÒÅÌÏÅÐÀÒÓÐÛ ; REGMOD=1 ; 2É ÏÐÈ ÏÐÅÂÛØÅÍÈÈ Í1 ÈËÈ L1 ; ÒÓÒ ÐÅÃÓËÈÐÎÂÀÍÈÅ ÈÄÅÒ ÄÎ ÏÐÎÒÈÂÎÏÎËÎÆÍÎÉ ÒÎ×ÊÈ H1 L1 ; REGMOD=0 13: MOV MTT,R2 ; ÓÊÀÇÀÒÅËÜ MOV TMEM+12.,R1 ; ÇÀÃÎÍÈÌ ÏÅÐÂÛÉ ÄÀÒ×ÈÊ ; MOV TMEM+30.,R1 ; MOV #260,R1 TST REGMOD ; ÏÐÎÂÅÐÈÌ ÐÅÆÈÌ BEQ 40 ; ÏÅÐÅÉÄÅÌ Ê ÎÁÐÀÁÎÒÊÅ ÎÁÛ×ÍÎÃÎ CCC TST NAGREV ; OÏÐÅÄÅËÈÌ ÐÅÆÈÌ ; NAGREV=0 - ÎÕËÀÆÄÅÍÈÅ ; NAGREV=1 - ÍÀÃÐÅ BNE 50 ; ÏÅÐÅÉÄÅÌ ÍÀ ÎÕËÀÆÄÅÍÈÅ ; ÎÁÐÀÁÀÒÛÂÀÅÌ ÍÀÃÐÅ - ÒÅ ÆÄÅÌ ÏÎÍÈÆÅÍÈß ÒÅÌÏÅÐÀÒÓÐÛ CCC CMP (R2),R1 ; ÑÐÀÂÍÅÍÈÅ Ñ ÇÀÄ ÒÅÌÏÅÐÀÒÓÐÎÉ BLT 99 ; ÅÑËÈ ÏÎÐÎà ÍÅ ÄÎÑÒÈÃÍÓÒ BR 52 ; ÏÎÐÎà ÄÎÑÒÈÃÍÓÒ 50: CCC CMP (R2),R1 ; ÑÐÀÂÍÅÍÈÅ Ñ ÇÀÄ ÒÅÌÏÅÐÀÒÓÐÎÉ BGT 99 ; ÏÎÐÎà ÍÀÃÐÅÂÀ ÍÅ ÄÎÑÒÈÃÍÓÒ 52: CLR REGMOD ; ÑÁÐÎÑÈÌ ÏÐÈÇÍÀÊ ÐÅÆÈÌÀ Í2L2 BR 99 ; ÂÛÕÎÄ 40: MOV (R2),R3 ; Ñ×ÈÒÀÅÌ ÇÍÀ×ÅÍÈÅ ADD DT1,R3 ; ÂÅÐÕÍÈÉ ÏÐÅÄÅË 1 CCC CMP R1,R3 ; ÑÐÀÂÍÈÌ BGT 21 ; ÂÛØÅ 1 BR 30 ; ÍÅ ÂÛØÅ 21: MOV (R2),R3 ; ADD DT2,R3 ; ÓÑÒAÍÎÂÈÌ ÂÅÐÕÍÈ ÏÐÅÄÅË 2 CCC CMP R1,R3 ; ÑÐÀÂÍÈÌ BGT 22 MOV 4(R2),KOMMAD ; ÎÕËÀÆÄÀÅÌ ÏÎ L1 BR 99 22: MOV 2(R2),KOMMAD ; ÑÎÎÒÂÅÒÑÒÂÅÍÍÎ ÎÕËÀÆÄÀÅÌ L2 INC REGMOD ; ÓÑÒÀÍÎÂÈÌ ÏÐÈÇÍÀÊ H2L2 CLR NAGREV ; ÓÑÒÀÍÎÂÈÌ ÏÐÈÇÍÀÊ ÎÕËÀÆÄÅÍÈß BR 99 30: MOV (R2),R3 ; ÇÀÃÐÓÇÈÌ SUB DT1,R3 ; ÍÈÆÍÅÅ ÇÍÀ×ÅÍÈÅ L1 CCC CMP R1,R3 ; ÑÐÀÂÍÈÌ Ñ ÍÈÆÍÈÌ L1 BLT 31 ; EÑËÈ ÍÈÆÅ BR 99 ; ÅÑËÈ Â ÇÀÄÀÍÍÎÌ ÄÈÀÏÀÇÎÍÅ 31: MOV (R2),R3 ; ÇÀÃÐÓÇÈÌ SUB DT2,R3 ; ÍÈÆÍÅÅ L2 CCC CMP R1,R3 ; ÑÐÀÂÍÈÌ BLT 32 ; ÍÈÆÅ ÍÈÆÍÅÃÎ MOV 6(R2),KOMMAD ; ÃÐÅÅÌ ÏÎ L1 BR 99 32: MOV 8.(R2),KOMMAD ; ÃÐÅÅÌ ÏÎ L2 INC REGMOD ; ÓÑÒÀÍÎÂÈÌ ÏÐÈÇÍÀÊ CLR NAGREV ; ÓÑÒÀÍÎÂÈÌ ÏÐÈÇÍÀÊ ÍÀÃÐÅÂÀ INC NAGREV 99: RETURN ; ïîäïðîãðàììû ãðóïïû àíàëèçà ; îáðàáîòêà èñêëþ÷åíèÿ AISKL: CCC TST KOMMAD ; ÎÁÐÀÁÎÒÀÅÌ ÈÑÊËÞ×ÅÍÈÅ BNE 0 ; ÅÑËÈ ÅÑÒÜ ÊÎÌÀÍÄÀ MOV MTT,R2 MOV 12(R2),KOMMAD ;ÅÑËÈ ÍÅÒ ÊÎÌÀÍÄÛ-ÂÅÍÒÈËßÖÈß 0: MOV KOMMAD,@#177714 MOV KOMMAD,R1 CALL LOCTW ; âûâîä ñëîâà óïðàâëåíèÿ - âðåìåííî RETURN ; Ïðîöåäóðà ðèñîâàíèÿ ñîñòîÿíèÿ êîíäèöèîíåðà â íèæíèõ 3õ ; ñòðîêàõ - îòîáðàæàþòñÿ ñëåäóþùèå ñîñòîÿíèÿ: ; ÊÐÀÑ - êîìïðåññîð on/off - ìàñêà 10 ; ÑÈÍ - âåíòèëÿòîð IN on/off - ìàñêà 01 ; ÇÅË - âåíòèëÿòîð OUT on/off - ìàñêà 04 LGRSO: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV #377,R1 ; êîîðäèíàòà Õ CCC BIT #10,KOMMAD ; ïðîâåðèì ìàñêó 10 BEQ 0 MOV #3,R0 MOV #375,R2 ; êîîðäèíàòà Y CALL LPSETC 0: CCC BIT #01,KOMMAD ; ïðîâåðèì ìàñêó 01 BEQ 1 MOV #1,R0 MOV #374,R2 CALL LPSETC 1: CCC BIT #04,KOMMAD BEQ 2 MOV #2,R0 MOV #376,R2 CALL LPSETC 2: MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 RETURN ; ïðîöåäóðà ðèñîâàíèÿ òî÷êè ãðàôèêà ; âõîä R0 - öâåò òî÷êè ; R2 - çíà÷åíèå òåìïåðàòóðû *10 LGRAF: MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV #377,R1 ; çàäàäèì êîîðäèíàòó Õ MOV #3600,R3 TST R2 ; ïðîâåðèì çíà÷åíèå BPL 0 ; ïîëîæèòåëüíàÿ NEG R2 ; ïîìåíÿåì çíàê ADD R2,R3 ; äîáàâèì ñìåùåíèå BR 1 0: SUB R2,R3 ; âû÷òåì ñìåùåíèå 1: CLR R2 DIV #10.,R2 ; ðàçäåëèì íà 10 ; BIC #177400,R2 ; îòñå÷åì ëèøíåå CALL LPSETC MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 RETURN ; ïðîöåäóðà ñäâèãà ýêðàíà âëåâî ; ñäèâãàåì ýêðàí â öâåòíîì ðåæèìå äëÿ ðèñîâàíèÿ ãðàôèêîâ ; â ðåàëüíîì âðåìåíè LSHIFT: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) MOV #77700,R0 ; íà÷àëüíûé àäðåñ MOV #120.,R1 ; êîëè÷åñòâî ñòðîê MOV #37,R4 ; êîëè÷åñòâî ñëîâ â ñòðîêå 1: MOV R0,R3 CCC MOV R4,R2 ; êîëè÷åñòâî ñëîâ â ñòðîêå 0: ROR -(R0) SOB R2,0 TST -(R0) MOV R3,R0 CCC MOV R4,R2 00: ROR -(R0) SOB R2,00 TST -(R0) SOB R1,1 MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 RETURN ; èíèöèàëèçàöèÿ ýêðàíà SINIT: CLR R2 CLR R1 EMT 24 .PRINT #TNAM01 .PRINT #TNAM02 .PRINT #TNAM03 .PRINT #TNAM04 .PRINT #TNAM05 .PRINT #TNAM07 ; .PRINT #TNAM08 .PRINT #TNAM09 .PRINT #TNAM10 .PRINT #TNAM11 .PRINT #TNAM16 RETURN ; ïðîöåäóðà îòîáðàæåíèÿ ðåçóëüòàòîâ TSCREN: CLR R2 MOV #21,R1 EMT 24 MOV TMEM,R0 CALL LDEC1 INC R2 EMT 24 MOV TMEM+2,R0 CALL LDEC1 INC R2 EMT 24 MOV TMEM+4,R0 CALL LDEC1 INC R2 EMT 24 MOV TMEM+6,R0 CALL LDEC1 INC R2 EMT 24 MOV TMEM+8.,R0 CALL LDEC1 INC R2 EMT 24 MOV TMEM+12.,R0 CALL LDEC1 ; MOV #40,R0 ; EMT 16 ; MOV TLOW,R0 ; CALL LDEC2 ; MOV #40,R0 ; EMT 16 ; MOV THI,R0 ; CALL LDEC2 MOV @MTT,R0 CALL LDEC1 ; INC R2 ; EMT 24 ; MOV TMEM+14.,R0 ; CALL LDEC1 INC R2 EMT 24 MOV TMEM+16.,R0 CALL LDEC1 INC R2 EMT 24 MOV TMEM+18.,R0 CALL LDEC1 INC R2 EMT 24 MOV TMEM+20.,R0 CALL LDEC1 INC R2 EMT 24 MOV TMEM+30.,R0 CALL LDEC1 CLR R1 INC R2 EMT 24 RETURN ; ÑÁÎÐ ÈÍÔÎÐÌÀÖÈÈ Â ÏÀÌßÒÜ Ñ ÄÀÒ×ÈÊΠ; ÏÐÎÖÅÄÓÐÀ ÑÎÁÈÐÀÅÒ ÈÍÔÎÐÌÀÖÈÞ Ñ ÄÀÒ×ÈÊΠÏÎ ÌÀÑÊÅ TNAM01: .ASCIZ /Âõîä_____________/<12> TNAM02: .ASCIZ /Âûõîä____________/<12> TNAM03: .ASCIZ /Êîìïðåññîð_______/<12> TNAM04: .ASCIZ /Èñïàðèòåëü_______/<12> TNAM05: .ASCIZ /Îáðàòíûé êîíòóð__/<12> TNAM06: .ASCIZ /ðåçåðâ___________/<12> TNAM07: .ASCIZ /Màëåíüêàÿ êîìíàòà/<12> TNAM08: .ASCIZ /Ðåçåðâ___________/<12> TNAM09: .ASCIZ /Áîëüøàÿ êîìíàòa__/<12> TNAM10: .ASCIZ /Âàííàÿ êîìàíàòa__/<12> TNAM11: .ASCIZ /Kóõíÿ____________/<12> TNAM12: .ASCIZ /ðåçåðâ___________/<12> TNAM13: .ASCIZ /none_____________/<12> TNAM14: .ASCIZ /none_____________/<12> TNAM15: .ASCIZ /none_____________/<12> TNAM16: .ASCIZ /Kîíòðîëëåð_______/<12> MESS01: .ASCIZ <12> MESS02: .ASCIZ // .EVEN TMEM: .BLKW 16. ; MAÑÑÈ ÄËß ÕÐÀÍÅÍÈß ÑÎÁÐÀÍÍÎÉ ÈÍÔÎÐÌÀ ; ÖÈÈ Ñ ÄÀÒ×ÈÊΠÏÎ ÇÀÄÀÍÍÎÉ ÄÎÏÓÑÒÈÌÎÉ ; ÌÀÑÊÅ TMASK: .WORD 0 ; ÑÎÁÑÒÂÅÍÍÎ ÑÀÌÀ ÏÐÎÖÅÄÓÐÀ TSCAN: MOV R5,-(SP) MOV R4,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R0,-(SP) CLR R2 ; ÑÌÅÙÅÍÈÅ ÄËß ÁËÎÊÀ ÏÀÌßÒÈ CLR R3 ; ÍÀ×ÀËÜÍÎÅ ÇÍÀ×ÅÍÈÅ INC R3 MOV #20,R5 ; C×ÅÒ×ÈÊ MOV TMASK,R4 ; ÌÀÑÊÀ ÍÀÉÄÅÍÍÛÕ -  R4 2: CCC ; ÑÁÐÎÑ ÁÈÒΠBIT R4,R3 ; ÏÐÎÂÅÐÈÌ ÏÎÏÀËÈ ? BLOS 3 ; ÍÅ ÏÎÏÀËÈ MOV TMEM(R2),R0 ; ïåðåäàäèì ñòàðîå çíà÷åíèå CALL LTEMP ; Ñ×ÈÒÛÂÀÅÌ MOV R0,TMEM(R2) 3: ASL R3 ; ÄÂÈÃÀÅÌ INC R2 INC R2 SOB R5,2 MOV (SP)+,R0 MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 MOV (SP)+,R5 RETURN ; ÏÐÎÖÅÄÓÐÀ ÎÏÐÅÄÅËÅÍÈß ÀÊÒÈÂÍÛÕ ÄÀÒ×ÈÊΠ; ÂÕÎÄÍÛÅ ÄÀÍÍÛÅ - ÍÅÒ ; ÂÛÕÎÄÍÛÅ ÄÀÍÍÛÅ - ÌÀÑÊÀ ÍÀÉÄÅÍÍÛ ÄÀÒ×ÈÊΠ- R4 LSCANT: MTPS #340 MOV R0,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R5,-(SP) MOV #177714,R0 ; ÀÄÐÅÑ ÄÀÒ×ÈÊÀ CLR R2 CLR R4 ; ÏÎÄÃÎÒÎÂÊÀ ÐÅÃÈÑÒÐΠCLR R5 ; R4- ÎÁÍÀÐÓÆÅÍÈÅ 1 COM R5 ; R5- ÎÁÍÀÐÓÆÅÍÈÅ 0 DEC R2 1: MOV (R0),R3 ; Ñ×ÈÒÀÅÌ BIS R3,R4 ; ÓÑÒÀÍÀÂËÈÂÀÅÌ 1 COM R3 BIC R3,R5 ; ÓÑÒÀÍÀÂËÈÂÀÅÌ 0 SOB R2,1 XOR R5,R4 ; ÓÄÀËÈÌ ËÈØÍÅÅ - ÒÅ ÑÒÀÒÈ×ÍÛÅ MOV (SP)+,R5 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R0 RETURN ; ïðîöåäóðà îáðàáîòêè îøèáîê èçìåðåíèÿ ; îíà ñìîòðè íà îáùåå êîëè÷åñòâî îøèáîê - ERTEMP è ïðè ; ïðåâûøåíèè ïðåäåëà ÷èñòèò ìàññèâ èçìåðåíèé TERR: CMP ERTEMP,#25. BLE 9 MOV R0,-(SP) MOV R1,-(SP) MOV #TMEM,R0 MOV #16.,R1 0: CLR (R0)+ SOB R1,0 MOV (SP)+,R1 MOV (SP)+,R0 CLR ERTEMP 9: RETURN ; ÏÐÎÖÅÄÓÐÀ ÂÛ×ÈÑËÅÍÈß T1 È Ò2 ; ÄËß ÂÛ×ÈÑËÅÍÈß ÒÅÌÏÅÐÀÒÓÐÛ ; Ñ ÏÅÐÅÑ×ÅÒÎÌ Â ÒÅÌÏÅÐÀÓÐÓ Â ÃÐÀÄÓÑÀÕ ÖÅËÜÑÈß ; ; ÂÕÎÄÍÛÅ ÄÀÍÍÛÅ ; R3-ÌÀÑÊÀ ÑÊÀÍÈÐÓÅÌÎÃÎ ÄÀÒ×ÈÊÀ ; R0 - íà÷àëüíîå çíà÷åíèå ; ; ÂÛÕÎÄÍÛÅ ÄÀÍÍÛÅ ; R0 ÒÅÌÏÅÐÀÒÓÐÀ ERTEMP: .WORD 0 ; ñ÷åò÷èê êîëè÷åñòâà îøèáîê èçìåðåíèÿ LTEMP: MTPS #340 MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) MOV R5,-(SP) MOV #10.,R5 ; ÊÎËÈ×ÅÑÒÂÎ ÈÇÌÅÐÅÍÈÉ CLR 123 NEG R0 ADD #2340.,R0 MOV R0,125 ; ñîõðàíèì íà÷àëüíîå 9: CALL LTEMP0 ; ñîáñòâåííî èçìåðåíèå ; MOV #2590.,R0 ; MOV R0,LCW ; MOV 125,LCW1 ; CALL LOCTWM BR 10 123: .WORD 0 ; ÄËß ÕÐÀÍÅÍÈß ÏÐÎÌÅÆÓÒÎ×ÍÛÕ ÐÅÇ-ÒΠ125: .WORD 0 ; äëÿ õðàíåíèÿ ïðåäèäóùåãî ðåçóëüòàòà ; îòáðàêîâêà ðåçóëüòàòîâ ; åñëè ïåðâûé ïðîõîä òî îíà íå ïðîèçâîäèòñÿ 10: MOV 125,R1 CMP #2340.,R1 ; ïåðâûé ïðîõîä ? BEQ 79 ; äà CCC CMP R0,R1 ; ñðàâíèì BEQ 79 ; ñîâïàäåíèå 100% MOV R0,R2 SUB R1,R2 ;â R2 ðàçíèöó ìåæäó íîâûì è ñòàðûì CCC TST R2 BPL 11 ; åñëè ïîëîæèòåëüíàÿ NEG R2 ; åñëè îòðèöàòåëüíàÿ 11: CCC ; MOV R2,LCW ; MOV R1,LCW1 ; CALL LOCTWM CMP R2,#50. ; äîïóñòèìàÿ îøèáêà 5C BLE 79 BIC #100,@#177716 MOV 125,R0 ; ðåç-ò íå óêëàäûâàåòñÿ è ìû ; âîçüìåì ñòàðûé INC ERTEMP ;óâåëè÷èì ñ÷åò÷èê îøèáîê èçìåðåíèÿ MOV #1000,R1 13: SOB R1,13 BIS #100,@#177716 79: ADD R0,123 SOB R5,9 ; ÖÈÊË ÓÑÐÅÄÍÅÍÈß CLR R0 MOV 123,R1 DIV #10.,R0 ; ÏÎËÓ×ÈÌ ÓÑÐÅÄÍÅÍÍÛÉ ÐÅÇÓËÜÒÀÒ TST R0 BEQ 8 MOV #2340.,R2 ; 2350 - KOÐÐÅÊÒÈÐÎÂÊÀ - 2310 SUB R0,R2 MOV R2,R0 ; ïðîâåðèì óêëàäûâàåòñÿ ëè ðåçóëüòàò â ïðåäåëû ; îò -50C äî +130C BR 88 8: MOV #0,R0 ; ÇÀÒÛ×ÊÀ - ÒÅ ÍÅÒ ÐÅÇÓËÜÒÀÒÀ 88: MOV (SP)+,R5 MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 RETURN ; ñàìà ïðîöåäóðà èçìåðåíèÿ ; âõîä - R3 ñ áèòîì äàò÷èêà ; âûõîä R0 òåìïåðàòóðà LTEMP0: MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) CLR R1 CLR R2 MOV #177714,R0 ; ÐÅÃÈÑÒÐ Ñ ÄÀÒ×ÈÊÀÌÈ TMP-03 CCC 2: BIT R3,(R0) ; ÒÅÑÒÎÂÛÉ ÏÐÎÃÎÍ BNE 1 ; T1 INC R1 TST R1 BEQ 1 BR 2 1: BIT R3,(R0) ; ÏÐÎÃÎÍ T2 BEQ 3 INC R2 TST R2 BEQ 3 BR 1 3: CLR R1 4: BIT R3,(R0) ; C×ÈÒÀÅÌ T1 BNE 5 INC R1 TST R1 BEQ 5 BR 4 5: CLR R2 6: BIT R3,(R0) ; C×ÈÒÀÅÌ T2 BEQ 77 INC R2 TST R2 BEQ 77 BR 6 ; ÏÅÐÅÕÎÄß ÍÀ ÌÅÒÊÓ 77 ÌÛ ÏÎËÓ×ÈËÈ ÐÅÇÓËÜÒÀÒÛ ; R1-T1; R2-T2 ; ÏÅÐÅÑ×ÅÒ Â ÒÅÌÏÅÐÀÒÓÐÓ ÎÑÓÙÅÑÒÂËßÅÒÑß ÏÎ ÔÎÐÌÓËÅ ; C=235-(400*Ò1/Ò2) ; ÄËß ÏÎÂÛØÅÍÈß ÒÎ×ÍÎÑÒÈ - ÒÅÌÏÅÐÀÒÓÐÀ ÈÄÅÑ Ñ ÊÎÝÔÔÈÖÈÅÍÒÎÌ 10 77: MOV #160016,@#10 ; ÈÍÈÖÈÀËÈÇÈÐÓÅÌ ÀÐÈÔÌÅÒÈÊÓ MOV R2,R4 MOV R1,R0 CLR R1 MUL #4000.,R0 ; Ò1*4000 ÐÅÇÓËÜÒÀÒ Â R0R1 DIV R4,R0 ; /Ò2 ÐÅÇÓËÜÒÀÒ Â R0R1 CLR R1 MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 RETURN ; ïîäïðîãðàììà âûâîäà âîñüìåðè÷íîãî ÷èñëà èç ÿ÷åéêè ; âõîä - çíà÷åíèå â ÿ÷åéêå LCW LCW: .WORD 0 LCW1: .WORD 0 LOCTWM: MOV R0,-(SP) MOV R1,-(SP) MOV #12,R0 EMT 16 MOV LCW,R1 CALL LOCTW MOV LCW1,R1 CALL LOCTW MOV (SP)+,R1 MOV (SP)+,R0 RETURN ; ïîäïðîãðàììà âûâîäà âîñüìåðè÷íîãî ñëîâà íà ýêðàí ; âõîä - R1 LOCTW: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) CLR R0 MOV #6,R2 BR 2 1: CLR R0 ASL R1 ROL R0 ASL R1 ROL R0 2: ASL R1 ROL R0 ADD #60,R0 EMT 16 SOB R2,1 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 RETURN ; ïîäïðîãðàììà âûâîäà íà ýêðàí äåñÿòè÷íûõ ÷èñåë â âèäå NNN.N ; âõîä - R0 MD1: .WORD 1750,144,12,1 LDEC1: MTPS #340 MOV R4,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R0,-(SP) MOV R0,R3 TST R0 BPL 30 MOV #55,R0 NEG R3 BR 31 30: MOV #53,R0 31: EMT 16 MOV #60,R0 MOV #MD1,R2 MOV #3,R4 ; ×ÈÑËÎ ÇÍÀÊΠÍÀ ÝÊÐÀÍ 1: CMP R3,@R2 BMI 2 INCB R0 SUB (R2),R3 BR 1 2: EMT 16 MOV #60,R0 TST (R2)+ SOB R4,1 MOV R0,-(SP) MOV #56,R0 EMT 16 MOV (SP)+,R0 11: CMP R3,@R2 BMI 22 INCB R0 SUB (R2),R3 BR 11 22: EMT 16 MOV #60,R0 TST (R2)+ MOV (SP)+,R0 MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 RETURN ; ïîäïðîãðàììà âûâîäà íà ýêðàí äåñÿòè÷íûõ ÷èñåë â âèäå NN ; âõîä - R0 MD2: .WORD 144,12,1 LDEC2: MTPS #340 MOV R4,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R0,-(SP) MOV R0,R3 CLR R2 DIV #10.,R2 MOV R2,R3 MOV #60,R0 MOV #MD2,R2 MOV #3,R4 ; ×ÈÑËÎ ÇÍÀÊΠÍÀ ÝÊÐÀÍ 1: CMP R3,@R2 BMI 2 INCB R0 SUB (R2),R3 BR 1 2: EMT 16 MOV #60,R0 TST (R2)+ SOB R4,1 MOV (SP)+,R0 MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 RETURN ;Ìàñêà âûâîäà ïèêñåëåé â áàéò (äëÿ óâåëè÷åíèÿ ñêîðîñòè) ;èñïîëüçåòñÿ â ïîäïðîãðàììå âûâîäà öâåòíîé òî÷êè LMASKC: .BYTE 300,60,14,3 ;Màñêè ïðåîáðàçîâàíèÿ öâåòîâ ;èñïîëüçóþòñÿ â ïîäïðîãðàììå âûâîäà öâåòíîé òî÷êè LCOLOR: .BYTE 0,125,252,377 ;Ðèñîâàíèå öâåòíîé òî÷êè ;R0 - öâåò òî÷êè 0-÷åðíûé 1-çåëåíûé 2-ñèíèé 3-êðàñíûé ;R1 - êîîðäèíàòà Õ (0-377) ;R2 - êîîðäèíàòà Y (0-377) LPSETC: MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) SWAB R2 ; âû÷èñëåíèå Y-ñìåùåíèÿ ROR R2 ROR R2 ADD #40000,R2 ; äîáàâëåíèå íà÷àëüíîãî àäðåñà MOV R1,R3 ; âû÷èñëåíèå àäðåñà ìàñêè BIC #177774,R3 ASR R1 ; âû÷èñëåíèå Õ-ñìåùåíèÿ ASR R1 ADD R1,R2 ; äîáàâëåíèå Õ-ñìåùåíèÿ MOV #LMASKC,R1 ADD R3,R1 MOVB (R1),R1 BICB R1,(R2) ; ñòèðàíèå òî÷êè MOV #LCOLOR,R3 ; âûáîð öâåòà ADD R0,R3 MOVB (R3),R3 COMB R1 ; îáðàç öâåòíîé ìàñêè BICB R1,R3 BISB R3,(R2) ; âûâîä òî÷êè MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 RETURN ; ïîäïðîãðàììà ïðîçðà÷íîãî çâóêà ; âõîä R0-òîí R1-äëèòåëüíîñòü ; îãðàíè÷åíèé íà ïàðàìåòðû íåò LSOUND: MOV R5,-(SP) MOV R4,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) ; ñîõðàíèòü òîí MOV #177716,R5 ; ðåãèñòð çâóêà MOV #100,R3 ; ìàñêà çâóêà MOV #1,R4 ; R4 äëèòåëüíîñòü "1" 0: BIS R3,(R5) ; "1" MOV R4,R2 1: SOB R4,1 MOV R2,R4 INC R4 ; óâåëè÷åíèå äëèòåëüíîñòè "1" TST R0 BIC R3,(R5) ; "0" MOV R0,R2 2: SOB R0,2 MOV R2,R0 DEC R0 ; óìåíüøåíèå äëèòåëüíîñòè "0" TST R0 BEQ 4 ; íà÷àëüíàÿ óñòàíîâêà 3: SOB R1,0 ; öèêë ïî äëèòåëüíîñòè 99: MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 MOV (SP)+,R5 RETURN 4: MOV (SP),R4 MOV #1,R0 00: BIS R3,(R5) MOV R4,R2 11: SOB R4,11 MOV R2,R4 DEC R4 TST R4 BEQ 44 BIC R3,(R5) MOV R0,R2 22: SOB R0,22 MOV R2,R0 INC R0 TST R0 SOB R1,00 BR 99 44: MOV (SP),R0 MOV #2,R4 BR 0 .END