InpG_6: ds 1 ;
Geton_6: ds 1 ;
FE1_6: ds 1 ;
FE2_6: ds 1 ;
TrCount_6: ds 2 ;
NULL_6: ds 1
Mode_7: ds 1 ; режим турникета 7
InpG_7: ds 1 ;
Geton_7: ds 1 ;
FE1_7: ds 1 ;
FE2_7: ds 1 ;
TrCount_7: ds 2 ;
NULL_7: ds 1
Mode_8: ds 1 ; режим турникета 8
InpG_8: ds 1 ;
Geton_8: ds 1 ;
FE1_8: ds 1 ;
FE2_8: ds 1 ;
TrCount_8: ds 2 ;
NULL_8: ds 1
TempBuf: ; временный буфер
Mode_t: ds 1
InpG_t: ds 1
Geton_t: ds 1
FE1_t: ds 1
FE2_t: ds 1
TrCount_t: ds 2
NULL_t: ds 1
Mirror1 ds 1
Mirror2 ds 1
Mirror3 ds 1
Mirror4 ds 1
Counter ds 3 ; 24-битный 2-10 счетчик людей
;---------------------------------; Семисегментный знакогенератор
;---------------------------------org ROMend-0Fh ; в конце ПЗУ
; hgfedcba
ZNAKOGEN: db 00111111b ; 0 +-A-+
db 00000110b ; 1 F B
db 01011011b ; 2 +-G-¦
db 01001111b ; 3 E C
db 01100110b ; 4 +-D-+ H
db 01101101b ; 5
db 01111101b ; 6
db 00000111b ; 7
db 01111111b ; 8
db 01101111b ; 9
db 00110111b ; A
db 01111100b ; b
db 00111001b ; C
db 01011110b ; d
db 01111001b ; E
db 01110001b ; F
;---------------------------------; Старт программы
;---------------------------------org 0000h
ZERO: di ; запрет прерываний
JMP START ; на инициализацию
;---------------------------------org 002Ch
RST55: RET
;---------------------------------org 0034h
RST65: JMP TURNIKET ; на сканирование турникетов
org 003Ch
;---------------------------------; RST7.5 - обработчик водеопрерывания с коррекцией
; аварийной ситуации, если пропадет бегущая единица
; в DispCol (например, при старте системы)
; длина 35 байт, около 110 тактов
;---------------------------------RST75: push psw ; Обработчик ВИДЕО прер - дин. индик.
push h ; сохраним изменяемые регитры
lhld DispPtr ; спозиц. на VRAM
xra a
out IndCol ; выкл. все
mov a,M ; образ из VRAM по адр. из HL
out IndSegs ; в регистр сегментов
lda DispCol ;
out IndCol ; Вкл нужный индикатор
ora a ; проверим чтоб что-то было,
JZ DispInit ; дабы не погаснуть навсегда.
rrc ; передвинем единицу к мл. индикатору
JNC NextSym ; если 1 не вытеснилась
DispInit: mvi a,00100000b ; старший шестой инд. (если 1 вытес.)
lxi h,DispRAM+6 ; указатель - за последний элемент VRAM
NextSym: dcx h ; указатель - на соседнюю мл. ячейку
shld DispPtr ; сохраним указаиель
sta DispCol ; сохр. позицию для след. индикации
pop h
pop psw ; восст. изменяемые регистры
ei ; разрешим прерывания
RET ; все. возврат.
org 0100h
;---------------------------------;***********START PROGRAM**********
;---------------------------------START: lxi sp,RAMend ; уст. указателя стека на конец ОЗУ
mvi a,0h ; (A) <- 00
out Pout1 ; выкл все выходы
out Pout2 ; выкл все выходы
out Pout3 ; выкл все выходы
out Pout4 ; выкл все выходы
out IndSegs ; погасить
out IndCol ; индикаторы
lxi h,Counter
mov M,a
inx h
mov M,a
inx h
mov M,a ; обнулим счетчик людей
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.