 9
                            Taep  .

                    1. caoa  ee aepa.

   Bce IBM  PC  co  pocxe  aepa  8253  (  8254)  
coacoa co o  pocxe  ccex  aco.  co  横o
ccex  aco  peopaec  o c,  a oceoa- eoc
x co ocaec  opeee pee,    o  o
   oca  a  poooope  oepa    eepa樨  a
opeeeo aco.  Mpocxea 8253 ee p ex eacx
aaa, a  oopx oe popapoac.
   Mpocxea 8253  paoae  eaco   o   poeccopa.   poeccop
popape  pocxe    ae  opaaec   p㣨 ea.  Ta
opao 8253 ece a ac peaoo pee -  oa  cae  co
c  eaco  o  oo,  o  pocxo  oepe.  Oao,
aca popape epa  cocae  peo  1/12
ce㭤.  ocea epao pee  ac   㦭 ae-o
p㣨e cpeca.  eo o o p稭e c  o  eoo  aaa
pocxe  aepa  aaac  epeeo,  axoec  oac
ax BIOS.  o poecc oa- a a pc. 2-1. o aoee oo
aaec oceo pe- e co.  18.2 paa  ce㭤 xo aaa
0 opaaaec aapa pepae (pepae aepa),  oopoe
eaoo  ocaaae poeccop  e稢ae ce稪 pee co.
co 0 cooece oo 12:00;  oa ce稪 oc⨣ae  ae
aeoo  24  aca,  o  cpacaec  a  o.  poe pe 
eee co eo opeeec eee oaae ce稪a  a  18.2
 ao ce㭤.  Ce稪 pee co c- oec  o設ce
oepa権, cax co peee.

           2. popapoae pocxe aepa 8253/8254.

   Ka  pex aao pocxe aepa 8253 (8254  AT) coco
   pex   pecpo.   oc    ao  p㯯e    pex  pecpo
ocec⢫ec  epe  o  op;  oepa  opo  o   40H   o   42H
cooec   aaa  0  -  2.  op  ca  c  8-  pecpo
oa/oa,  oop ocae  pae ae  oo aa-  a.
Koa aa apopapoa, o epe o op ocaec xaoe
aee,  a訩 a  caaa.  o  co  epeaec    16-
pecp  a  (latch  register),  oop  xpa  o  co  
oopoo o oeaec   16-  pecp  ce稪a.  B  pecpe
ce稪a  co  eaec  a  e a pa,  oa c o
ccex aco pocaec epe aa.  Koa aee  oo  ca
oc⨣ae  ,  o  aa  ae xoo ca  ae oa o
coepoo pecpa a epeaec  pecp  ce稪a,  oce
eo  poecc  oopec.  e ee co  pecpe ce稪a,  e
cpee p.  Bce p aa- a cea a⨢: poeccop e ae 
e  몫ae  x.  Teee aee oo  pecpo ce稪a oe
 poao  o oe pee, e  a ce.
   Ka aa ee e xoe  o xo . Bxoa 
o c,  oae  peae ocea. Haa- ee x
cao appec  acoc o ⨯a IBM PC:
   Kaa 0 coec  cce묨  aca  pee  co.  O  ca-
aaec BIOS p cape a opao,  o ae c p-
eo 18.2 paa  ce㭤. 4-a ce稪 x co xpac
  a o apec 0040:006C (a訩 a xpa- c ep).  Ka
c  樨pe  pepae  aepa  (o-  ep  8)    eo  o
pepae  e稢ae oaae ce稪a.  o aapaoe pepae,
oo oo  opaaaec  cea,  eaco  o  oo,  e  a

                                     - 2 -
poeccop,  ec oo papee aapae pepa (c. oc㦤ee
  [1.2.2]).  Bxoa    coec  ae     cxpoa樨
eoopx cox oepa権,  oo ec B e ee aee,  o
Ba eoxoo occao-  epoaaoe aee epe  opaee
 c.
   Kaa 1  pae  ooee a oo eo e e poa.
