-- THE ART OF THE PSEUDO RUN -- Ron Winter 3/13/83 Iô  ió  possiblå tï singlå steð á  z8°  s-10° systeí  iî  softwarå withouô decodinç  thå  `next§ instruction. All that is required is a 74ls74. Thå  z8° ¦ É assumå thå 8080¬  808µ allo÷ onå instructioî  afteò  aî  EÉ tï  occuò  eveî  iæ  aî interrupô  ió pending®  Thió ió tï allo÷ aî REÔ iî aî  interrupô  handleò so thaô á  stacë  runawaù doesn't occur under a barrage of interrupts. Leô  uó finä aî instructioî tï placå  betweeî thå EÉ anä REÔ thaô wilì generatå aî interrupô twï instructionó  lateò thaô preserveó  alì  registeró foò ouò interrupô handler®  Consideò thå followinç circuit. ________________________________________________ | | | pu enable-p | | 10| | | | ___o___ | __ | | _________ 12| S |9|-| \ | | 4| | pu-|D Q|---+ |o- | | ___o___ | | 1/2 | |__/ | | | 2| S |5 | 11| ls74 _|8 o | | _|D Q|-----------|> (b) Q|o-nc / \ | | _ | | 1/2 | | | R | o o | | M1 |3| ls74 _|6 | |___o___| | | | | ==>--|> (a) Q|o_ | 13| VIn NMI| | 44 | | R | | |_________| | | | |___o___| | | | | | 1|pu | | | | |____________| ^ | | arm-n | | [OUT (XX),A] | |------------------------------------------------| Witè  thå aiä oæ anù porô (XX© thaô  onå  caî safelù writå tï anä geô á lo÷ goinç pulså  iî the `write' window, we have the follwing sequence. 1®  witè  nï  interrupô pendinç iî  ouò  interrupô handler we do an EI. 2®  wå  nexô dï OUÔ (XX),Á anä Qá goeó  high¬  Qâ goes low. 3®  wå dï aî REÔ anä oî thå trailinç edgå oæ  M1¬ Qa goes low, Qb no change. 4®  Nexô pã beginó anä oî itó M± enä Qá goeó higè clocking Qb to high causing an interrupt. Thió  leaveó thå wonderfuì dilemná oæ whaô tï do with it! Š 1 Leô  må describå whaô É do®  Á smalì  prograí sets up the system as follows. 1®  Loaä á jumð vectoò tï á safå placå iî (high© memorù aô rst¶ (30hex© anä wirå outpuô oæ  circuiô tï  VI¶  (S-10° piî 10)®  Notå circuiô  shoulä  bå disabled at this time. 2®  Aô thå vector¬ writå aî interrupô handleò tï do whatever you please! 3®  Displaù  somethinç oî thå screeî tï  signifù thaô thå circuiô ió availablå anä exiô bacë tï thå system. 4® Executå thaô whicè onå wisheó tï studù anä aô anù  convenienô  timå enablå á  VI6®  Á  momentarù switch will work. 5. Voila, I am in my interrupt handler. Tï  makå lifå easieò leô uó saù thå interrupô handleò   doeó  thå  following®   Iô   saveó   alì registers¬  saveó  thå  currenô  cursoò  position¬ paintó  á prettù displaù oî somå protecteä parô oæ thå screeî anä polló thå keyboarä foò input® Iæ nï keù theî restorå cursor¬  restorå registeró anä dï EI, OUT (XX),A and RET. Sï  untiì  á keù ió strucë  durinç  interrupô handleò thå processoò `pseudï runs'® Thå effectivå speeä ió thå timå iô takeó tï ruî one'ó  interrupô handler¬  sï  thå quickeò anä dirtieò thå codå thå better! Notå  oæ warning®  Iô ió generallù  safeò  tï surrounä  one'ó  BIOÓ IÏ hardwarå  dependenô  codå witè  DÉ anä EÉ tï prevenô `terminaì confusion§ aô one'ó hardware¡ Thuó onå shoulä copù one'ó IÏ codå inlinå intï thå interrupô handler®  Thió wilì alsï save time (less system jumps etc.) Tï  makå  lifå eveî  easier¬  structurå  youò interrupô `monitor§ tï enablå futurå additionó anä options. Currently mine does the following: Oî  firsô  entrù iæ nï  keù  ió  struck¬  uså `last§  keù  whicè ió preseô tï