; ************************************************ ; * * ; * д п ю и б е п л ю ц м х р н т н м ю * ; * * ; ************************************************ ; ====================== ; *** йнмярюмрш DMAG *** ; ====================== ASPORT = 177716 ;- юдпея яхярелмнцн онпрю APSTOP = 4 ;- юдпея оепеундю он "ярно" KDBIT0 = 100 ;- дкхмю ахрю мю гюохяэ KDBIT1 = 400 ; DRAZBR = 4 ;- дхюоюгнм пюгапняю м.о. KPUSK = 20 ;- йнмя. осяй KSTOP = 220 ;- йнмя. ярно KBIT00 = 20 ;- йнмя. -0 KBIT10 = 60 ;- йнмя. -1 KBIT01 = 160 ;- йнмя. +0 KBIT11 = 120 ;- йнмя. +1 ; ================================== ; ***** лндскэ сопюбкемхъ DMAG ***** ; ================================== ; бунд: R1 - юдпея акнйю оюпюлерпнб ; R3 - юдпея онпрю MDMAG: JSR R4,PSREG MOV R1,ABP ; ондц. оюпюл MOV #ASPORT,R3 CLRB PROH CLR PRFCT MOV @#APSTOP,-(SP) ; ондц. бшу. он "ярно" MOV #AWDMAG,@#APSTOP MOV SP,BUFSP MOVB (R1),R0 ; юмюкхг йнлюмдш BNE 1$ ;- ярно MOV #KSTOP,(R3) BR KMDMAG 1$: DEC R0 ;- осяй BNE 2$ MOV #KPUSK,(R3) BR KMDMAG 2$: DEC R0 ;- гюохяэ люяяхбю BNE 3$ JSR PC,BZMAS BR KMDMAG 3$: DEC R0 ;- времхе люяяхбю BNE 4$ 5$: JSR PC,BCTMAS BR KMDMAG 4$: INC PRFCT ;- тхйрхбмне времхе люяяхбю DEC R0 BEQ 5$ MOV #KDBIT0,DLBIT0 ;- сярюмнбйю яйнпнярх гюохях MOV #KDBIT1,DLBIT1 BR 6$ 7$: ASR DLBIT0 ASR DLBIT1 6$: SOB R0,7$ BR KMDMAG AWDMAG: MOV BUFSP,SP ; юбюпхимши бшунд хг DMAG MOVB #4,PROH MOV #KSTOP,(R3) ;- нярюмнб дбхцюрекъ KMDMAG: MOV ABP,R1 ; бшунд MOVB PROH,1(R1) MOV (SP)+,@#APSTOP JSR R4,PWREG RTS PC ; ============================== ; *** 1. акнй гюохях люяяхбю *** ; ============================== ; бунд: R1 - юдпея акнйю оюпюлерпнб BZMAS: MOV #KPUSK,(R3) ; осяй дбхцюрекъ MOV 2(R1),R5 ; ондявер йнмрпнкэмни ясллш MOV 4(R1),R4 BEQ 1$ CLR R0 2$: CLR R2 BISB (R5)+,R2 ADD R2,R0 ADC R0 SOB R4,2$ MOV R0,BUFKS MOV #11,R4 ; гюохяэ мюярпневмни онякеднбюрекэмнярх MOV #10000,R0 BR 3$ 4$: MOV R4,R0 3$: JSR PC,PZNP SOB R4,4$ MOV (R1)+,R0 ; гюохяэ хлемх MOV #24,R2 JSR PC,PZBL MOV ABP,R1 ; гюохяэ люяяхбю MOV 4(R1),R2 MOV 2(R1),R1 JSR PC,PZBL MOV #BUFKS,R1 ; гюохяэ KS MOV #10,R2 JSR PC,PZBL 1$: MOV #KSTOP,(R3) ;- нярюмнб дбхцюрекъ RTS PC ; ------------------------------------------------ ; ** 1.1. гюохяэ мюярпневмни онякеднбюрекэмнярх ** ; ------------------------------------------------ ; бунд: R0 - явервхй мскебшу хлоскэянб ; бшунд: C = 0 ; R0,R5 - пюанвхе PZNP: BCS 1$ 2$: JSR PC,PZ0P ; гюохяэ 0 б жхйке 1$: JSR PC,PZ0M SOB R0,2$ JSR PC,PZ1P ; гюохяэ люпйепю(+1,-1) JSR PC,PZ1M RTS PC ; ----------------------- ; ** 1.2. гюохяэ акнйю ** ; ----------------------- ; бунд: R1 - юдпея акнйю ; R2 - дкхмю акнйю ; R0 - R2,R4,R5 - пюанвхе PZBL: MOV #20,R0 ; гюохяэ аст. онякед. JSR PC,PZNP PZBL1: BISB (R1)+,R0 ;- ондцнрнбйю аюирю MOV #10,R4 PZB: BCS PZMBIT ; гюохяэ аюирю ASR R0 BCS 1$ JSR PC,PZ0P ;- гюохяэ +0 BR KZB 1$: JSR PC,PZ1P ;- гюохяэ +1 BR KZB PZMBIT: ASR R0 BCS 1$ JSR PC,PZ0M ;- гюохяэ -0 BR KZB 1$: JSR PC,PZ1M ;- гюохяэ -1 BR KZB KZB: SOB R4,PZB ; йнмеж гюохях аюирю KZBL: SOB R2,PZBL1 ; йнмеж гюохях акнйю RTS PC ; ---------------------- ; ** 1.3. гюохяэ ахрю ** ; ---------------------- PZ0P: MOV #KBIT01,(R3) ; гюохяэ +0 MOV DLBIT0,R5 1$: SOB R5,1$ SEC RTS PC PZ0M: MOV #KBIT00,(R3) ; гюохяэ -0 MOV DLBIT0,R5 1$: SOB R5,1$ CLC RTS PC PZ1P: MOV #KBIT11,(R3) ; гюохяэ +1 MOV DLBIT1,R5 1$: SOB R5,1$ SEC RTS PC PZ1M: MOV #KBIT10,(R3) ; гюохяэ -1 MOV DLBIT1,R5 1$: SOB R5,1$ CLC RTS PC ; ============================== ; *** 2. акнй времхъ люяяхбю *** ; ============================== ; R0 - R5 - пюанвхе ; R5 - люяйю хмтнплюжхнммнцн пюгпъдю BCTMAS: MOV #40,R5 ; ондц.оюпюл. х осяй дбхцюрекъ MOV #KPUSK,(R3) MOV #1,INCADR CLR PROH JSR PC,PPNF ; онхяй мювюкю тюикю JSR PC,PCTIM ; времхе IMMAS TSTB PROH BNE KCTMAS JSR PC,PCTMAS ; времхе акнйю хмтнплюжхх MOV #KSTOP,(R3) KCTMAS: RTS PC ; ----------------------------- ; ** 2.1. онхяй мювюкю тюикю ** ; ----------------------------- PPNF: MOV #2000,R2 ; онхяй мскеи CLR R0 4$: CLR R4 ;- времхе хлоскэяю 1$: BIT R5,(R3) BEQ 1$ 2$: INC R4 BIT R5,(R3) BNE 2$ SUB R4,R0 ; нопедекемхе пюгапняю BMI 3$ CMP R0,#DRAZBR BHI PPNF 3$: MOV R4,R0 SOB R2,4$ CLR R0 ; мюярпнийю мю яйнпнярэ MOV #100,R2 5$: JSR PC,PCTBIT ;- явер хлоскэянб ADD R4,R0 SOB R2,5$ MOV #5,R2 ;- бшвхякемхе цпюмхжш 0 6$: ASR R0 SOB R2,6$ ADD #4,R0 MOV R0,GRDL0 JSR PC,PPM ; опнбепйю йкчвю MOV #20,R0 11$: MOV R0,R2 10$: JSR PC,PCTBIT BCS PPNF SOB R2,10$ JSR PC,PCTBIT BCC PPNF JSR PC,PCTBIT BCC PPNF DEC R0 SOB R0,11$ RTS PC ; ------------------------------- ; ** 2.2. времхе хлемх люяяхбю ** ; ------------------------------- PCTIM: MOV ABP,R1 ; времхе хлемх ADD #26,R1 MOV #24,R2 JSR PC,PCTBL MOV #10,R2 2$: CMP -(R1),-24(R1) ; япюбмемхе хлем BNE 1$ SOB R2,2$ MOV -(R1),BUFDL ;- сяр. дкхмш люяяхбю MOV -26(R1),BUFSTA ;- сяр. ярюпр. юдпеяю BNE KCTIM MOV -(R1),BUFSTA BR KCTIM 1$: INCB PROH KCTIM: RTS PC ; ------------------------- ; ** 2.3. времхе люяяхбю ** ; ------------------------- PCTMAS: MOV BUFSTA,R1 ; времхе люяяхбю MOV BUFDL,R2 SUB PRFCT,INCADR BNE 1$ MOV #BUFKS,R1 ;- тхйрхбмне времхе 1$: JSR PC,PCTBL MOV R0,-(SP) MOV #BUFKS,R1 ; времхе KS MOV #2,R2 MOV #1,INCADR JSR PC,PCTBL CMP (SP)+,BUFKS ; япюбмемхе KS BEQ KCTM MOVB #2,PROH KCTM: RTS PC ; ----------------------- ; ** 2.4. времхе акнйю ** ; ----------------------- ; бунд: R1 - юдпея нгс ; R2 - дкхмю акнйю ; бшунд: R0 - йнмрпнкэмюъ ясллю PCTBL: JSR PC,PPM ; онхяй люпйепю CLR -(SP) 2$: MOV #10,R0 ; времхе акнйю 1$: JSR PC,PCTBIT ; времхе аюирю RORB (R1) SOB R0,1$ BISB (R1),R0 ;- ондявер KS ADD R0,(SP) ADC (SP) ADD INCADR,R1 ;- хглемемхе юдпеяю SOB R2,2$ MOV (SP)+,R0 KCTBL: RTS PC ; ---------------------- ; ** 2.5. времхе ахрю ** ; ---------------------- ; бшунд: C = 0 - 0 ахр ; C = 1 - 1 ахр ; R4 - пюанвхи PCTBIT: CLR R4 ; явервхй дкхмш ахрю BIT R5,(R3) BEQ 1$ 2$: INC R4 ; + BIT R5,(R3) BNE 2$ BR 3$ 1$: INC R4 ; - BIT R5,(R3) BEQ 1$ 3$: CMP GRDL0,R4 ;- сярюмнбйю ахрю C RTS PC ; ------------------------ ; ** 2.6. онхяй люпйепю ** ; ------------------------ ; R4 - пюанвхи PPM: JSR PC,PCTBIT BCC PPM JSR PC,PCTBIT BCC PPM RTS PC ; ********************************************** ; * * ; * д п ю и б е п р к ц - й ю м ю к ю * ; * * ; ********************************************** ; ====================== ; *** йнмярюмрш DTLG *** ; ====================== ASPORT = 177716 ;- юдпея яхярелмнцн онпрю KTLG0 = 200 ;- йнмя. сярюмнбйх 0 KTLG1 = 220 ;- йнмя. сярюмнбйх 1 ; ===================================== ; ***** лндскэ хмхжхюкхгюжхх DTLG ***** ; ===================================== ; бунд: R0 - мнлеп гмювемхъ яйнпнярх MIDTLG: ASL R0 MOV KDLBIT(R0),DLBIT RTS PC ; ================================= ; ***** лндскэ оепедювх аюирю ***** ; ================================= ; бунд: R0 - лк. аюир MPDBYT: ; =========================== ; *** акнй оепедювх аюирю *** ; =========================== BPDB: MOV R0,-(SP) MOV R4,-(SP) BIS #1400,R0 ; ондц. оюпюлерпнб MOV #13,R4 6$: BIT #200,@#ASPORT ; нф. цнрнбмнярх BEQ 6$ CLC ; сярюмнбйю ахрю BR 1$ 4$: ASR R0 1$: BCC 2$ MOV #KTLG1,@#ASPORT BR 3$ 2$: MOV #KTLG0,@#ASPORT BR 3$ 3$: MOV DLBIT,R5 ; жхйк оепедювх ахрю 5$: SOB R5,5$ SOB R4,4$ MOV (SP)+,R4 MOV (SP)+,R0 RTS PC ; =============================== ; ***** лндскэ опхелю аюирю ***** ; =============================== ; бшунд: R0 - лк. аюир MPRBYT: ; ========================= ; *** акнй опхелю аюирю *** ; ========================= BPRB: MTPS #0 ;- пюгпеьемхе опепшбюмхи MOV R3,-(SP) MOV R4,-(SP) MOV #ASPORT,R3 ; ондц. оюпюл. MOV #20,R4 ;- явервхй аюирю CLR R0 1$: BIT R4,(R3) ; онхяй ярюпрнбнцн ахрю BEQ 1$ 11$: MOV #260,(R3) ;- сяр. цнрнбм. опхелю BIT R4,(R3) BNE 11$ MTPS #200 ;- гюопер опепшбюмхи MOV DLBIT,R5 ; онхяй яепед. яр. ахрю ASR R5 2$: SOB R5,2$ ASR R4 6$: MOV DLBIT,R5 ;- времхе аюирю 3$: SOB R5,3$ BIT #20,(R3) BNE 4$ CLC BR 5$ 4$: SEC BR 5$ 5$: RORB R0 SOB R4,6$ MOV #220,(R3) ;- яапня цнрнбм. опхелю MOV (SP)+,R4 MOV (SP)+,R3 RTS PC ; =================================== ; ***** лндскэ оепедювх люяяхбю ***** ; =================================== ; бунд: R1 - юдпея люяяхбю ; R2 - дкхмю люяяхбю б аюирюу MPDMAS: MOV R0,-(SP) 1$: MOVB (R1)+,R0 ; оепедювю люяяхбю JSR PC,BPDB SOB R2,1$ MOV (SP)+,R0 RTS PC ; ================================= ; ***** лндскэ опхелю люяяхбю ***** ; ================================= ; бунд: R1 - юдпея оюлърх дкъ люяяхбю ; R2 - дкхмю люяяхбю б аюирюу MPRMAS: MOV R0,-(SP) 1$: JSR PC,BPRB ; опхел люяяхбю MOVB R0,(R1)+ SOB R2,1$ MOV (SP)+,R0 RTS PC ; =================== ; *** дюммше DTLG *** ; =================== KDLBIT: ; йнмярюмрш дкхмш ахрю DL9600: .WORD 14 DL4800: .WORD 36 DL2400: .WORD 103 DL1200: .WORD 213 DL600: .WORD 435 DL300: .WORD 1100 DL200: .WORD 1542 DL150: .WORD 2206 DL110: .WORD 3300 DL75: .WORD 4422 DL50: .WORD 6633 ; ================================ ; ***** акнй оепелеммшу DMBK ***** ; ================================ .ASECT ; =============================== ; *** яхярелмше опхгмюйх DMBK *** ; =============================== . = 40 SYSPR: PRCW: .BYTE 0 ;- опхгмюй жбермнцн пефхлю PRINWF: .BYTE 0 ;- опхгмюй хмбепяхх тнмю PRRP: .BYTE 0 ;- опхгмюй пюяьхпеммни оюлърх PRRUS: .BYTE 0 ;- опхгмюй псяяйнцн пецхярпю PRPODC: .BYTE 0 ;- опхгмюй ондвепйхбюмхъ яхлбнкю PRINWS: .BYTE 0 ;- опхгмюй хмбепяхх яхлбнкю PRISU: .BYTE 0 ;- опхгмюй хмдхйюжхх яс PRBLR: .BYTE 0 ;- опхгмюй акнйхпнбйх педюйрхпнбюмхъ PRGRAF: .BYTE 0 ;- опхгмюй цпютхвеяйнцн пефхлю PRZAP: .BYTE 0 ;- опхгмюй пефхлю гюохях PRSTIR: .BYTE 0 ;- опхгмюй пефхлю ярхпюмхъ PRCWSS: .BYTE 0 ;- опхгмюй жбермнцн пефхлю б яя PRPSSS: .BYTE 0 ;- опхгмюй ондвепйхбюмхъ яхлбнкю б яя PRISSS: .BYTE 0 ;- опхгмюй хмбепяхх яхлбнкю б яя PRGAHK: .BYTE 0 ;- опхгмюй цюьемхъ йспянпю ; ======================== ; *** оепелеммше DKLAW *** ; ======================== . = 100 WPTM: .WORD 0 ;- бейрнп опепшбюмхъ рюилепю SSPTM: .WORD 0 ;- якнбн янярнъмхъ опж BUFKL: .BYTE 0 ;- астеп йкюбхюрспш PRZKB: .BYTE 0 ;- опхгмюй гюохях йндю б астеп BKPOWT: .WORD 0 ;- астеп йнмярюмрш онбрнпю PRPOWT: .BYTE 0 ;- опхгмюй онбрнпю йндю SCTAB: .BYTE 0 ;- явервхй рюаскъжхх MTAB: .BLKW 4 ;- люяйю рюаскъжхх SCKLC: .BYTE 0 ;- явервхй йкчвю .EVEN TAKLC: .WORD 0 ;- рейсыхи юдпея йкчвю AKLC: .BLKW 12 ; юдпеяю йкчвеи ; ======================== ; *** оепелеммше DTVMN *** ; ======================== PRNRUL: .BYTE 0 ;- опхгмюй мюпсьемхъ пскнмю PRZTCK: .BYTE 0 ;- опхгмюй гюохях рнвйх MASPGT: .BYTE 0 ;- люяйю онгхжхх цр NMPGT: .BYTE 0 ;- мювюкэмюъ люяйю онгхжхх цр NOMSIM: .WORD 0 ;- мнлеп яхлбнкю мю щйпюме AS: .WORD 0 ;- юдпея яхлбнкю DSIMB: .WORD 0 ;- дкхмю яхлбнкю б аюирюу KSVP: .WORD 0 ;- йнкхвеярбн яхлбнкнб мю щйпюме AGTVP: .WORD 0 ;- юдпея цр мю щйпюме AGT: .WORD 0 ;- юдпея цр DGW: .WORD 0 ;- дкхмю цпютхвеяйнцн бейрнпю SCTVS: .WORD 0 ;- явервхй TV-ярпнй BUFX: .WORD 0 ;- астеп йннпдхмюрш X BUFY: .WORD 0 ;- астеп йннпдхмюрш Y ANVP: .WORD 0 ;- юдпея мювюкю бхденоюлърх BAZVP: .WORD 0 ;- аюгю бхденоюлърх DVPB: .WORD 0 ;- дкхмю бхденоюлърх б аюирюу DGPB: .WORD 0 ;- дкхмю цпют. оюлърх б аюирюу FON: .WORD 0 ;- тнм щйпюмю MASCW: .WORD 0 ;- люяйю жберю FONSS: .WORD 0 ;- тнм яя MCWSS: .WORD 0 ;- люяйю жберю яя SCKOD: .WORD 0 ;- явервхй йнднб SCUIND: .WORD 0 ;- явервхй сярюмнбйх хмдхйюрнпнб ; ======================= ; *** оепелеммше DMAG *** ; ======================= . = 300 PROH: .BYTE 0 ;- опхгмюй ньхайх .EVEN PRFCT: .WORD 0 ;- опхгмюй тхйрхбмнцн времхъ INCADR: .WORD 0 ;- хмйпелемр юдпеяю люяяхбю ABP: .WORD 0 ;- юдпея акнйю оюпюлерпнб BUFSP: .WORD 0 ;- астеп сйюгюрекъ ярейю BUFKS: .WORD 0 ;- астеп йнмрпнкэмни ясллш GRDL0: .WORD 0 ;- цпюмхжю дкхмш 0 . = 320 BPDMAG: ; акнй оюпюлерпнб DMAG KOM: .BYTE 0 ;- йнлюмдю OTWET: .BYTE 0 ;- нрбер ADRMAS: .WORD 0 ;- юдпея люяяхбю DLMAS: .WORD 0 ;- дкхмю люяяхбю мю гюохяэ IMMAS: .BLKB 20 ;- хлъ люяяхбю ADRTM: .WORD 0 ;- юдпея рейсыецн люяяхбю DLTMAS: .WORD 0 ;- дкхмю рейсыецн люяяхбю IMTMAS: .BLKB 20 ;- хлъ рейсыецн люяяхбю ; ================================= ; *** яхярелмше оепелеммше DMBK *** ; ================================= . = 250 DLBIT0: .WORD 0 ;- дкхмю 0 DMAG DLBIT1: .WORD 0 ;- дкхмю 1 DMAG DLBIT: .WORD 0 ;- дкхмю ахрю DTLG KPORT: .WORD 0 ;- йнохъ онпрю APOPKL: .WORD 0 ;- юдп.опнцп.нап.опеп.нр йкюб. PRWK: .WORD 0 ;- опхгмюй йндю бй BUFSTA: .WORD 0 ;- астеп ярюпрнбнцн юдпеяю BUFDL: .WORD 0 ;- астеп дкхмш люяяхбю .END