Bxoa  oo aaacaa  c  pocxeo  poo  oca  
a    ee  c  acae  pocxe DMA oo c a.
Kaa 1  coec    ocea  aopoax  co  aco
pee co,  c e o oo o oo aee ce稪a oce
aepe cox oepa権.
   Kaa 2  ca  c  poooopee  oepa    o  poo
poce pooe c  eepa樨 a.  popac e
o訩 opo a op aao,  e a oca묨. poce 㪨
o eeppoac oopeeo c p㣨 popa묨 oepaﬨ,  a
oee  coe  oe  e  o     oc⨣   a   ce
cooa   poeccopa.   Kaa   2   oe      ocoee  o
poooope    cooac    cxpoa-   樨.   Haoe,
xoa  aaa 2 caa c ao oepa.  Oao a
e e eeppoa  o ex  op  oa  e  cea  opeeee
cao pocxe epeca c epe- pe 8255.
   e xoe   aoo aaa coco   aco, oopa
epeae  ca  o  pocxe  ccex  aco  ,  aaeo
opoa (gate),  oopa ae  몫ae ca o aco.  Bopoa
cea  op  cao aco o aaa 0  1.  Ho o o 
ap묨  aaa 2, o ooe eo- ope ceae a-
樨  co  o.  Bopoa apac ca- oo aeo a opa c
apeco 61H,  oop ec pe- cpo pocxe 8255; cpoc oo
a  coa  opae  opoa.  a  pocxea oc㦤aec  [1.1.1].
Oe⨬ o - a  xo aaa 2 -  1 opa 61H ca c ao
  ae  oe  c-  ooac    eepa樨  a.  Ha pc.  2-2
peea apaa pocxe aepa 8253.
   Mpocxea aepa    oe   cooac   eocpeceo   
peex  oepa権,  o  o  peo  ae  o.  Bo  c   aco
pooc 1.19318 oo pa  ce㭤 (ae a AT, e ccee
ac  cpee,  pocxea aepa oae ca c acoo  1.19
M). oco acaoe co, oopoe oe xpac  16 ax,
pao 65535  oco o  co  ec  a  aco  co  o
aco, pa 18.2, o aca oo epa e ca
pae  peo  1/12  ce㭤.  oo  o設co   peex
oepa権  co  ce稪 pee co BIOS.   ocea pee
aec aee pee-  co    cpaaec  c  eoop  paee
aoe aee  opeee ca co, poex c oo
oea.  Ce- a coco ooe  cooa  ce稪  pee
co  oepa権  peao pee.
   8253 peocae papao稪a oopoa 6 peo  pao  
aoo aaa. popac oo opa稢ac pe쨬 peo, a
 aaa 0 p cxpoa樨,  a   aaa 2    cxpoa樨
  eepa樨  a.  B  o  pee,  a  oo  pecp a
oae co, o eeeo apae o  pecp ce稪a. Koa
aee    ce稪e  oc⨣ae    pe-  cp  a  oeo
epeapae ce稪  ..  B eee oo ocea xoa 
ea,  a    eee oo - 몫ea.  B peae oac
pooe o,  oope  oaoo  po  a    eepa樨
a, a   ocea.
   8- oa  pecp  pae  cocoo  ap㧪  ce  
aa.  Apec opa  oo pecpa pae 43H. Koao pe- cp
epeaec a, oop oop ao aa popapo- a,  ao
pee,  a  ae  o    oa  aa  pecpa a o 

                                     - 3 -
epea.  O oaae ae  e    co    oo    BCD
(ooopoao  eco) ope.  aee o oo pecpa
aoo:
      0    ec 0, oe ae, ae BCD
       3-1    oep pea, 1 - 5 (000 - 101)
       5-4    ⨯ oepa樨:
                00 = epea aee ce稪a  a
                01 = a/ca oo cap訩 a
                10 = a/ca oo a訩 a
                11 = a/ca cap訩 a, oo a訩
       7-6    oep popapeoo aaa, 0 - 2 (00 -10)

    popapoa pocxe 8253  ao  o  p  ocox
aa.  oce  oo  a pe⨩ a aepe,  apopapoa aa
eeeo a稭ae 㭪opoa o oo popae.
   1. oca    oa pecp (43H) a,  peca騩 eo
o,  oope 롨pa aa,  cac e/ac, pe oepa樨 
op pecae ce.
   2.  aaa 2 ao pape ca o aco,  cao  1  0
opa  c  apeco 61H.  (Koa  1 oo pecpa caoe  1,  o
aa  2  pae  ao.  Cpoce  eo    0    oepa-   権
cxpoa樨.)
   3. Bce aee ce稪a o 0 o 65535,  oece eo  AX, 
o諨e  caaa  a訩,  a ae cap訩 a  pecp oa/oa
aaa (40H - 42H).
   Kaa pocxe  8253  paoa cea.  o o p稭e popa
cea o occaaa aae cao pecpo 8253  epe
aepee.  B  acoc,  ec p aepe popa eeppec
,  o o e pooac ae oce oo,  a  MS  DOS  o
paee  ap㧨 p popa.  ee o  p aca
poep xoa o Ctrl-Break [3.2.8].

   H poe.

   B ao pepe aa 0 popapec  a  poe  aee,  e
caoeo BIOS p cape. p稭a ee cao coco  o,
o e epa ee ce稪a  pee  co  a  o
e稭,   e  18.2  paa    ce㭤.  acoa  ooe  ce稪a
eec,  cae,  a 1000 pa  ce㭤,  c e poee ox
aopaopx  epe.  aee  a  oo  1193 (1193180
ao   ce㭤  /  10000).  Ka  a  eee  aee  pecpa
ce稪a c.  pepe [2.1.8]. epe co묨 oepaﬨ opaoe
aee a oo  occaoeo,  oco aa 0 co-
ec    cxpoa樨  cox  oepa権.  Macao  oooe
aee - 65535 ao aco e ca o aaa -  oe  
oc⨣o  ac뫪o  0  pecp a (0 eeeo pepaaec 
65535 p ee a e.
;---caoa pecpo  oa/oa
             COMMAND_REG EQU 43H   ;apec oaoo pecpa
             CHANNEL_0 EQU 40H     ;apec aaa 0
             MOV   AL,00110110B   ;caoa o  aaa 2
             OUT   COMMAND_REG,AL ;ac뫪a  oa pecp
;---oc뫪a ce稪a  a
             MOV   AX,1193     ;ce稪  100 co/ce.
             OUT   CHANNEL_2,AL   ;oc뫪a aeo aa
             MOV   AL,AH       ;oo  oc뫪 cap訩 a
             OUT   CHANNEL_2,AL   ;oc뫪a capeo aa

                     3. caoa/ee pee.

                                     - 4 -

   p cape  MS  DOS  apa訢ae    ooae   eee   pe.
Beeoe aee oeaec  4 aa, xpae ce稪 pee co
(a稭a c 0040:006C,  a訩 a xpac ep).  Ho  caaa  oo
peopaec  op,  oopo ocaec pe co, .e. pe
peopaec   co  oceaax  oe  ce-  㭤,  poex  c
oo. o co ocoﭭo ooec 18.2 pa  ce㭤 pepae
aepa.  Koa  oec  oepeo  apoc  a  pe,  o  eee
aee  ce稪a  pee  co  peopaec  opao   p
opa ac--ce㭤.  Ec p cape e o eeo  ae,
o ce稪 caaaec  o, a o ceac oo. Koep
caee    pocxeo    aeap-aco    o     aoaec
caaa ce稪 pee co.

   Cpe poe.

   MS DOS  peocae  pepa   e  cao pee- ,
poo eoxoe peopaoa e aee  ce稪a  pee
co  aca-a-ce㭤a.  Bpe aec c ooc o 1/100
ce㭤,  o oco ce稪 pee co ooec c  acoo  
 pa ee, o oaa cox ce- 㭤 oe pee. 㭪-
 2CH pepa 21H ae pe, a 㭪 2DH - caaae eo.
B  oox  cax  CH  coep  ac (o 0 o 23,  e 0 cooece
oo),  CL -  (o 0 o 59),  DH - ce㭤 (o 0 o 59)  DL  -
coe o ce㭤 (o 0 o 99).
   Kpoe oo p oe pee 㭪e 2CH, AL coep oep 
ee  (0  = ocpecee).  aee  e ep oo ec a
caoea aa.  DOS ce oep    ee  o  ae.  Oe⨬
ae, o p caoe pee 㭪e 2DH, AL oeae paoc
eeoo ae pee (0 = pa- o, FF = epao).

;---caoa pee
   MOV   CH,HOURS       ;o ae pee
   MOV   CL,MINUTES     ;
   MOV   DH,SECONDS     ;
   MOV   DL,HUNDREDTHS  ;
   MOV   AH,2DH         ;oep 㭪樨 cao pee
   INT   21H            ;caaae pe
   CMP   AH,0FFH        ;poepe paoc ae
   JE    ERROR          ;epexo a opao o訡

;---oee pee
   MOV   AH,2CH         ;oep 㭪樨 oe pee
   INT   21H            ;oae pe
   MOV   DAY_OF_WEEK,AH ;oae e ee  AH

   H poe.

   Ec B  e  copoc  co  aaa 1 pocxe 8253 
ceax poe,  o Ba eoxoo aca  co  po-  ep
eopoa oaa ce稪a pee co. BIOS ooe aao
ae ce稪a o 0 o 1.573 oa    o  oe    eeo
oo  e  ee  pepa  aepa.  oo  ac,  peao
oaae  coe  o  ce㭤,  e  o  paoa  24  aca  e
ceao  acao  popa.  Oe⨬  ae,  o a 0040:0070
caaaec  o p cape,  a  ae  e稢aec  a  1  (e
oe) o xo aco.

                       4. caoa/ee a.

                                     - 5 -

   p e  oepa  MS DOS apa訢ae  ooae ee
a  pe.  Bpe  acaec    oac  ax  BIOS.  aa  e
coepc    epeeo    COMMAND.COM.  Oa xpac  opae pex
oceoaex ao,  oope coepa cooeceo e  eca,
oep eca  oep oa,  a稭a c 0, e 0 cooece 1980 o.
B o⫨稨 o ce稪a pee co,  apec a   a  eec  c
eee  epc  DOS    ooee    a COMMAND.COM.  o o
p稭e  oe a cea  ao  cooa  ooe  ⨫
eca  MS DOS, a e opa- ac  o epeeo ap.
   Ma設,  oopoae pocxeo aeap-aco,  aoa-
ec caaa pe  a  c oo ceao popa
(oo  acaeo  p cape epe a  AUTOEXEC.BAT).   Ka
o oc  pocxee aeap-aco,  c. [2.1.4]. Oe-
⨬  ae, o oa ce稪 pee co BIOS epexo  epe
oe 24 aco, MS DOS ee a.

   Cpe poe.

   㭪樨 2AH  2BH pepa 21H oa  caaa a.  
oe a oece    AH  2AH    oe  pepa-  e.  p
opae  CX  e  coepa  o    e  ca  o  0 o 119,  o
cooece aao e 1980 - 2099  (oo  caa  o  aec
ceee ooceo 1980 .). DH coep oep eca, a DL - e.

   MOV   AH,2AH       ;oep 㭪樨 oe a
   INT   21H          ;oee a
   MOV   DAY,DL       ;e  DL
   MOV   MONTH,DH     ;ec  DH
   ADD   CX,1980      ;oae a  o
   MOV   YEAR,CX      ;oae oep oa

    cao a oece e, ec  o  e e pec-
p   oe 㭪 2BH.  Ec ae, aae    a
eep, o  AL e opaeo FF,  po⨢o cae - 0.
   MOV   DL,DAY       ;oeae e  DL
   MOV   DH,MONTH     ;oeae ec  DH
   MOV   CX,YEAR      ;oeae o  CX
   SUB   CX,1980      ;epe ceee ooceo 1980
   MOV   AH,2BH       ;oep 㭪樨 cao a
   INT   21H          ;caoa a
   CMP   AH,0FFH      ;poepe ceoc oepa樨
   JE    ERROR        ;eepa aa, e a opao o訡

             5. caoa/ee aco peaoo pee.

   ac peaoo pee e co coce poeccop,  oo-  p
oe  oca  pe  e  a p㣨e oepe oe- pa樨.
O e ae eac co筨 a, coe oa o-
ep  몫e.  popao oo a a,  a  caaa ac
peoo   pee.   Oo   eec    ooeoe    popaoe
oeceee,  oopoe  caaae  ce稪  pee-    co BIOS 
epee a DOS a opao,  o o  cooecoa  e騬
oaa  aco  peaoo  pee.  Ho  oo  popao poep
cooec⢨e e   p oape paoac p eoxo-
e ep.
   Pae cao  pee    a  ocec⢫c  epe   aop
apeco opo.  Moe oo㭪oae a pacpe  IBM PC
e  ac  peaoo  pee,  o,    coae,  e   caapo

                                     - 6 -
pocxe  aaoa apeco opo.  AT oopec aca peaoo
pee,  ocoa묨 a pocxee MC146818  p  Motorola,  oope
co  e  e  pecp,  o  poc- xea,  coepaa ae o
o䨣pa樨 cce.  oc  ⨬ pecpa oo  o,  oca
caaa oep peeoo pecpa  op 70H, a ae poa aee
pecpa epe op 71H. Pecp, cae c aca, cee:

           Hoep pecpa              㭪

                00H                  Ce㭤
                01H                  Ce㭤a peoa
                02H                  M
                03H                  Ma peoa
                04H                  ac
                05H                  acoa peoa
                06H                  e ee
                07H                  e eca
                08H                  Mec
                09H                  o
                0AH                  pecp caca A
                0BH                  pecp caca B
                0CH                  pecp caca C
                0DH                  pecp caca D

    epex  cacx  pecpo  o pae 㭪樨,  
oopx epec  popaco o peca cee:
   Pecp A:  7   1 = e o䨪a pee (ao a
                          ae 0, o a)
   Pecp B:  6   1 = papeeo epoecoe pepae
               5   1 = papeeo pepae peo
               4   1 = papeeo pepae oa o䨪a樨
               1   1 = ac cac o 24, 0 = o 12
               0   1 = papeeo aoae pee co
   ac peaoo pee a AT o  a  aapaoe  pepae
IRQ8.  popaa  oe  cao  eop  oo  pepa a 
poep,  oop peec o  opeeeoe pe pepae
oe ac o  pex cocoo, a  oopx apee p
cape.  epoecoe   pepae   pocxo   epe   opeeee
epa pee.  epooc peo paa oo ce㭤e.
pepae peo pocxo oa aee pex pe-  cpo  peo
coaae co aeﬨ cooecx peex pecpo. pepae
oa  o䨪a樨  pocxo  oce   aoo   ooe   ae
pecpo pocxe.
   pepae 1AH pacpeo  BIOS AT,  o oo  ooo  a  
caaa  ac  peaoo pee.  oco oaa oa e
coco oee e x x ecx p, o ae pee ac
  oo-opoao  eco ope (BCD),  oa a ec a
e oo  aa eca pa pecaec ep  a.
Tao opa ooe eo epeo ca  op ASCII.  popae
㦭o oo  c  oo  aa    a訩  oe  pecpa  
oa 48  oe-  oa ASCII, cooeceo ao c.
 cex IBM PC 㭪樨 0  1 pepa  1AH  a    caaa
ce稪  pe-  e co BIOS.   aco peaoo pee AT eec
ec ox 㭪権:

   㭪 2:  ee pee  aco peaoo pee
               p opae: CH = ac  BCD
                             CL =   BCD
                             DH = ce㭤  BCD

                                     - 7 -
   㭪 3:  caoa pee aco peaoo pee
               p xoe: CH = ac  BCD
                          CL =   BCD
                          DH = ce㭤  BCD
                          DL = if daylight savings, else 1
   㭪 4:  ee a  aco peaoo pee
               p opae: CH = e  BCD (19  20)
                             CL = o  BCD (c 1980)
                             DH = ec  BCD
                             DL = e eca  BCD
   㭪 5:  caoa a aco peaoo pee
               p xoe:    CH = e  BCD (19  20)
                             CL = o  BCD (c 1980)
                             DH = ec  BCD
                             DL = e eca  BCD
   㭪 6:  caoa peo  aco peaoo pee
               p xoe: CH = ac  BCD
                          CL =   BCD
                          DH = ce㭤  BCD
   㭪 7:  Cpoc peo (e xox pecpo)

Tpeoa caaaec  a ceee,  ooceo eeo o- ea
pee. Maca epo pae 23:59:59. Ka e oo- poc e,
eop  pepa 4AH oe aa a poep opao⪨ peo.
Oe⨬, o ec ac e paoa (aoee epoo, -a occ⢨
a), o oee 㭪権 2, 4  6 caaae a epeoca.

                   6. aepa popax oepa権.

   Ec B  ocec⢫ee  aep    popae  ocpeco  coo
横a,  o Ba  oe  opeoac  oo  pee    oo,  o
oc 㦭oo pee aep.  ae ec B opeee pe- e
eoc, o e  epe, o Baa popaa e aa
㦭oe  pe  aep  p  cex  cox.  eoc 横a oe
ec  acoc o coeoo oopa (,   eca,
o  oo,  opec  popaa    e).  A  ae pe,  oa
eec oo aop a設 coec⨬x c  IBM  PC  -  ex  po
aao  copoc  poeccopa  -  ae  横 a e acceepa oe
po  pa pee- a aep.  oo pa㬭o  opee
pe popao a- ep eocpeceo o aca.  acoa ocea
18.2 paa  ce㭤,  coea    o䨪a樨  ce稪a  pee
co, oa oe oeop o設co opeoce (a e-
 aco oceo.
   o oece aep ao pooeoc, popaa oa
oca  peeoe  co  co  ce稪a  pee  co.  o
aee  oaec    cao ee ae ce稪a.  ae
popaa ocoﭭo cae aee  ce稪a    cpaae  eo  c
aoe.  Koa oc⨣aec paeco, o peea aepa poa
 oo  pooa  oee  popa.  epe  aa,    oopx
xpac  aee  ce稪a  pee co xpac,  a稭a c apeca
0040:006C (a oo,  a稭a c aeo aa).  aepe ex
14  ce㭤 oo ooac oo a訬 ao.  a ax aa
oo aep o ooo aca (oee,  a o-ce㭤 ee,  e
ac).

   Cpe poe.

   poae aee ce稪a pee co BIOS, co 㭪 0
pepa 1AH  oae  e eoxooe co  co  o  1/18

                                     - 8 -
ce㭤.  oce  oo  cae  ee ae-  ce稪a pee
co,  ocoﭭo  cpaa  c  peeo  e稭o.  p  oc⨦e
paeca ao oa aep.  pepae 1AH opaae a ax
aa  DX (o設co  aepe  㪫a-  ac    x  peeax),
oo a capx aa,  opaae- e  CX,  o oppoac,
o  oo  Ba  ea  32-ax  oepa権.  B  ao  pepe
caoea aepa a 5 ce㭤, o cooece 91 oce.

;---oee ae ce稪a  caoa aep
            MOV   AH,0   ;oep 㭪樨  "e"
            INT   1AH    ;oae aee ce稪a
            ADD   DX,91  ;oae 5 ce.  ae co
            MOV   BX,DX  ;aoae peeoe aee  BX
;---ocoﭭa poepa ae ce稪a pee co BIOS
REPEAT:     INT   1AH    ;oae aee ce稪a
            CMP   DX,BX  ;cpaae c co
            JNE   REPEAT ;ec epae, o oope coa
                         ;ae, aepa ooea

AT ee  oao  㭪   pepa   15H,   oopa   ooe
ocec⢨  aep a aaoe pe.  oece 86H  AH,  a co
poce㭤 aep  CX:DX. oce oo oe pepae.

              7. Oepa樨 apopapoae o pee.

   popaa opeee pe  oe opeeeo oepa- 樨  
ooc  a e,  a  eoe:  epec aaoe oaae ce稪a
pee co  ae cpaaec c oce騬 oa- aﬨ.  Moo
oa  ae   opae ac--ce㭤,  o co xooo
c pa e a oaaﬨ,  oco ccea cea e
eca.  e  po  a ce稪 pee co BIOS,  ep
pooeoc  1/18 ce㭤,  a ae e epeo ee   o
opa ::cc.

   Cpe poe.

   pepae 1AH  ee e 㭪樨  cao (AH = 1)  oe
(AH = 0) ce稪a  pee  co.    e  ce稪a  ao  poco
o   pepae  c  AH  =  0.  p  opae  aee  ce稪a
coepc  CX:DX,  pe aee coo  CX.  AL coep-  0,  ec
ce稪  e  epexo  epe  pa  24  aco  c  oea ocee
cao.  cao ce稪a oece a coa  e e pecp,
a    AH  -  1.  B  peeo pepe epc poe⪨ pee 
peeax aca.  p o 㦭 oo a ax aa ce稪a.  Ho 
o  cae eoxoo poep,  o e o epexoa epe pa,
oa aaoe aee o oe,  e  ceee.  ;---  ceee
ax  OLDCOUNT  DW 0 ;xpa aaoe aee ce稪a ;---oae
aaoe aee ce稪a
          MOV  AH,0        ;oep 㭪樨
          INT  1AH         ;oae aee ce稪a
          MOV  OLDCOUNT,DX ;coxpae aaoe aee
           .
   (ec e poecc, eoc oopoo epec)
           .
;---oee ce eoc poecca
          MOV  AH,0        ;oep 㭪樨
          INT  1AH         ;oae aee ce稪a
          MOV  BX,OLDCOUNT ;cae capoe aee
          CMP  BX,DX       ;poepe a epeoee

                                     - 9 -
          JG   ADJUST      ;opaoa epeoe
          SUB  DX,BX       ;ae epe paoc
          JMP  SHORT FIGURE_TIME  ; epeo ee  o 
;---opaoa epeoe
ADJUST:   MOV  CX,0FFFFH   ;oeae  CX acaoe co
          SUB  CX,BX       ;ae epoe aee
          ADD  CX,DX       ;oae opoe aee
          MOV  DX,CX       ;pea xpa  DX
;---poepa epeoa pee  o opa
FIGURE_TIME:               ;e a 18.2 ce㭤  ..

               8. paee paoo  peao pee.

   p oepax    peao  pee popaa oe cp樨 
aa oe pee,  a e p  epo  oooc.  Taoo  poa
oepa樨  oo  acco樨pc  c  pooexo,  o eec oeco
p㣨x  poe.  eec  op  oxoa    oepa    peao
pee.    popa,  oope  e o eo ea  poee
e  cpﬨ,  pe騬  peeo  p離,   oo   poco
epoec   poep  ce稪  pee  co,  oa  ac㯫e
㦭oo oea.  Tao oxo paec  coc    aop  cx
横o, ocax  [2.1.5].
   Bopo oxo  oee  coe.  O  coec,   oa   popaa
ocoﭭo  aa  ao-o  paoo,  o  oa  oa  opeeee
oe pee pepa co  oepa樨    oe  opeeeo
aa. B o cae pacp pepae aepa, oopoe oec
18.2 paa  ce㭤.  Koa o pepae  pocxo,  ooe
o  poepe  ooe  aee  ce稪a pee co  ec ac㯨
opeee oe pee,  acae 㦭 poep.  o poecc
oaa a pc.  2-3. peee ec poce pep oaa, a
coa     coe   popae   㤨쭨,   oop   caaaec
ooaee  oae o- o ca,  oa ooo pe.  (oee
co pep oo po  [2.2.6] coe ,    o  pe
oa poeccop a p㣨 ea.)

   H poe.

   BIOS coep ceaoe coe pepae (1CH), oopoe eo e
eae, oa B e ae  eo poep. p cape eop oo
pepa  aae  a cp IRET (opa  pepa);  p
eo oe pocxo oea opa. Ho pepae 1CH epeco
e,  o  oo aec pepae aepa BIOS oce oo,  a o
pepae ooo aee ce稪a pee co. Moo caa, o
o  aapaoe  pepae,  pocxoee  aoaec  18.2  paa 
ce㭤.  B oee e eop  oo  pepa  a,  o  o
aa  a  poep   Bae popae.  oce oo Baa poepa
e ac 18.2 paa  ce㭤.
   Hacaa Ba   poepa  oa  poa  oo  o  o-
poaoe aee ce稪a pee co,  cpa eo  c  oae
peee,   o o o peec,  oa oaeoe pe aoe
ac㯨.  Ececeo,  o oa pe ee e o- oo, o poepa
poco  opaae  paee,  eo  e  e-  a.  Ta  opao,
poeccop e oe e pao.
   B peeo  pepe poepa (e oaaa ec) apa訢ae 
ooae co  (o 60),  oopoe oo po o  oo,  a
paacc   oo   㤨쭨a.   o  co,  aaceoe    MINUTES,
㬭oaec  a  1092    epeoa    aeoe  co  co
ce稪a  pee co.   epoa  peeax ooo aca ocaoo
16   -  oee  e  epo  pe  oee  cox  32-ox

                                     - 10 -
oepa権.  o  co  co  oaec  ae co eeo
ae ce稪a pee co  aoaec  ALARMCOUNT.
   ae eop  pepa  1CH  eec  a  opao,  o o
aa a poep ALARM.  oe,  o  a  oo  eop  e
ee,  ALARM e aoaec ac 18.2 paa  ce㭤. p
oe a poepa ae eee  aee  ce稪a  pee  co
epe  pepae  1AH   cpaae c ALARMCOUNT.  p coae x
e稭 aec poepa BEEP (ae e oa- aa ec, oopa
ae oo ca.  B po⨢o cae pocxo opa. O
o opaa    aapax  pepa  (MOV  AH,20H  /  OUT  20H,AL)
a  poe- p e 㦭o, a a o e  pepa aepa.
e ae  e ae coxpa eee pecp.

;--- ceee ax
   MINUTES     DW    0     ;xpa co  o oa
   ALARMCOUNT  DW    0     ;xpa ce稪 pee  oa

;---caoa oaeoo ae ce稪a pee co
   CALL  REQUEST_MINUTES   ;apoc ca  o oa
   MOV   AX,MINUTES        ;epec뫪a  AX
   MOV   BX,1092           ;co co ce稪a  e
   MUL   BX                ;㬭oae - pea  AX
   ;oae eee aee ce稪a
   MOV   AH,0              ;oep 㭪樨 e ce稪a
   INT   1AH               ;ae aee, a訩 a  DX
   ;caae oa ae
   ADD   AX,DX             ;
   MOV   ALARMCOUNT,AX     ;oae 㦭oe aee ce稪a
;---aee eop coo pepa
   PUSH  DS                ;coxpae cee ax
   MOV   AX,SEG ALARM      ;epe cee poep ALARM
   MOV   DS,AX             ;oeae eo  DS
   MOV   DX,OFFSET ALARM   ;epe ceee poep
   MOV   AL,1CH            ;oep eeoo eopa
   MOV   AH,25H            ;㭪 ee eopa
   INT   21H               ;ee eop
   POP   DS                ;occaaae cee ax
;
;---ae pooaec popaa
;
;--- oe popa opaae eop pepa
   MOV   DX,0FF53H         ;opae ae 
   MOV   AX,0F000H         ;pepa 1CH
   MOV   DS,AX             ;oeae cee  DS
   MOV   AL,1CH            ;oep eeoo eopa
   MOV   AH,25H            ;oep 㭪樨
   INT   21H               ;occaaae eop

;---poepa a ooo caa
ALARM    PROC FAR          ;coae  poep
         PUSH AX           ;coxpae eee pecp
         PUSH CX           ;
         PUSH DX           ;
;---ae ce稪 pee co
         MOV  AH,0         ;oep 㭪樨 e ce稪a
         INT  1AH          ;ae aee ce稪a
;---cpaae c pee aee
         MOV  CX,ALARMCOUNT   ;epe peeoe aee
         CMP  DX,CX        ;cpaae c e騬

                                     - 11 -
         JNE  NOT_YET      ;ec epa, o a xo
;---ae oo ca, ec ae coa
         CALL BEEP         ;a poepa e oaaa
;---ae opaaec  pepa
NOT_YET: POP  DX           ;occaaae pecp
         POP  CX           ;
         POP  AX           ;
         IRET              ;opa  pepa
ALARM    ENDP              ;oe poep

