Advertisement
Guest User

hello.z80

a guest
Jul 24th, 2019
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;*****************************************************************************
  2. ;EMPRESA: KOPP TECNOLOGIA LTDA.
  3. ;NOME DO PROGRAMA: BOLIARG.ASM
  4. ;PROGRAMADOR : SIDNEI LUDWIG MACIEL
  5. ;PROGRAMA PARA UM JOGO DE BOLICHE SEM TERMINAL PARA ARGENTINA
  6. ;*****************************************************************************
  7.  
  8.  
  9. ; DEFINICAO DOS ENDERECOS -- "EQU" /  E INDICACAO DE USO DO "IX" E
  10. ; -----------------------------------------------------------------
  11. ; COMENTARIO DAS FUNCOES DOS ENDERECOS
  12. ; -------------------------------------
  13.  
  14. DELTA  :EQU    3
  15. ;---------------
  16. ;valor de folga p/"S13" (cm de corda) p/subida de pinos
  17.  
  18. CORMIN :EQU    106 ; era 116
  19. ;-----------------
  20. ;valor minimo padrao na descida dos pinos
  21.  
  22. CORMAX :EQU    116 ; era 123
  23. ;-----------------
  24. ;valor maximo padrao p/descida dos pinos
  25.  
  26. SENTADA:EQU    60
  27. ;----------------
  28. ;valor p/sentar pinos e desligar sensores dos mesmos
  29.  
  30. DESENL1:EQU    50
  31. ;----------------
  32. ;valor limite p/descida na 1a tentativa de desenlinhamento
  33.  
  34. DESENL2:EQU    70
  35. ;----------------
  36. ;valor limite p/descida nas 5 proximas tentativas de desenlinhamento
  37.  
  38. INENL  :EQU    70
  39. ;----------------
  40. ;valor aproximado de inicio de enlinhamento dos pinos
  41. ;usado p/verificar falha rotor na subida logo no inicio
  42. ;dificilmente sera mudado
  43.  
  44. ESPMIN :EQU    2048
  45. ;------------------
  46. ;tempo minimo de espera para cair pinos
  47.  
  48. ESPMAX :EQU    3072
  49. ;------------------
  50. ;tempo maximo de espera para cair pinos
  51.  
  52. ;-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-
  53.  
  54. ;-------------------
  55. START :EQU     8000H ; -----> IX=START
  56. ;-------------------
  57. ;funcoes variadas dos bits --> habilita funcao com "1"
  58. ;bits: 0 - mesma funcao do bit 3,(IX+7) -> usado na rotina "REARMI"
  59. ;      1 - indica p/"limpa" que foi pressionado "banda ou anular" ou "banda"
  60. ;          p/jogo "cheia"
  61. ;      2 - ref. de sinal do bit 6,(IN1) - botao de regulagem dos cordoes
  62. ;      3 - indica que foi pressionada "ANULAR" ou "BANDA" p/jogo "limpa" ou
  63. ;          "cheia"
  64. ;      4 - "1" indica tecla "rearme" pressionada
  65. ;      5 - com "1" indica que foi pressionada tecla banda / com "0" indica te-
  66. ;          cla "anular"
  67. ;      6 - indica p/cheia que foi pressionado "anular"
  68. ;      7 - "1" indica tecla "zerar" pressionada
  69.  
  70.  
  71. ;-------------------
  72. ;              8001H --> (IX+1)
  73. ;-------------------
  74. ;Endereco 1 p/consulta do teclado serial na rotina principal
  75. ;tecla pressionada = nivel "1"
  76. ;bits: 0 - nivel "0" do sincronismo da leitura
  77. ;      1 -
  78. ;      2 - tecla "reset" (zerar jogo)
  79. ;      3 - tecla "banda"
  80. ;      4 - tecla "anular jogada"
  81. ;      5 - tecla "rearme" (armar os pinos em qualquer circunstancia)
  82. ;      6 - sensor inicio de pista "S10"
  83. ;      7 - nivel "0" p/indicar sincronismo fim de byte
  84.  
  85.  
  86. ;-------------------
  87. ;              8002H ;--> (IX+2)
  88. ;-------------------
  89. ;Endereco 2 p/consulta do teclado serial na rotina principal
  90. ;tecla pressionada = nivel "1" / 8 teclas dos pinos do jogo "TREINO"
  91. ;bits: 0 - tecla pino 4
  92. ;      1 - tecla pino 3
  93. ;      2 - tecla pino 9
  94. ;      3 - tecla pino 5
  95. ;      4 - tecla pino 1
  96. ;      5 - tecla pino 2
  97. ;      6 - tecla pino 7
  98. ;      7 - nivel "0" p/indicar sincronismo fim de byte
  99.  
  100.  
  101. ;-------------------
  102. ;              8003H  --> (IX+3)
  103. ;-------------------
  104. ;Endereco 3 p/consulta do teclado serial na rotina principal
  105. ;tecla pressionada ou chave ativada = nivel "1"
  106. ;bits: 0 - tecla pino 8 do jogo "TREINO"
  107. ;      1 - chave p/selecao do jogo "LIMPA"
  108. ;      2 - chave p/selecao do jogo "CHEIA"
  109. ;      3 - Exp.
  110. ;      4 - tecla "programa" (selecionar os pinos do modo "TREINO")
  111. ;      5 - tecla pino 10 do jogo "TREINO"
  112. ;      6 - tecla pino 6 do jogo "TREINO"
  113. ;      7 - nivel "0" p/indicar sincronismo fim de byte
  114.  
  115.  
  116. ;----------------
  117. ;8004H --> (IX+4)
  118. ;----------------
  119. ;referencia do numero da jogada (1 a 3)
  120.  
  121. ;----------------------------
  122. ;8005H e 8006H ---> Expansao
  123. ;----------------------------
  124.  
  125. ;-------------------
  126. ;              8007H --> (IX+7)
  127. ;-------------------
  128. ;funcoes variadas --> habilita funcao com "1"
  129. ;bits: 0 - alterana piscada de leds ("1" acende / "0" apaga)
  130. ;      1 - habilita piscar todos os leds dos pinos do painel (STRACK)
  131. ;      2 - hab. piscar led indicador de falha "S13" (cm da corda)
  132. ;      3 - indica que tem falha "S13" (cm da corda)
  133. ;      4 - retem pulso do "S13" / "1" habilita ler pulso
  134. ;      5 - "0" hab. decrementar contador "S13" / "1" hab. incrementar
  135. ;      6 - habilita piscar led "verde" indicando que esta no jogo "treino" pa-
  136. ;          ra programar o jogo
  137. ;      7 - hab. ativar sub-rotina "TIME" na NMI (controle de qualquer tempo p/
  138. ;          rotina principal e avisa fim de tempo com "0")
  139.  
  140.  
  141. ;-------------------
  142. ;              8008H --> (IX+8)
  143. ;-------------------
  144. ;envia para "OUT1" --> sao os mesmos bits do "OUT1"
  145.  
  146.  
  147. ;-------------------
  148. SERIN :EQU     8009H ;idem a posicao (IX+1)
  149. ;ate SERIN+4 --> 800DH
  150. ;---------------------
  151. ;buffer p/leitura do teclado serial na NMI  /  A leitura das teclas faz-se  no  
  152. ;bloco "800AH a 800CH" e depois coloca-se no bloco "8001H a 8003H"
  153. ;Obs: SERIN - (8009H) --> FF p/sincronismo de entrada
  154.  
  155. ;800EH a 8012H --> Exp.
  156. ;----------------------
  157.  
  158. ;=============================================================================
  159.  
  160. ;buffer p/mostrar painel serial na NMI
  161. ;-------------------------------------
  162.  
  163. ;8013H --> (IX+19d)
  164. ;------------------
  165. ;ref. p/saida serial do painel
  166.  
  167. ;-------------------
  168. FONT1 :EQU     8014H
  169. ;-------------------
  170. ;bits: 0 - nivel "0" p/sincronismo de inicio de mostragem
  171. ;      1 - lampada do pino 4
  172. ;      2 - lampada do pino 8
  173. ;      3 - lampada do pino 2
  174. ;      4 - lampada do pino 1
  175. ;      5 - lampada do pino 3
  176. ;      6 - lampada do pino 5 (rei)
  177. ;      7 - nivel "0" p/sincronismo fim de byte
  178.  
  179.  
  180. ;-------------------
  181. FONT2: EQU     8015H
  182. ;-------------------
  183. ;bits: 0 - lampada do pino 9
  184. ;      1 - lampada do pino 6
  185. ;      2 - lampada do pino 10
  186. ;      3 - lampada do pino 7
  187. ;      4 - led "bola1"
  188. ;      5 - led "bola3"
  189. ;      6 - led "bola2"
  190. ;      7 - nivel "0" p/sincronismo fim de byte
  191.  
  192.  
  193. ;-------------------
  194. FONT3 :EQU     8016H
  195. ;-------------------
  196. ;bits: 0 - nivel "0" p/sincronismo de inicio
  197. ;      1 - solenoide do pino 4
  198. ;      2 - solenoide do pino 8
  199. ;      3 - solenoide do pino 2
  200. ;      4 - solenoide do pino 1
  201. ;      5 - solenoide do pino 3
  202. ;      6 - solenoide do pino 5 (rei)
  203. ;      7 - nivel "0" p/sincronismo de fim de byte
  204.  
  205.  
  206. ;-------------------
  207. FONT4 :EQU     8017H
  208. ;-------------------
  209. ;bits: 0 - solenoide do pino 9
  210. ;      1 - solenoide do pino 6
  211. ;      2 - solenoide do pino 10
  212. ;      3 - solenoide do pino 7
  213. ;      4 - Expancao
  214. ;      5 - led "servico de maquina"
  215. ;      6 - Expansao
  216. ;      7 - nivel "0" p/sincronismo de fim de byte
  217.  
  218. ;-------------------
  219. FONTX :EQU     8018H
  220. ;-------------------
  221. ;byte FFH de sincronismo
  222.  
  223. ;============================================================================
  224.  
  225. ;8019H a 8028H --> Exp.
  226. ;----------------------
  227.  
  228.  
  229. ;-------------------
  230. GENDX :EQU     8029H
  231. ;GENDX+1  -->  802AH
  232. ;-------------------
  233. ;guarda enderecos da saida serial p/mostrar no painel (end.I. = "FONT1")
  234.  
  235.  
  236. ;-------------------
  237. ;              802BH --> (IX+43d)
  238. ;-------------------
  239. ;contador de bytes p/mostrar no painel
  240.  
  241.  
  242. ;-------------------
  243. ;              802CH --> (IX+44d)
  244. ;-------------------
  245. ;contador de bits p/cada byte da mostragem do painel
  246.  
  247.  
  248. ;-------------------
  249. ;802DH a 8032H  ---> Expansao
  250. ;-------------------
  251.  
  252. ;-------------------
  253. ;              8032H ---> (IX+50d)
  254. ;-------------------
  255. ;funcoes variadas
  256. ;bits: 0 - "1" indica desab SELBOL quando houver rearme
  257. ;      1 - indica falha no "S11" (fim de pista) com nivel "1"
  258. ;      2 - alterna piscada do led falha S13
  259. ;      3 - indica que foi desligado o transistor dos reles no "DESLMT" com "1"
  260. ;          com "0" indica para "TRANSI" que pode voltar ao normal
  261. ;      4 - hab. piscar led "servico de maquina", apos as tentativas de
  262. ;          rearme quando pinos enlinhados
  263. ;      5 - alterna piscada do led "servico de maquina"
  264. ;      6 - ref. do sinal de regulagem do cordao dos pinos
  265. ;      7 - Exp.
  266.  
  267. ;-------------------
  268. ;8033H e 804DH  ---> Expansao
  269. ;-------------------
  270.  
  271. ;-------------------
  272. RTECW :EQU     804EH
  273. ;RTECW+1  ---> 804FH
  274. ;-------------------
  275. ;contador de tempo da piscada do led bola 1 p/jogo treino
  276.  
  277. ;-------------------
  278. CONTG :EQU     8050H
  279. ;CONTG+1  ---> 8051H
  280. ;-------------------
  281. ;contador geral p/qualquer tempo na sub-rotina "TIME" da NMI
  282.  
  283.  
  284. ;-------------------
  285. TYSON :EQU     8052H
  286. ;TYSON+1  ---> 8053H  
  287. ;-------------------
  288. ;ref. para sub-rotina "PSTX" do jogo "cheia" dos sensores dos pinos
  289.  
  290. ;8054H a 8055H - Exp.
  291. ;--------------------
  292.  
  293. ;-------------------
  294. LSP   :EQU     8056H
  295. ;-------------------
  296. ;compara com 56H para saber se foi carregado o "SP"
  297.  
  298. ;-------------------
  299. VER   :EQU     8057H
  300. ;-------------------
  301. ;compara com 56H para saber se foi inicializado o sistema (INIX)
  302.  
  303.  
  304. ;-------------------
  305. AUX   :EQU     8058H
  306. ;-------------------
  307. ;auxilia a contagem dos pulsos "S13" (cm da corda) na descida dos pinos  p/ve-
  308. ;rificar se existe falha no "S13"
  309.  
  310. ;8059H e 805AH --> Exp.
  311. ;----------------------
  312.  
  313. ;-------------------
  314. S13   :EQU     805BH
  315. ;-------------------
  316. ;contador hexadecimal do cm da corda
  317.  
  318. ;-------------------
  319. TS13  :EQU     805CH
  320. ;TS13+1   ---> 805DH
  321. ;-------------------
  322. ;contador de tempo para testar "S13" na NMI
  323.  
  324. ;-------------------
  325. TS11  :EQU     805EH
  326. ;TS11+1   ---> 805FH
  327. ;-------------------
  328. ;contador de tempo para verificar se ha falha no "S11" (sensor fim de pista)
  329.  
  330. ;-------------------
  331. RTEC2 :EQU     8060H
  332. ;RTEC2+1  ---> 8061H
  333. ;-------------------
  334. ;contador de tempo p/ruido da tecla "banda"
  335.  
  336. ;-------------------
  337. RTEC3 :EQU     8062H
  338. ;RTEC3+1  ---> 8063H
  339. ;-------------------
  340. ;contador de tempo p/ruido da tecla "anular jogada"
  341.  
  342. ;-------------------
  343. TRLS  :EQU     8064H
  344. ;TRLS+1  --->  8065H
  345. ;-------------------
  346. ;contador de tempo p/transistor dos reles 1 e 2 da rotina "TRANSI"
  347.  
  348.  
  349. ;-------------------
  350. RTEC4 :EQU     8066H
  351. ;RETC4+1  -->  8067H
  352. ;-------------------
  353. ;tempo p/piscada do led "servico de maquina"
  354.  
  355. ;-------------------
  356. CTG   :EQU     8068H
  357. ;CTG+1  ---->  8069H
  358. ;-------------------
  359. ;contador de tempo p/piscada dos leds na sub-rotina "PISCA"
  360.  
  361. ;-------------------
  362. RAB1  :EQU     806AH
  363. RAB2  :EQU     806BH
  364. ;-------------------
  365. ;enderecos onde guarda ref. da ultima jogada p/anular ou banda p/jogo "limpa"
  366. ;serve tambem para a contagem de pinos caidos na rotina "CPSPSB"
  367.  
  368. ;-------------------
  369. LPIN1 :EQU     806CH
  370. LPIN2 :EQU     806DH
  371. ;-------------------
  372. ;referencia dos sensores dos pinos para jogo "limpa" e "cheia", e teclas dos
  373. ;pinos  para jogo "treino"
  374. ;bits: (LPIN1)  0 - nivel "0"
  375. ;               1 - ref. do pino 4
  376. ;               2 - ref. do pino 8
  377. ;               3 - ref. do pino 2
  378. ;               4 - ref. do pino 1
  379. ;               5 - ref. do pino 3
  380. ;               6 - ref. do pino 5 (rei)
  381. ;               7 - nivel "0"
  382. ;bits: (LPIN2)  0 - ref. do pino 9
  383. ;               1 - ref. do pino 6
  384. ;               2 - ref. do pino 10
  385. ;               3 - ref. do pino 7
  386. ;               4 a 6 --> nada
  387. ;               7 - nivel "0"
  388.  
  389.  
  390. ;-------------------
  391. RTECR :EQU     806EH
  392. ;RTECR+1  ---> 806FH
  393. ;-------------------
  394. ;contador de tempo p/ruido da tecla "rearme"
  395.  
  396. ;-------------------
  397. RTECZ :EQU     8070H
  398. ;RTECZ+1  ---> 8071H
  399. ;-------------------
  400. ;contador de tempo p/ruido da tecla "zerar"
  401.  
  402. ;8072H a 8077H --> Expansao
  403. ;--------------------------
  404.  
  405. LERIN :EQU     8078H
  406. ;-------------------
  407. ;referencia de leitura da porta IN1
  408.  
  409. TPPS13:EQU     8079H
  410. ;+1  -->       807AH
  411. ;-------------------
  412. ;tempo p/piscada de led falha "S13"
  413.  
  414. CABOU :EQU     807BH
  415. ;+1  --->      807CH
  416. ;-------------------
  417. ;guarda end. da tabela p/grupo de solenoides p/desenlinhar pinos
  418.  
  419. ;-------------------
  420. PILHA :EQU     87FFH
  421. ;-------------------
  422. ;ultimo endereco da RAM para "SP"
  423.  
  424.  
  425. ;*****************************************************************************
  426.  
  427.  
  428. ;DEFINICAO E COMENTARIOS DAS PORTAS DE ENTRADA E SAIDA
  429. ;-----------------------------------------------------
  430.  
  431. ;---------------
  432. OUT1  :EQU     2
  433. ;---------------
  434. ;bits: 0 - contador de jogadas (gera pulso a cada 1 jogada)
  435. ; NAO MAIS -> transistor p/reles 1 e 2 / ligar depois e antes quando ligar reles
  436. ;      1 - rele 1 (subir pinos)
  437. ;      2 - rele 2 (descer pinos)
  438. ;      3 - zerar sensores dos pinos "S1 a S10"
  439. ;      4 - saida serial do painel
  440. ;      5 - led indicador de falha do "S13" (cm da corda)
  441. ;      6 - saida para zeramento do clock do micro
  442. ;      7 - rele 3 p/solenoides (para nao queima-las)
  443.  
  444.  
  445. ;---------------
  446. IN1   :EQU     0
  447. ;---------------
  448. ;indica ativado com nivel "1"
  449. ;bits: 0 - sensor de CM da corda "S13" - rotor
  450. ;      1 - "S11" (sensor fim de pista) --> "0" passou bola
  451. ;      2 - entrada serial do pulpito
  452. ;      3 - sensor do pino 7
  453. ;      4 - sensor do pino 10
  454. ;      5 - indica p/descida numero de cm de corda
  455. ;          "0" = CORMIN  /  "1" = CORMAX
  456. ;      6 - botao de regulagem dos cordoes dos pinos
  457. ;      7 - "0" indica tempo Minimo de Espera dos Pinos cairem / "1" Maximo
  458.  
  459.  
  460. ;---------------
  461. IN2   :EQU     1
  462. ;---------------
  463. ;bits: 0 - sensor do pino 5 (rei)
  464. ;      1 - sensor do pino 8
  465. ;      2 - sensor do pino 9
  466. ;      3 - sensor do pino 4
  467. ;      4 - sensor do pino 2
  468. ;      5 - sensor do pino 1
  469. ;      6 - sensor do pino 3
  470. ;      7 - sensor do pino 6
  471.  
  472.  
  473. ;*****************************************************************************
  474. ;*****************************************************************************
  475.  
  476. ;                 *******************************
  477. ;                 INICIO DO PROGRAMA BOLICHE2.ASM
  478. ;                 *******************************
  479.  
  480. ;*****************************************************************************
  481.  
  482.  
  483. ;                PSEUDO INSTRUCOES P/DAR INICIO
  484. ;                ------------------------------
  485.  
  486.        DEFSEG     INICIO,ABSOLUTE
  487.        SEG        INICIO
  488.        ORG        0
  489.  
  490. ;*****************************************************************************
  491.  
  492. ;          ---------------------------------------------
  493. ;          INICIO PROPRIAMANTE DITO --> ROTINA PRINCIPAL
  494. ;          ---------------------------------------------
  495.  
  496.        LD    SP,PILHA;carrega endereco para pilha de dados da ram
  497.        XOR   A
  498.        LD    (VER),A
  499.        LD    A,56H
  500.        LD    (LSP),A;indica que "SP" foi carregado
  501.        XOR   A
  502.        OUT   (OUT1),A
  503.        JP    INKK
  504.  
  505.  
  506. ;*****************************************************************************
  507. ;*****************************************************************************
  508.  
  509. ;              ---------------------------
  510. ;              ROTINA DA INTERRUPCAO "NMI"
  511. ;              ---------------------------
  512. ;#############################################################################
  513.  
  514. ;-->SAIDA SERIAL DOS LEDS DOS PINOS, SOLENOIDES, VERDE, BOLA1 E BOLA2  
  515. ;-->ENTRADA SERIAL DO TECLADO DO PULPITO
  516. ;-->CONTROLE DE PISCADA DOS LEDS DOS PINOS P/"STRACK"
  517. ;-->CONTROLE DE TEMPO P/ROTINA PRINCIPAL
  518. ;-->VERIFICACAO DE FALHA NO "S13"(SENSOR  DO Cm DA CORDA)
  519. ;-->ENVIA "OUT1"
  520.  
  521.        ORG   66H;endereco inicial do "NMI"
  522.        PUSH  AF
  523.        IN    A,(IN1)
  524.        LD    (LERIN),A
  525.        LD    A,(LSP);referencia do "SP"
  526.        CP    56H;compara com 56H p/saber se "SP" foi carregado no inicio
  527.        JP    NZ,0;se "Z" OK, se "NZ" dar um RESET
  528.        LD    A,(VER);referencia do "INIX"
  529.        CP    56H;compara com 56H p/saber se houve "INIX"(inicializacao)
  530.        JR    NZ,POF;se "Z" OK, se "NZ" indica que nao terminou  "INIX" (devera
  531.                    ;retornar somente ate que encerre "INIX"
  532.        PUSH  BC
  533.        PUSH  DE
  534.        PUSH  HL
  535.        EXX
  536.        PUSH  BC
  537.        PUSH  DE
  538.        PUSH  HL
  539.        EXX
  540.        CALL  SAIDA;saida serial p/placar e BOLVID
  541.        LD    A,(IX+8)
  542.        OUT   (OUT1),A
  543. ;      CALL  ENTRAD;entrada serial do teclado do pulpito
  544.        CALL  PISCA;pisca leds do painel quando houver "STRACK" e pisca led de
  545.                   ;defeito do "S13" (cm da corda) quando houver
  546.        CALL  CORDA;contar cm da corda
  547.        CALL  FALROT;verificar se ha falha "S13"
  548.        CALL  FALS11;verifica se ha falha no "S11"
  549.        CALL  TIME;controla tempo qualquer p/rotina principal
  550. ;       CALL  TRANSI;ligar transistor quando rele 1 ou 2 ligados
  551.        CALL  BANDA;funcao da tecla "banda"
  552.        CALL  ANULA;funcao da tecla "anula"
  553.        CALL  TREARM;tecla "rearme"
  554.        CALL  TZERAR;tecla "zerar"
  555.        CALL  LEDMAQ
  556.        CALL  PISS13;pisca led falha S13
  557.        CALL  LEDTRE;pisca led "bola 1" (treino)
  558.        EXX
  559.        POP   HL
  560.        POP   DE
  561.        POP   BC
  562.        EXX
  563.        POP   HL
  564.        POP   DE
  565.        POP   BC
  566. POF   :POP   AF
  567.        RETN
  568.  
  569.  
  570. ;*****************************************************************************
  571. ;*****************************************************************************
  572.  
  573.  
  574. ;               ------------------------------
  575. ;               SUB-ROTINAS DA INTERRUPCAO NMI
  576. ;               ------------------------------
  577. ;#############################################################################
  578.  
  579.  
  580. ;ENTRADA SERIAL DO TECLADO DO PULPITO
  581. ;------------------------------------
  582. ENTRAD:RES   6,(IX+8);envia "0" para deixar clock do micro normal
  583.        LD    HL,SERIN+4
  584.        LD    A,(LERIN)
  585.        BIT   2,A
  586.        JR    NZ,SETW
  587.        RES   0,(HL)
  588.        JR    KRAS
  589. SETW  :SET   0,(HL)
  590. KRAS  :LD    B,5
  591. RRXW  :RR    (HL)
  592.        DEC   HL
  593.        DJNZ  RRXW
  594.        LD    A,(SERIN)
  595.        CP    0FFH
  596.        RET   NZ
  597.        LD    HL,SERIN+1
  598.        BIT   0,(HL)
  599.        RET   NZ
  600.        LD    B,5
  601. SAW   :BIT   7,(HL)
  602.        RET   NZ
  603.        INC   HL
  604.        DJNZ  SAW
  605.        SET   6,(IX+8);envia "1" p/zerar clock do micro
  606.        LD    HL,SERIN+1;endereco inicial do buffer serial do teclado
  607.        LD    DE,START+1;endereco inicial do buffer p/consulta do teclado
  608.        LD    BC,3
  609.        LDIR
  610.        RET
  611.  
  612. ;*****************************************************************************
  613.  
  614. ;SAIDA SERIAL DO PAINEL (LEDS DOS PINOS,DISPLAYS,SOLENOIDES E RELES)
  615. ;-------------------------------------------------------------------
  616. SAIDA :BIT   0,(IX+19d);testa bit p/saida
  617.        JR    Z,RES
  618.        SET   4,(IX+8);p/enviar "1" na saida serial
  619. SAI   :RRC   (IX+19d);posiciona proximo bit p/saida serial
  620.        DEC   (IX+44d);contador p/8 bits
  621.        RET   NZ
  622.        LD    (IX+44d),8
  623.        LD    HL,(GENDX)
  624.        LD    A,(HL)
  625.        LD    (IX+19d),A
  626.        INC   HL
  627.        LD    (GENDX),HL
  628.        DEC   (IX+43d);contador de bytes da saida serial
  629.        RET   NZ
  630.        LD    (IX+43d),5
  631.        LD    HL,FONT1;endereco inicial do buffer serial do painel
  632.        LD    (GENDX),HL;guarda p/proximo ciclo de saida
  633.        LD    (IX+19d),0FFH;sincronismo de entrada (primeiro byte de saida)
  634.        RET
  635. RES   :RES   4,(IX+8);p/enviar "0" na saida serial
  636.        JR    SAI
  637.  
  638. ;*****************************************************************************
  639.  
  640. ;PISCA LEDS DO PAINEL QUANDO HOUVER "STRACK"
  641. ;-------------------------------------------
  642. PISCA :BIT   1,(IX+7);se "NZ" pisca todos leds dos pinos (STRACK)
  643.        RET   Z
  644.        BIT   0,(IX+7);"NZ" acende leds / "Z" apaga leds --> quando necessario
  645.        JR    Z,AP
  646.        LD    A,(FONT1);leds dos pinos "P1 a P6"
  647.        OR    7EH;p/acender estes leds
  648.        LD    (FONT1),A;mostrar leds acesos ("P1 a P6")
  649.        LD    A,(FONT2);leds dos pinos "P7,P8,P9 e P10"
  650.        OR    0FH;p/acender estes leds
  651.        LD    (FONT2),A;mostrar leds acesos ("P7,P8,P9 e P10")
  652. DT    :CALL  XCTG;faz a contagem de tempo de 0.5 seg. p/acender ou apagar leds
  653.                  ;e alterna a piscada
  654.        RET
  655. AP    :CALL  APP;apaga leds dos pinos "P1 a P10"
  656.        JR    DT
  657.  
  658.  
  659. ;APAGA PINOS NO BUFFER DO PAINEL
  660. ;-------------------------------
  661. APP   :XOR   A
  662.        LD    (FONT1),A;apaga no painel leds dos pinos "P1 a P6"
  663.        LD    A,(FONT2);leds dos pinos "P7,P8 e P9"
  664.        AND   70H
  665.        LD    (FONT2),A;apaga no painel leds dos pinos "P7,P8 e P9"
  666.        RET
  667.  
  668.  
  669. ;FAZ CONTAGEM DE TEMPO DE 0.5 SEG. E ALTERNA PISCADA SOMENTE P/ "PISCA"
  670. ;----------------------------------------------------------------------
  671. XCTG  :LD    HL,(CTG);contador para 0.5 segundos
  672.        DEC   HL
  673.        LD    (CTG),HL;mantem contador sempre guardado p/proxima NMI
  674.        LD    A,H
  675.        OR    L
  676.        RET   NZ;"Z" indica fim dos 0.5 seg.
  677.        LD    HL,512d;valor p/0.5 seg.
  678.        LD    (CTG),HL;carrega tempo novamente
  679.        BIT   0,(IX+7);vamos inverter o sinal p/poder alternar piscada dos leds
  680.        JR    Z,P3
  681.        RES   0,(IX+7);alterna p/"0"
  682.        RET
  683. P3    :SET   0,(IX+7);alterna p/"1"
  684.        RET
  685.  
  686.  
  687. ;*****************************************************************************
  688.  
  689. ;CONTAGEM DO CM DA CORDA (COM RETENSAO DO PULSO "S13")
  690. ;-----------------------------------------------------
  691. CORDA :BIT   4,(IX+7);retensao do pulso do cm
  692.        JR    Z,COR;"NZ" habilita ler pulso / "Z" retem pulso
  693.        CALL  BTS13;testa pulso do cm da corda
  694.        RET   Z;"NZ" 1 cm de corda
  695.        LD    A,(S13);contador do cm da corda
  696.        BIT   5,(IX+7);"Z" decrementa (S13) p/subida de pinos / "NZ" incrementa
  697.                      ;(S13) p/descida de pinos
  698.        JR    NZ,BAXO;
  699.        CP    0
  700.        JR    Z,AXO
  701.        DEC   A;decrementa contador do cm da corda (S13)
  702.        JR    AXO
  703. BAXO  :CP    255
  704.        JR    Z,AXO
  705.        INC   A;incrementa contador do cm da corda (S13)
  706. AXO   :LD    (S13),A;atualiza valor
  707.        CALL  AUXVVX;auxilia verificacao de falha "S13"
  708.        RES   4,(IX+7);retem pulso "S13"
  709. COR   :CALL  BTS13;testa pulso do cm da corda
  710.        RET   NZ;enquanto "NZ" indica retensao do cm da corda
  711.        SET   4,(IX+7);desabilita retencao do pulso "S13"
  712.        RET
  713.  
  714. ;testa pulso do cm da corda "S13"
  715. BTS13 :IN    A,(IN1)
  716.        BIT   0,A
  717.        RET
  718.  
  719.  
  720. ;AUXILIA VERIFICACAO DA FALHA "S13"
  721. ;----------------------------------
  722. AUXVVX:LD    A,(AUX);guarda numero de incrementos do "S13" tanto na subida dos
  723.                     ;pinos quanto na descida
  724.        CP    255
  725.        RET   Z
  726.        INC   A
  727.        LD    (AUX),A
  728.        RET
  729.  
  730. ;*****************************************************************************
  731.  
  732. ;VERIFICA SE HA FALHA NO "S13"
  733. ;-----------------------------
  734. FALROT:LD    A,(IX+8);endereco do "OUT1"
  735.        AND   6;aceita somente reles 1 e 2
  736.        CP    0
  737.        JR    NZ,VV;se "Z" indica motores desligados
  738.        LD    HL,400
  739.        LD    (TS13),HL
  740. XX    :XOR   A
  741.        LD    (AUX),A;zerar auxiliar da verificacao de falha "S13"
  742.        RET
  743. VV    :LD    HL,(TS13);contador p/ 2 seg. de espera com motor ligado para tes-
  744.                    ;tar cm da corda "S13"
  745.        DEC   HL
  746.        LD    (TS13),HL
  747.        LD    A,H
  748.        OR    L
  749.        RET   NZ
  750.        LD    HL,400
  751.        LD    (TS13),HL
  752.        LD    A,(AUX);contador de pulsos "S13" p/sabermos se esta funcionando
  753.        CP    2;se < (mais-ou-menos) ha falha no "S13"
  754.        JR    NC,VX;"C" indica < 2
  755.        SET   3,(IX+7);indica falha no "S13" (cm da corda)
  756.        SET   0,(IX+0)
  757.        JR    XX
  758. VX    :RES   3,(IX+7);indica "S13" OK
  759.        RES   0,(IX+0)
  760.        JR    XX
  761.  
  762. ;*****************************************************************************
  763.  
  764.  
  765. ;INDICA FALHA NO "S11" (FIM DE PISTA) SE FICAR ATIVADO POR MAIS DE 5 SEG.
  766. ;------------------------------------------------------------------------
  767. ;"Z" indica ativado (passou bola)
  768. ;---------------------------------
  769. FALS11:CALL  BTS11;testa "S11"
  770.        JR    Z,FAL
  771.        RES   1,(IX+50d);indica que "S11" nao esta sempre ativado
  772. PDT   :LD    HL,5000d;tempo p/5 seg.
  773.        LD    (TS11),HL;contador p/3seg. de espera com "S11" ativado
  774.        RET
  775. FAL   :LD    HL,(TS11)
  776.        DEC   HL
  777.        LD    (TS11),HL
  778.        LD    A,H
  779.        OR    L
  780.        RET   NZ
  781.        SET   1,(IX+50d);indica que "S11" fica ativado por mais de 3s continuos
  782.                        ;sinalizando falha no "S11"
  783.        JR    PDT
  784.  
  785. ;LER "S11"
  786. ;---------
  787. BTS11 :IN    A,(IN1)
  788.        BIT   1,A
  789.        RET
  790.  
  791. ;*****************************************************************************
  792.  
  793.  
  794. ;CONTAGEM PARA QUALQUER TEMPO DA ROTINA PRINCIPAL
  795. ;------------------------------------------------
  796. TIME  :BIT   7,(IX+7);"NZ" aciona contagem de um tempo qualquer
  797.        RET   Z
  798.        LD    HL,(CONTG);contador de um tempo qualquer
  799.        LD    A,H
  800.        OR    L
  801.        JR    NZ,TM
  802.        RES   7,(IX+7);trava contagem de tempo e indica para rotina principal o
  803.                      ;termino do time
  804.        RET
  805. TM    :DEC   HL
  806.        LD    (CONTG),HL
  807.        RET
  808.  
  809. ;*****************************************************************************
  810.  
  811.  
  812. ;LIGAR TRANSISTOR 0.1 SEG. APOS LIGAR RELE 1 OU 2
  813. ;------------------------------------------------
  814. ;TRANSI:LD    A,(IX+8);bit 1 --> rele 1  /  bit 2 --> rele 2
  815. ;       AND   6;anula o que nao interessa
  816. ;       CP    0
  817. ;       JR    Z,TRS ;"Z" indica que reles estao desligados
  818. ;       LD    HL,(TRLS);contador de tempo de 0.1 seg. apos ligar rele 1 ou 2
  819. ;       DEC   HL
  820. ;       LD    (TRLS),HL
  821. ;       LD    A,H
  822. ;       OR    L
  823. ;       RET   NZ
  824. ;       BIT   3,(IX+50d);"NZ" indica que foi desligado o transistor no "DESLMT"
  825. ;                       ;quando no tempo de 0.1 seg. ("SEG01")
  826. ;       JR    NZ,TRS
  827. ;       SET   0,(IX+8);ligar transistor p/rele 1 ou 2
  828. ;TRS   :LD    HL,100d;p/0.1 seg.
  829. ;       LD    (TRLS),HL
  830. ;       RET
  831.  
  832. ;*****************************************************************************
  833.  
  834.  
  835.  
  836. ;*****************************************************************************
  837.  
  838. ;FUNCAO DA TECLA "BANDA"
  839. ;-----------------------
  840. BANDA :BIT   3,(IX+1);"NZ" indica tecla "banda" pressionada
  841.        JR    NZ,ASTRO
  842.        LD    HL,200;tempo p/ruido da tecla "banda"
  843.        LD    (RTEC2),HL
  844.        RET
  845. ASTRO :LD    HL,(RTEC2)
  846.        DEC   HL
  847.        LD    (RTEC2),HL
  848.        LD    A,H
  849.        OR    L
  850.        RET   NZ
  851.        LD    HL,200
  852.        LD    (RTEC2),HL
  853.        BIT   3,(IX+1);"NZ" tecla "banda" continua pressionada
  854.        RET   Z
  855.        SET   5,(IX+0);indica tecla "banda" pressionada
  856.        SET   3,(IX+0);indica que houve "banda" ou "anular" para jogo"limpa" ou
  857.                      ;"cheia"
  858.        RET
  859.  
  860. ;*****************************************************************************
  861.  
  862.  
  863. ;FUNCAO DA TECLA "ANULAR JOGADA"
  864. ;-------------------------------
  865. ANULA :BIT   4,(IX+1);"NZ" tecla "anular" pressionada
  866.        JR    NZ,PORK
  867.        LD    HL,200;tempo p/ruido da tecla "anular"
  868.        LD    (RTEC3),HL
  869.        RET
  870. PORK  :LD    HL,(RTEC3)
  871.        DEC   HL
  872.        LD    (RTEC3),HL
  873.        LD    A,H
  874.        OR    L
  875.        RET   NZ
  876.        LD    HL,200
  877.        LD    (RTEC3),HL
  878.        BIT   4,(IX+1);"NZ" tecla "anular" continua pressionada
  879.        RET   Z
  880.        RES   5,(IX+0)
  881.        SET   3,(IX+0);indica que houve "banda" ou "anular" para jogo"limpa" ou
  882.                      ;"cheia"
  883.        RET
  884.  
  885. ;*****************************************************************************
  886.  
  887. ;FUNCAO DA TECLA "REARME"
  888. ;-----------------------
  889. TREARM:BIT   5,(IX+1);"NZ" indica tecla "rearme" pressionada
  890.        JR    NZ,AST
  891.        LD    HL,200;tempo p/ruido da tecla "banda"
  892.        LD    (RTECR),HL
  893.        RES   4,(IX+0)
  894.        RET
  895. AST   :LD    HL,(RTECR)
  896.        DEC   HL
  897.        LD    (RTECR),HL
  898.        LD    A,H
  899.        OR    L
  900.        RET   NZ
  901.        LD    HL,200
  902.        LD    (RTECR),HL
  903.        BIT   5,(IX+1);"NZ" tecla "rearme" continua pressionada
  904.        RET   Z
  905.        SET   4,(IX+0);indica tecla "rearme" pressionada
  906.        RET
  907.  
  908. ;*****************************************************************************
  909.  
  910. ;FUNCAO DA TECLA "REARME"
  911. ;-----------------------
  912. TZERAR:BIT   2,(IX+1);"NZ" indica tecla "zerar" pressionada
  913.        JR    NZ,STJ
  914.        LD    HL,200;tempo p/ruido da tecla "banda"
  915.        LD    (RTECZ),HL
  916.        RES   7,(IX+0)
  917.        RET
  918. STJ   :LD    HL,(RTECZ)
  919.        DEC   HL
  920.        LD    (RTECZ),HL
  921.        LD    A,H
  922.        OR    L
  923.        RET   NZ
  924.        LD    HL,200
  925.        LD    (RTECZ),HL
  926.        BIT   2,(IX+1);"NZ" tecla "zerar" continua pressionada
  927.        RET   Z
  928.        SET   7,(IX+0);indica tecla "rearme" pressionada
  929.        RET
  930.  
  931. ;*****************************************************************************
  932.  
  933. ;PISCA LED "SERVICO DE MAQUINA"
  934. ;------------------------------
  935. LEDMAQ:BIT   4,(IX+50d);"NZ" pisca led servico de maquina pelo BOLICHE
  936.        JR    NZ,CORVO
  937.        LD    HL,200d
  938.        LD    (RTEC4),HL
  939.        JR    LUVAS
  940. CORVO :LD    HL,(RTEC4)
  941.        DEC   HL
  942.        LD    (RTEC4),HL
  943.        LD    A,H
  944.        OR    L
  945.        RET   NZ
  946.        LD    HL,200d
  947.        LD    (RTEC4),HL
  948.        BIT   5,(IX+50)
  949.        JR    NZ,LUVAS
  950.        SET   5,(IX+50)
  951.        LD    A,(FONT4)
  952.        SET   5,A
  953.        LD    (FONT4),A
  954.        RET
  955. LUVAS :RES   5,(IX+50)
  956.        LD    A,(FONT4)
  957.        RES   5,A
  958.        LD    (FONT4),A
  959.        RET
  960.  
  961. ;*****************************************************************************
  962.  
  963. ;PISCA LED "FALHA S13"
  964. ;---------------------
  965. PISS13:BIT   2,(IX+7);"NZ" hab. piscar led
  966.        JR    NZ,CORVO2
  967.        LD    HL,200d
  968.        LD    (TPPS13),HL
  969.        JR    LUVAS2
  970. CORVO2:LD    HL,(TPPS13)
  971.        DEC   HL
  972.        LD    (TPPS13),HL
  973.        LD    A,H
  974.        OR    L
  975.        RET   NZ
  976.        LD    HL,200d
  977.        LD    (TPPS13),HL
  978.        BIT   2,(IX+50)
  979.        JR    NZ,LUVAS2
  980.        SET   2,(IX+50)
  981.        SET   5,(IX+8);liga led
  982.        RET
  983. LUVAS2:RES   2,(IX+50)
  984.        RES   5,(IX+8);desliga led
  985.        RET
  986.  
  987.  
  988. ;*****************************************************************************
  989.  
  990. ;PISCA LED "treino"
  991. ;------------------
  992. LEDTRE:BIT   6,(IX+7);"NZ" pisca
  993.        JR    Z,CORVW
  994.        LD    HL,(RTECW)
  995.        DEC   HL
  996.        LD    (RTECW),HL
  997.        LD    A,H
  998.        OR    L
  999.        RET   NZ
  1000.        LD    HL,512
  1001.        LD    (RTECW),HL
  1002.        LD    A,(FONT2)
  1003.        BIT   4,A
  1004.        JR    NZ,LUVAW
  1005.        LD    A,(FONT2)
  1006.        SET   4,A
  1007.        LD    (FONT2),A
  1008.        RET
  1009. LUVAW :LD    A,(FONT2)
  1010.        RES   4,A
  1011.        LD    (FONT2),A
  1012.        RET
  1013. CORVW :LD    HL,512
  1014.        LD    (RTECW),HL
  1015.        RET
  1016.  
  1017.  
  1018. ;#############################################################################
  1019.  
  1020.  
  1021. ;             ROTINAS DO PROGRAMA PRINCIPAL
  1022. ;             ------------------------------
  1023. ;             ------------------------------
  1024.  
  1025.  
  1026. ;#############################################################################
  1027.  
  1028.  
  1029.  
  1030. ;INICIALIZACAO DOS DADOS DOS ENDERECOS
  1031. ;-------------------------------------
  1032.  
  1033. INIX  :LD    IX,START;endereco inicial p/referencia para "IX"
  1034.        LD    (IX+50d),0
  1035.        LD    B,17d
  1036.        LD    HL,START;end.I. da RAM
  1037. ACDC  :LD    (HL),0
  1038.        INC   HL
  1039.        DJNZ  ACDC
  1040.        LD    HL,FONT1
  1041.        LD    (GENDX),HL
  1042.        LD    B,4
  1043. KAKO  :LD    (HL),0
  1044.        INC   HL
  1045.        DJNZ  KAKO
  1046.        LD    (IX+19d),0FFH
  1047.        LD    A,0FFH
  1048.        LD    (FONTX),A
  1049.        LD    (IX+43d),11d;contador de bytes da saida serial
  1050.        LD    (IX+44d),8;contador de 8 bits p/cada byte da saida serial
  1051.        LD    HL,512d;p/0.5 seg.
  1052.        LD    (CTG),HL;contador de 0.5 seg. para piscada dos leds dos pinos  de
  1053.                      ;falha "S13"
  1054.  
  1055.        LD    (CONTG),HL;zerar contador de qualquer tempo p/uso do principal
  1056.        XOR   A
  1057.        LD    (AUX),A;zerar auxiliar da contagem do pulso "S13"  para verificar
  1058.                     ;falha no momento de ligar motor
  1059.        LD    (S13),A;zerar contador do cm da corda
  1060.        LD    HL,400
  1061.        LD    (TS13),HL;contador de 4 seg. para teste de "S13" (cm da corda)
  1062.        CALL  REXYW
  1063.        LD    HL,3000d;p/3 seg.
  1064.        LD    (TS11),A;contador p/10 seg. continuo com "S11" ativado
  1065.        LD    HL,100d;p/0.1 seg.
  1066.        LD    (TRLS),HL ;contador p/tempo de 0.1 seg. p/ligar transistor apos-
  1067.                        ;ligar rele1 ou 2
  1068.        LD    (IX+3),4;indica jogo cheia caso nao vier comunicacao
  1069.        CALL  CHAINI;corrige sinal do botao de regulagem dos cordoes
  1070.        LD    (IX+4),1;referencia bola 1
  1071.        RET
  1072.  
  1073.  
  1074. ;*****************************************************************************
  1075.  
  1076. ;CONTINUACAO DO INICIO
  1077. ;---------------------
  1078. INKK  :XOR   A
  1079.        OUT   (OUT1),A
  1080.        CALL  INIX;inicializa dados
  1081.        LD    A,56H
  1082.        LD    (VER),A
  1083.        LD    HL,1000d
  1084.        LD    (CONTG),HL
  1085.        SET   7,(IX+7)
  1086. BESSA :BIT   7,(IX+7)
  1087.        JR    NZ,BESSA
  1088.        CALL  ZERASX;zerar sensores dos pinos "S1 a S9" / tempo=2 NMI  
  1089.        BIT   2,(IX+3);"NZ" cheia
  1090.        JR    Z,BOS
  1091.        CALL  ALP
  1092. BOS   :CALL  REARMI;rearme de inicio (diferente do rearme normal)
  1093. INI   :BIT   1,(IX+3);"NZ" jogo "limpa"
  1094.        JP    NZ,LIMPAX
  1095.        BIT   2,(IX+3);"NZ" jogo "cheia"
  1096.        JP    Z,TREINO
  1097.        CALL  REXYW;zerar ref. dos sensores dos pinos p/atuar nas solenoides
  1098.        CALL  APP;apaga pinos no painel
  1099.        SET   1,(IX+0)
  1100.        SET   6,(IX+0)
  1101.        LD    A,(FONT2)
  1102.        SET   4,A
  1103.        RES   5,A
  1104.        RES   6,A
  1105.        LD    (FONT2),A
  1106.        LD    (IX+4),1
  1107.        LD    HL,0
  1108.        LD    (TYSON),HL
  1109.        JP    CHEIAX
  1110.  
  1111. ;*****************************************************************************
  1112.  
  1113.  
  1114. ;                          JOGO CHEIA
  1115. ;                          ----------
  1116. ;                          ----------
  1117. CHEIA :CALL  REXYW;zerar ref. dos sensores dos pinos p/atuar nas solenoides
  1118.        CALL  APP;apaga pinos no painel
  1119.        SET   1,(IX+0)
  1120.        SET   6,(IX+0)
  1121.        LD    A,(FONT2)
  1122.        SET   4,A
  1123.        RES   5,A
  1124.        RES   6,A
  1125.        LD    (FONT2),A
  1126.        LD    (IX+4),1
  1127.        LD    HL,0
  1128.        LD    (TYSON),HL
  1129.        CALL  REARME
  1130. CHEIAX:LD    SP,PILHA
  1131.        CALL  LIGBOL;acende led bola1, bola2 ou bola3
  1132.        CALL  REGUCOR;botao de regulagem dos cordoes
  1133.        BIT   2,(IX+3);"NZ" cheia
  1134.        JP    Z,MUDAJO;mudanca de jogo
  1135.        CALL  RESETJ
  1136.        CALL  PSTX;ler teclas "banda ou anular" p/"cheia"
  1137.        CALL  LPINOS;ler pinos --> "NZ" caiu pinos
  1138.        JR    NZ,SPRY
  1139.        BIT   4,(IX+0);"NZ" tecla "rearme"
  1140.        CALL  NZ,REARME
  1141.        BIT   1,(IX+50d);"NZ" indica falha no "S11"
  1142.        JR    NZ,CHEIAX
  1143.        CALL  BTXS11;ler "S11" (sensor fim de pista) --> "Z" passou bola
  1144.        JR    NZ,CHEIAX
  1145. SPRY  :SET   0,(IX+50);hab. SELBOL
  1146.        LD    A,(IX+4)
  1147.        CP    1
  1148.        JR    NZ,POLY2
  1149.        LD    (IX+4),2
  1150.        JR    POLY4
  1151. POLY2 :CP    2
  1152.        JR    NZ,POLY3
  1153.        LD    (IX+4),3
  1154.        JR    POLY4
  1155. POLY3 :LD    (IX+4),1
  1156. POLY4 :SET   1,(IX+0);hab. acessar "PSTX" quando pressionar "banda"
  1157.        SET   6,(IX+0);hab. acessar "PSTX" quando pressionar "anular"
  1158.        CALL  CPSPSB;conta pinos caidos e espera 3s cair pinos
  1159.        JR    Z,RMX;"NZ" caiu pinos
  1160.        CALL  REARME
  1161.        LD    A,1;verifica se e primeira bola       
  1162.        CP    (IX+4)        
  1163.        JR    NZ,ROLF1
  1164.        SET   0,(IX+8);ligar LED contador de jogadas ROLF
  1165.        CALL  SEG01
  1166.        CALL  SEG01
  1167.        RES   0,(IX+8)
  1168. ROLF1 :JP    CHEIAX
  1169. RMX   :CALL  TAURUS;se for bola 3 e tiver pino trancado em cima --> rearma
  1170.        LD    A,1;verifica se e primeira bola       
  1171.        CP    (IX+4)        
  1172.        JR    NZ,ROLF1
  1173.        SET   0,(IX+8);ligar LED contador de jogadas ROLF
  1174.        CALL  SEG01
  1175.        CALL  SEG01
  1176.        RES   0,(IX+8)
  1177.        JP    CHEIAX
  1178.  
  1179. ;*****************************************************************************
  1180.  
  1181. ;SE FOR BOLA3 E TER ALGUM PINO TRANCADO, FAZ O REARME E REINICIA A JOGADA
  1182. ;-----------------------------------------------------------------------------
  1183. ;SUB-ROTINA DO JOGO "CHEIA"
  1184. ;--------------------------
  1185. TAURUS:LD    A,(IX+4)
  1186.        CP    1
  1187.        JR    NZ,ROSSI
  1188.        LD    A,(LPIN1)
  1189.        CP    0
  1190.        JR    NZ,RTXU;"NZ" indica pino trancado
  1191.        LD    A,(LPIN2)
  1192.        CP    0
  1193.        JR    NZ,RTXU;"NZ" indica pino trancado
  1194. ROSSI :CALL  SELBOL
  1195.        RET
  1196. RTXU  :CALL  REARME
  1197.        RET
  1198.  
  1199. ;*****************************************************************************
  1200.  
  1201. ;LER TECLA "BANDA" OU "ANULAR" PARA JOGO "CHEIA" (BOLA1 OU 2)
  1202. ;------------------------------------------------------------
  1203. PSTX  :BIT   2,(IX+3);"NZ" jogo "cheia"
  1204.        RET   Z
  1205.        BIT   3,(IX+0);"NZ" tecla "banda" ou "anular" pressionada
  1206.        RET   Z
  1207.        RES   3,(IX+0);desab. indicacao das teclas:banda ou anular
  1208.        BIT   5,(IX+0);"NZ" indica tecla "banda" "Z" "Anular"
  1209.        JR    Z,PASTA
  1210. ;
  1211.        BIT   1,(IX+0);"Z" indica que ja foi pressionado "banda"
  1212.        RET   Z
  1213.        RES   1,(IX+0)
  1214.        LD    A,(LPIN1)
  1215.        CP    0
  1216.        JR    NZ,TOCA;"NZ" indica pino caido ou pino em cima por solenoide
  1217.        LD    A,(LPIN2)
  1218.        CP    0
  1219.        RET   Z
  1220. TOCA  :LD    A,(IX+4)
  1221.        CP    2 ;bola 2
  1222.        JR    NZ,TREP
  1223.        LD    HL,0
  1224.        LD    (LPIN1),HL;zerar ref. dos sensores dos pinos
  1225.        CALL  APP;apaga leds dos pinos no painel
  1226.        CALL  REARME
  1227.        RET
  1228. TREP  :LD    HL,(TYSON);ref. da ultima jogada
  1229.        LD    (LPIN1),HL
  1230.        LD    HL,LPIN1
  1231.        LD    A,(RAB1)
  1232.        CPL
  1233.        AND    (HL)
  1234.        LD    (HL),A
  1235.        INC   HL
  1236.        LD    A,(RAB2)
  1237.        CPL
  1238.        AND   (HL)
  1239.        LD    (HL),A
  1240.        CALL  REARME
  1241.        RET
  1242.          
  1243. ;tecla "Anular"
  1244. PASTA :BIT   6,(IX+0);"Z" indica que ja foi pressionado "anular"
  1245.        RET   Z
  1246.        RES   6,(IX+0)
  1247. RACA  :LD    A,(LPIN1)
  1248.        CP    0
  1249.        JR    NZ,BOCAO;"NZ" indica pino caido ou pino em cima por solenoide
  1250.        LD    A,(LPIN2)
  1251.        CP    0
  1252.        JR    NZ,BOCAO;idem
  1253.        LD    A,(IX+4)
  1254.        CP    2;"Z" bola 2
  1255.        JR    NZ,LIMA
  1256.        LD    (IX+4),1
  1257. XIGU  :CALL  LIGBOL ;localizado no SELBOL
  1258.        RET
  1259. BOCAO :LD    A,(IX+4)
  1260.        CP    2 ;"Z" bola 2
  1261.        JR    NZ,LIMA
  1262.        LD    (IX+4),1
  1263.        LD    HL,0
  1264.        LD    (LPIN1),HL;zerar ref. dos sensores dos pinos
  1265.        CALL  APP;apaga leds dos pinos no painel
  1266.        CALL  REARME
  1267.        JR    XIGU
  1268. LIMA  :CP    3
  1269.        JR    NZ,XIKA
  1270.        LD    (IX+4),2
  1271.        JR    PANE
  1272. XIKA  :LD    (IX+4),3
  1273. ;
  1274. PANE  :LD    HL,(TYSON);ref. da ultima jogada
  1275.        LD    (LPIN1),HL
  1276.        LD    HL,LPIN1
  1277.        LD    A,(RAB1)
  1278.        CPL
  1279.        AND    (HL)
  1280.        LD    (HL),A
  1281.        INC   HL
  1282.        LD    A,(RAB2)
  1283.        CPL
  1284.        AND   (HL)
  1285.        LD    (HL),A
  1286.        CALL  REARME
  1287.        JR    XIGU
  1288.  
  1289.        
  1290. ;*****************************************************************************
  1291.  
  1292.  
  1293. ;                          JOGO LIMPA
  1294. ;                          ----------
  1295. ;                          ----------
  1296. LIMPA :CALL  REXYW;zerar ref. dos sensores dos pinos p/atuar nas solenoides
  1297.        LD    HL,0
  1298.        LD    (RAB1),HL
  1299.        CALL  APP;apaga pinos no painel
  1300.        CALL  REARME
  1301. LIMPAX:LD    SP,PILHA
  1302.        CALL  RESETJ
  1303.        CALL  REGUCOR
  1304.        BIT   1,(IX+3);"NZ" limpa
  1305.        JP    Z,MUDAJO
  1306.        CALL  LPINOS;"NZ" caiu pinos
  1307.        JR    NZ,TEEN
  1308.        BIT   4,(IX+0);"NZ" tecla "rearme"
  1309.        CALL  NZ,REARME
  1310.        BIT   1,(IX+50d);"NZ" indica falha no "S11"
  1311.        JR    NZ,CAPAO
  1312.        CALL  BTXS11;ler "S11" (sensor fim de pista) --> "Z" passou bola
  1313.        JR    Z,TEEN
  1314. CAPAO :CALL  RBAL;verifica teclas "banda ou anular" p/jogo "limpa"
  1315.        JR    LIMPAX
  1316. TEEN  :SET   1,(IX+0);hab. acessar "RBAL" quando pressionar "banda oa anular"
  1317.        CALL  CPSPSB;conta pinos caidos e espera 3s cair pinos/"NZ" caiu pinos
  1318.        JR    Z,LIMPAX
  1319.        CALL  REARME
  1320.        JR    LIMPAX      
  1321.  
  1322. ;rearma se "banda ou anular" p/jogo "limpa"
  1323. RBAL  :BIT   1,(IX+3);"NZ" indica jogo "limpa"
  1324.        RET   Z
  1325.        BIT   3,(IX+0);"NZ" indica que houve "anular" ou "banda"
  1326.        RET   Z
  1327.        RES   3,(IX+0);desab. indicacao de "banda" ou "anular"
  1328.        BIT   1,(IX+0);"Z" indica que ja foi pressionado "banda ou anular"
  1329.        RET   Z
  1330.        RES   1,(IX+0);indica que foi pressionado "banda ou anular"
  1331.        LD    A,(LPIN1)
  1332.        CP    0
  1333.        JR    NZ,BALDE
  1334.        LD    A,(LPIN2)
  1335.        CP    0
  1336.        JR    NZ,BALDE
  1337.        LD    A,(RAB1)
  1338.        CPL
  1339.        LD    (LPIN1),A
  1340.        LD    A,(RAB2)
  1341.        CPL  
  1342.        LD    (LPIN2),A
  1343.        JR    FILTRO
  1344. BALDE :LD    HL,LPIN1
  1345.        LD    A,(RAB1);end. que guarda ref. da ultima jogada dos pinos caidos
  1346.        CPL
  1347.        AND   (HL)
  1348.        LD    (HL),A
  1349.        INC   HL
  1350.        LD    A,(RAB2);end. que guarda ref. da ultima jogada dos pinos caidos
  1351.        CPL
  1352.        AND   (HL)
  1353.        LD    (HL),A
  1354. FILTRO:CALL  ALPLP;acende leds dos pinos para jogo "limpa"      
  1355.        CALL  REARME
  1356.        RET
  1357.          
  1358. ;acende leds dos pinos para jogo "limpa"
  1359. ALPLP :LD    A,(LPIN1)
  1360.        CPL
  1361.        AND   7EH
  1362.        LD    (FONT1),A
  1363.        LD    A,(LPIN2)
  1364.        CPL
  1365.        AND   0FH
  1366.        LD    (FONT2),A
  1367.        RET
  1368.  
  1369. ;*****************************************************************************
  1370.  
  1371.  
  1372. ;                          JOGO TREINO
  1373. ;                          -----------
  1374. ;                          -----------
  1375. TREINO:RES   3,(IX+7);desab falha rotor
  1376.        CALL  REXYW;zerar ref. dos sensores dos pinos p/atuar nas solenoides
  1377.        CALL  APP
  1378.        LD    A,(FONT2)
  1379.        RES   4,A
  1380.        RES   5,A
  1381.        RES   6,A
  1382.        LD    (FONT2),A
  1383.        SET   6,(IX+7);hab. piscar led "bola 1" para indicar que deve  programar
  1384.                      ;o jogo "treino"
  1385. TROX  :BIT   4,(IX+3)
  1386.        JR    NZ,TROX;retem tecla "programa"
  1387.        BIT   2,(IX+1);retem tecla reset
  1388.        JR    NZ,TROX
  1389. TRI   :CALL  TRAIL;ler teclas dos pinos e mostrar no painel o que foi digitado
  1390.        BIT   1,(IX+3);"NZ" jogo "limpa"
  1391.        JP    NZ,MUDAJO
  1392.        BIT   2,(IX+3);"NZ" jogo "cheia"
  1393.        JP    NZ,MUDAJO
  1394.        BIT   2,(IX+1);tecla "reset"
  1395.        JR    NZ,TREINO
  1396.        BIT   4,(IX+3);tecla "programa"
  1397.        JR    NZ,TREINO
  1398.        BIT   4,(IX+0);"NZ" tecla "rearme" pressionada
  1399.        JR    Z,TRI
  1400.        CALL  CFPRG;confer programa das teclas dos pinos
  1401.        JP    NZ,ZIZI;"Z" indica que nao foi programado nada,portanto vao se-
  1402.                     ;rem aceitos todos os pinos p/treino
  1403. THOR  :LD    A,7EH
  1404.        LD    (LPIN1),A
  1405.        LD    (FONT1),A;acende leds dos pinos no painel
  1406.        LD    A,0FH
  1407.        LD    (LPIN2),A
  1408.        LD    C,A
  1409.        LD    A,(FONT2)
  1410.        AND   0F0H
  1411.        OR    C
  1412.        LD    (FONT2),A;acende leds dos pinos no painel
  1413. ZIZI  :CALL  REARME
  1414. TREINX:LD    SP,PILHA
  1415.        LD    A,(FONT2)
  1416.        RES   4,A
  1417.        LD    (FONT2),A
  1418.        RES   6,(IX+7);desab. piscar led "verde"
  1419. TRIZ  :BIT   1,(IX+3);"NZ" jogo "limpa"
  1420.        JP    NZ,MUDAJO
  1421.        BIT   2,(IX+3);"NZ" jogo "cheia"
  1422.        JR    Z,XSP
  1423.        RES   6,(IX+7)
  1424.        LD    A,(LPIN1)
  1425.        CPL
  1426.        AND   7EH
  1427.        LD    (LPIN1),A
  1428.        LD    A,(LPIN2)
  1429.        CPL
  1430.        AND   0FH
  1431.        LD    (LPIN2),A
  1432.        CALL  ALP
  1433.        JP    CHEIAX
  1434. XSP   :BIT   4,(IX+3);"NZ" tecla "programa" pressionada
  1435.        JP    NZ,TREINO
  1436.        BIT   2,(IX+1);tecla "reset"
  1437.        JP    NZ,TREINO
  1438.        CALL  LPINOS;ler pinos --> "NZ" caiu pinos
  1439.        JR    NZ,PEPSI
  1440.        BIT   4,(IX+0);"NZ" tecla "rearme"        
  1441.        CALL  NZ,REARME
  1442.        BIT   1,(IX+50d);"NZ" indica falha no "S11"
  1443.        JR    NZ,TREINX
  1444.        CALL  BTXS11;ler "S11" (sensor fim de pista) --> "Z" passou bola
  1445.        JR    NZ,TREINX
  1446. PEPSI :CALL  CPSPSB;conta pinos caidos e espera 3s cair pinos/"NZ" caiu pinos
  1447.        JR    Z,TREINX
  1448.        CALL  REARME
  1449.        JR    TREINX
  1450.  
  1451. ;confere programa das teclas do jogo "treino"
  1452. CFPRG :LD    A,(LPIN1)
  1453.        CP    0
  1454.        RET   NZ
  1455.        LD    A,(LPIN2)
  1456.        CP    0
  1457.        RET
  1458.  
  1459. ;ler teclas dos pinos p/jogo "TREINO"
  1460. TRAIL :LD    BC,0
  1461.        LD    A,(IX+2);teclas dos pinos 1,2,3,4,5,7 e 9
  1462.        BIT   4,A;tecla do pino 1
  1463.        JR    Z,BB1
  1464.        SET   4,C
  1465. BB1   :BIT   5,A;tecla do pino 2
  1466.        JR    Z,BB2
  1467.        SET   3,C
  1468. BB2   :BIT   1,A;tecla do pino 3
  1469.        JR    Z,BB3
  1470.        SET   5,C
  1471. BB3   :BIT   0,A;tecla do pino 4
  1472.        JR    Z,BB4
  1473.        SET   1,C
  1474. BB4   :BIT   3,A;tecla do pino 5
  1475.        JR    Z,BB5
  1476.        SET   6,C
  1477. BB5   :BIT   6,(IX+3);tecla do pino 6
  1478.        JR    Z,BB6
  1479.        SET   1,B
  1480. BB6   :BIT   6,A;tecla do pino 7
  1481.        JR    Z,BB7
  1482.        SET   3,B
  1483. BB7   :BIT   0,(IX+3);tecla do pino 8
  1484.        JR    Z,BB8
  1485.        SET   2,C
  1486. BB8   :BIT   2,A;tecla do pino 9
  1487.        JR    Z,BB9
  1488.        SET   0,B
  1489. BB9   :BIT   5,(IX+3);tecla do pino 10
  1490.        JR    Z,BB10
  1491.        SET   2,B
  1492. BB10  :LD    A,(LPIN1)
  1493.        OR    C
  1494.        LD    (LPIN1),A
  1495.        LD    A,(LPIN2)
  1496.        OR    B
  1497.        LD    (LPIN2),A
  1498.        CALL  ALP;acende leds dos pinos no painel
  1499.        RET
  1500.  
  1501. ;*****************************************************************************
  1502.  
  1503.  
  1504. ;HABILITA PISCAR TODOS LEDS DOS PINOS NO PAINEL P/NMI QUANDO HOUVER "STRACK"
  1505. ;---------------------------------------------------------------------------
  1506. STRACK:BIT   1,(IX+3);"NZ jogo "limpa"  
  1507.        JR    NZ,STX1
  1508.        BIT   2,(IX+3);"NZ" cheia
  1509.        JR    Z,TREK
  1510.        LD    A,(FONT1)
  1511.        CP    7EH
  1512.        RET   NZ
  1513.        LD    A,(FONT2)
  1514.        AND   0FH
  1515.        CP    0FH
  1516.        RET   NZ
  1517.        LD    A,(IX+4)
  1518.        CP    1
  1519.        RET   Z
  1520.        JR    INDY
  1521. TREK  :IN    A,(IN2);ler referencia dos sensores dos pinos "S1 a S5" e "S8"
  1522.        CP    0FFH; "Z" indica que caiu todos estes pinos
  1523.        RET   NZ
  1524.        IN    A,(IN1)
  1525.        BIT   3,A;sensor do pino 7
  1526.        RET   Z      
  1527.        BIT   4,A;sensor do pino 10
  1528.        RET   Z
  1529. INDY  :SET   1,(IX+7);strack --> pisca todos leds dos pinos
  1530.        BIT   1,(IX+3);"NZ" jogo "limpa"
  1531.        JR    NZ,STX0
  1532.        BIT   2,(IX+3);"NZ" jogo "cheia" / "Z" jogo "treino"
  1533.        RET   Z
  1534. STX0  :LD    (IX+4),1;inicializa numero da bola apos o strike
  1535.        CALL  REXYW
  1536.        RET
  1537. STX1  :LD    A,(LPIN2)
  1538.        CP    0FH;"Z" caiu pinos 6,7,9 e 10
  1539.        RET   NZ
  1540.        LD    A,(LPIN1)
  1541.        CP    7EH;"Z" caiu os pinos 1 a 5 e 8
  1542.        JR    Z,INDY
  1543.        RET
  1544.  
  1545. ;*****************************************************************************
  1546.  
  1547.  
  1548. ;LER "S11" (sensor fim de pista) DURANTE TEMPO DE ALGUMAS NMI CONTINUO PARA E-
  1549. ;-----------------------------------------------------------------------------
  1550. ;VITAR RUIDOS NO "S11" --> "Z" INDICA QUE PASSOU BOLA (NAO HOUVE RUIDO)
  1551. ;----------------------------------------------------------------------
  1552. BTXS11:CALL  BTS11;ler "S11"
  1553.        RET   NZ
  1554.        LD    HL,12d
  1555.        LD    (CONTG),HL
  1556.        SET   7,(IX+7);ativa time na NMI
  1557. TOCAIA:CALL  BTS11
  1558.        RET   NZ
  1559.        BIT   7,(IX+7);"Z" indica fim de time
  1560.        JR    NZ,TOCAIA
  1561.        RET
  1562.  
  1563. ;*****************************************************************************
  1564.  
  1565. ;MUDA SELECAO DE JOGO
  1566. ;--------------------
  1567. MUDAJO :RES   6,(IX+7)
  1568.         CALL  TEMP1
  1569.         BIT   1,(IX+3);"NZ" jogo "limpa"
  1570.         JP    NZ,LIMPA
  1571.         BIT   2,(IX+3);"NZ" jogo "cheia"
  1572.         JP    NZ,CHEIA
  1573.         JP    TREINO;jogo "treino"
  1574.            
  1575. ;*****************************************************************************
  1576.  
  1577. ;REARME P/INICIALIZACAO DA MAQUINA
  1578. ;---------------------------------
  1579. REARMI :RES   0,(IX+0)
  1580.         RES   3,(IX+7)
  1581.         SET   1,(IX+8);ligar rele p/subir
  1582.         LD    HL,1024
  1583.         LD    (CONTG),HL
  1584.         SET   7,(IX+7)
  1585. XYI    :BIT   7,(IX+7)
  1586.         JR    Z,JKO
  1587.         BIT   0,(IX+0)
  1588.         JR    Z,XYI;"NZ" motor parado
  1589.         CALL  DESLMT
  1590.         SET   2,(IX+8);ligar rele p/descer
  1591.         LD    HL,1024
  1592.         LD    (CONTG),HL
  1593.         SET   7,(IX+7)
  1594. VYI    :BIT   7,(IX+7)
  1595.         JR    Z,NJU
  1596.         BIT   0,(IX+0)
  1597.         JR    NZ,VYI;"NZ" motor parado
  1598.         CALL  DESLMT
  1599.         SET   1,(IX+8);subir
  1600. JKO    :BIT   0,(IX+0);"NZ" parou rotor
  1601.         JR    Z,JKO
  1602.         LD    HL,200  ;quase 0.2 segundos de espera (so no inicio)
  1603.         LD    (CONTG),HL
  1604.         SET   7,(IX+7)
  1605. ROROI  :BIT   7,(IX+7)
  1606.         JR    NZ,ROROI
  1607.         CALL  DESLMT
  1608.         RES   0,(IX+0)
  1609.         XOR   A
  1610.         LD    (S13),A
  1611.         LD    C,SENTADA
  1612.         CALL  CPMD
  1613.         CALL  ZERASX
  1614.         IN    A,(IN1)
  1615.         BIT   5,A
  1616.         JR    NZ,YOD
  1617.         LD    C,CORMIN
  1618.         JR    JOJD
  1619. YOD    :LD    C,CORMAX
  1620. JOJD   :CALL  CPMD
  1621.         CALL  FODAKU
  1622.         CALL  DESLMT
  1623.         RET
  1624. NJU    :CALL  DESLMT;desliga motor
  1625.         CALL  ZERASX
  1626.         RES   3,(IX+7);desab. falha rotor
  1627.         RES   0,(IX+0);desab. falha rotor
  1628.         SET   2,(IX+7);hab. piscar led falha S13
  1629.         SET   4,(IX+50);hab. piscar led servico de maquina
  1630.         CALL  XUCA;sinal vermelho / desliga reles / zera "S1 a S10"
  1631.         CALL  ZORRA;ler tecla e pinos --> se pressionar tecla ou cair pinos ira
  1632.                    ;retornar
  1633.         RES   2,(IX+7)
  1634.         RES   4,(IX+50)
  1635.         JP    REARMI
  1636.  
  1637. ;****************************************************************************
  1638.  
  1639.  
  1640.  
  1641. ;                     SUBIR PINOS
  1642. ;                     -----------
  1643. ;                     -----------
  1644.  
  1645. SUBIR :LD    HL,TABGRU
  1646.        LD    (CABOU),HL
  1647.        LD    D,2
  1648.        LD    E,3; 2 x 3 = 6
  1649.        CALL  CPMS;subir pinos
  1650.        RET   Z;"NZ" pinos em cima (OK) - "Z" pinos enlinhados ou falha rotor
  1651. ;quando pinos enlinhados ou falha rotor
  1652.         LD    A,(S13)
  1653.         CP    INENL;valor aproximado p/inicio de enlinhamento
  1654.         JP    NC,PARE13
  1655.         CALL  DESLMT
  1656.         LD    C,DESENL1
  1657.         JR    APTO
  1658. DNOVO  :CALL  CPMS
  1659.         RET   Z
  1660. APTO   :RES   3,(IX+7)
  1661.         SET   7,(IX+8);rele p/solenoides
  1662.         CALL  GRUSOL;aciona grupo de solenoides
  1663.         CALL  CPMD
  1664.         CALL   ZSOL;zera solenoides
  1665.         RES   7,(IX+8);desliga rele para solenoide (R3)
  1666.         CALL  DESLMT
  1667.         LD    C,DESENL2
  1668.         DEC   E
  1669.         JP    NZ,DNOVO
  1670.         LD    E,3
  1671.         SET   4,(IX+50d);hab. piscar led "servico de maquina"
  1672.         DEC   D;contador de vezes p/desenlinhar pinos
  1673.         JP    NZ,DNOVO
  1674.         IN    A,(IN1)
  1675.         BIT   5,A
  1676.         JR    NZ,YUU
  1677.         LD    C,CORMIN
  1678.         JR    NJKL
  1679. YUU    :LD    C,CORMAX
  1680. NJKL   :CALL  CPMD  
  1681.         CALL  DESLMT;desliga reles / tempo=0.5 seg.
  1682.         CALL  ZSOL;zerar solenoides
  1683.         CALL  ZERASX;zerar "S1 a S10" / tempo=2 NMI / volta "S1 a S10" normal
  1684. PARAR  :CALL  LPINOS;"NZ" indica que caiu pinos
  1685.         JP    NZ,SUBIR
  1686.         BIT   4,(IX+0);"NZ" tecla rearme pressionada
  1687.         JP    NZ,SUBIR
  1688.         JR    PARAR
  1689.  
  1690. ;*****************************************************************************
  1691.  
  1692. ;SUBIR PINOS
  1693. ;SAIDA:"NZ"--> CONTADOR "S13" < 0+DELTA INDICA FALHA ROTOR OU PINOS ENLINHADOS
  1694. ;      "Z" --> CONTADOR "S13" > OU = 0+DELTA INDICA PINOS EM CIMA - OK
  1695. ;---------------------
  1696. CPMS   :RES   5,(IX+7);hab. decrementar "S13"
  1697.         SET   1,(IX+8);ligar rele p/subir
  1698. XY     :CALL  RESETJ
  1699.         BIT   0,(IX+0)
  1700.         JR    Z,XY
  1701.         LD    A,(S13)
  1702.         CP    0
  1703.         JR    Z,BEL
  1704.         CP    DELTA; valor de S13 - DELTA
  1705.         JR    NC,ROLAO
  1706. BEL    :CALL  DESLMT
  1707.         XOR   A
  1708.         LD    (S13),A ;zera contador cm corda
  1709.         SET   5,(IX+7)
  1710. ;        PUSH  HL
  1711. ;        LD    HL,512
  1712. ;        LD    (CONTG),HL
  1713. ;        POP   HL
  1714. ;        SET   7,(IX+7)
  1715. ;RORO   :CALL  RESETJ
  1716. ;        BIT   7,(IX+7)
  1717. ;        JR    NZ,RORO
  1718.         RES   3,(IX+7)
  1719.         RES   0,(IX+0)
  1720.         XOR   A;"Z" pino nao enlinhado (rotor OK)
  1721.         RET
  1722. ROLAO  :CALL  DESLMT ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1723.         SET   5,(IX+7) ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1724. ;        PUSH  HL
  1725. ;        LD    HL,1024
  1726. ;        LD    (CONTG),HL
  1727. ;        POP   HL
  1728. ;        SET   7,(IX+7)
  1729. ;RLM    :BIT   0,(IX+0)
  1730. ;        JR    Z,XY  
  1731. ;        BIT   7,(IX+7)
  1732. ;        JR    NZ,RLM
  1733.         RES   3,(IX+7)
  1734.         RES   0,(IX+0)
  1735.         OR    1;"NZ" falha rotor ou pino enlinhado
  1736.         RET
  1737.  
  1738. ;*****************************************************************************
  1739.  
  1740. ;ACIONA GRUPO DE SOLENOIDES POR TABELA
  1741. ;-------------------------------------
  1742. ;ENTRADA: HL = TABELA
  1743. ;---------------------
  1744. GRUSOL :LD    HL,(CABOU)
  1745.         LD    A,(HL)
  1746.         AND   7EH
  1747.         LD    (FONT3),A
  1748.         INC   HL
  1749.         LD    A,(HL)
  1750.         AND   0BH
  1751.         LD    (FONT4),A
  1752.         INC   HL
  1753.         LD    (CABOU),HL
  1754.         RET
  1755.  
  1756. ;#############################################################################
  1757.  
  1758.  
  1759. ;                        DESCER PINOS
  1760. ;                        ------------
  1761. ;                        ------------
  1762.  
  1763. DESCER:RES   4,(IX+50d);desab. piscada led "servico de maquina"
  1764.        CALL  SELBOL;seleciona bola 1 ou 2
  1765.        CALL  VERB2;verifica se arremecou bola 3 p/descer todos pinos
  1766.        RES   1,(IX+7);desab. piscar "strike"
  1767.        LD    C,5
  1768.        CALL  CPMD;descer ate 1cm p/ligar ou nao rele3
  1769.        CALL  GOE; ver se caiu todos pinos p/ zerar referencia dos sensores dos
  1770.                 ; pinos, e ligar rele 3 caso tenha que ligar as solenoides
  1771.        LD    C,14
  1772.        CALL  CPMD
  1773.        CALL  LIGSOL
  1774.        LD    C,25
  1775.        CALL  CPMD;descer ate 20cm
  1776.        CALL  ZSOL;zerar solenoides
  1777.        LD    C,30
  1778.        CALL  CPMD;descer ate 25cm p/desligar depois rele3
  1779.        LD    C,SENTADA
  1780.        CALL  CPMD
  1781.        CALL  APLED;apaga lampadas dos pinos se for bola 1
  1782.        CALL  ZERASX;zerar S1 a S10 / tempo=2 NMI / volta S1 a S10 normal
  1783.        CALL  FODAKU
  1784.        IN    A,(IN1)
  1785.        BIT   5,A
  1786.        JR    NZ,YOO
  1787.        LD    C,CORMIN
  1788.        JR    JOJO
  1789. YOO   :LD    C,CORMAX
  1790. JOJO  :CALL  LPINOS;"NZ" caiu pinos
  1791.        JR    NZ,DRAGON
  1792.        BIT   4,(IX+0);"NZ" tecla rearme
  1793.        JR    NZ,DRAGON
  1794.        BIT   3,(IX+7);"NZ" falha S13
  1795.        JP    NZ,PARE13
  1796.        LD    A,(S13)
  1797.        CP    C
  1798.        JR    C,JOJO
  1799.        CALL  DESLMT
  1800.        RET
  1801. DRAGON:CALL  DESLMT
  1802.        CALL  SUBIR
  1803.        CALL  DESLMT
  1804.        JP    DESCER
  1805.  
  1806. ;zerar referencia dos sensores dos pinos se derrubarem todos,
  1807. ;ligar rele 3 caso tenha que ligar depois as solenoides
  1808. GOE   :LD    A,(LPIN1);referencia dos sensores dos pinos "S1 a S5" e "S8"
  1809.        CP    7EH; "Z" indica que estes pinos cairam
  1810.        JR    NZ,CASIO
  1811.        LD    A,(LPIN2);referencia dos sensores dos pinos "S6,S7,S9 e S10"
  1812.        CP    0FH; "Z" indica que estes pinos cairam
  1813.        RET   Z
  1814. CASIO :LD    A,(LPIN1)
  1815.        CP    0
  1816.        JR    NZ,REX; "Z" indica que nao caiu pinos ("S1 a S5" e "S8")
  1817.        LD    A,(LPIN2)
  1818.        CP    0
  1819.        RET   Z; "Z" indica que nao caiu pinos ("S6,S7 e S9")
  1820. REX   :SET   7,(IX+8);ligar rele3 p/evitar queimar solenoides caso haja algum
  1821.                      ;pane no micro
  1822.        RET
  1823.  
  1824. ;zerar sensores dos pinos "S1 a S10" / tempo=0.5 seg. / volta S1 a S10 normal
  1825. ZERASX:SET   3,(IX+8);zerar S1 a S10
  1826.        CALL  INT2;tempo=2 NMI
  1827.        RES   3,(IX+8);volta S1 a S10 normal
  1828.        RET  
  1829.  
  1830. ;apaga lampadas dos pinos se for bola 1
  1831. ;---------------------------------------
  1832. APLED :BIT   2,(IX+3);"NZ" cheia
  1833.        RET   Z
  1834.        LD    A,(IX+4)
  1835.        CP    1
  1836.        RET   NZ
  1837.        CALL  APP
  1838.        RET
  1839.        
  1840. ;verifica se acende ou nao as lampadas dos pinos do painel de acordo com o jo-
  1841. ;go selecionado na chave de selecao
  1842. FODAKU:BIT   1,(IX+3);"NZ" jogo "limpa"
  1843.        JR    Z,FD1
  1844.        CALL  ALPLP;acende leds dos pinos p/jogo "limpa"
  1845.        RET
  1846. FD1   :BIT   2,(IX+3);"NZ" jogo "cheia" / "Z" jogo "treino"
  1847.        JR    Z,FD2
  1848.        CALL  ALP
  1849.        RET
  1850. FD2   :CALL  TRAIL
  1851.        RET
  1852.  
  1853.  
  1854. ;SELECAO DO NUMERO DA JOGADA: BOLA1, BOLA2 OU BOLA3
  1855. ;--------------------------------------------------
  1856. ;QUANDO PASSAR BOLA NO "S11" OU CAIR PINOS
  1857. ;-----------------------------------------
  1858. SELBOL:BIT   0,(IX+50);"NZ" hab. acessar selecao de jogada
  1859.        RET   Z
  1860.        RES   0,(IX+50);desab. caso haja uma rearme que nao seja jogada
  1861.        BIT   1,(IX+7);"NZ" strike
  1862.        JR    Z,LIGBOL
  1863.        RES   1,(IX+7)
  1864.        JR    GTX
  1865. LIGBOL:LD    A,(IX+4)
  1866.        CP    2
  1867.        JR    NC,BOL2
  1868. GTX   :LD    A,(FONT2)
  1869.        SET   4,A
  1870.        RES   5,A
  1871.        RES   6,A
  1872. BL    :LD    (FONT2),A
  1873.        RET
  1874. BOL2  :CP    3
  1875.        JR    NC,BOL3
  1876.        LD    A,(FONT2)
  1877.        SET   6,A
  1878.        RES   5,A
  1879.        RES   4,A
  1880.        JR    BL
  1881. BOL3  :LD    A,(FONT2)
  1882.        SET   5,A
  1883.        RES   4,A
  1884.        RES   6,A
  1885.        JR    BL
  1886.  
  1887. ;verificar se ultima bola foi arremecada p/poder descer todos os pinos
  1888. VERB2 :BIT   2,(IX+3);"NZ" cheia
  1889.        RET   Z
  1890.        LD    A,(IX+4)
  1891.        CP    2
  1892.        RET   NC
  1893.        XOR   A
  1894. ;zerar referencia de pinos p/baixar todos pinos quando acionar solenoides
  1895.        LD    (LPIN1),A;"P1 a P5" e "P8"
  1896.        LD    (LPIN2),A;"P6,P7,P9 e P10"
  1897.        RET
  1898.  
  1899.  
  1900. ;#############################################################################
  1901.  
  1902.  
  1903. ;COMPARACAO DO CM DA CORDA QUANDO DESCER PINOS
  1904. ;---------------------------------------------
  1905. ;OBS: IDEM A ANTERIOR (CPMS)
  1906. ;---------------------------
  1907. CPMD  :SET   5,(IX+7);habilita incrementar (S13)
  1908.        SET   2,(IX+8);descer pinos
  1909. ZZ    :CALL  RESETJ
  1910.        BIT   3,(IX+7);"NZ" indica falha no "S13"
  1911.        JP    NZ,PARE13
  1912.        LD    A,(S13);contador do cm da corda
  1913.        CP    C
  1914.        JR    C,ZZ;"NC" quando (S13) atingir valor maior que o determinado (OK)
  1915.        RET
  1916.  
  1917. ;#############################################################################
  1918.  
  1919.  
  1920. ;REARME NORMAL
  1921. ;-------------
  1922. REARME:CALL  SUBIR;subir pinos
  1923.        CALL  DESLMT
  1924.        CALL  DESCER;descer pinos
  1925.        RET
  1926.  
  1927. ;#############################################################################
  1928.  
  1929.  
  1930. ;ROTINAS DE TEMPO
  1931. ;----------------
  1932.  
  1933. ; meio segundo
  1934. MEIO  :EXX
  1935.        LD    HL,512d;tempo p/0.5 seg.
  1936. TP    :LD    (CONTG),HL;contador p/tempo geral
  1937.        EXX
  1938.        SET   7,(IX+7);habilita a acessar "TIME" na NMI
  1939. BT    :CALL  RESETJ
  1940.        BIT   7,(IX+7);"Z" indica fim do time
  1941.        JR    NZ,BT
  1942.        RET
  1943.  
  1944. ; 2 interrup.
  1945. INT2  :EXX
  1946.        LD    HL,2
  1947.        JR    TP
  1948.  
  1949. ; 1 segundo
  1950. TEMP1 :EXX
  1951.        LD    HL,1024d
  1952.        JR    TP
  1953.  
  1954. ;2 segundos
  1955. TEMP2 :EXX
  1956.        LD    HL,2048d
  1957.        JR    TP
  1958.  
  1959. ; 0.1 segundos
  1960. SEG01 :EXX
  1961.        LD    HL,100d
  1962.        JR    TP
  1963.  
  1964. ;*****************************************************************************
  1965.  
  1966. ;REGULAGEM DO CORDAO POR BOTAO
  1967. ;-----------------------------
  1968. REGUCOR:BIT   6,(IX+50);ref. p/saber qual sinal indica botao pressionado
  1969.         JR    NZ,NIVEL
  1970.         CALL  BOTAOR;"NZ" pressionou botao
  1971.         RET   Z
  1972.         JR    MEDIO
  1973. NIVEL  :CALL  BOTAOR;"Z" pressionou botao
  1974.         RET   NZ
  1975. MEDIO  :LD    SP,PILHA
  1976.         CALL  DESLMT
  1977.         CALL  CPMS;"Z" indica pinos em cima / "NZ" problemas
  1978.         CALL  DESLMT
  1979.         BIT   6,(IX+50);ref. p/saber qual sinal indica botao pressionado
  1980.         JR    NZ,NIVKK
  1981. REGX   :CALL  BOTAOR;"NZ" pressionou botao
  1982.         JR    Z,REGX
  1983.         LD    HL,3000
  1984.         LD    (CONTG),HL
  1985.         SET   7,(IX+7)
  1986. GUNSKY :CALL  BOTAOR;"Z" pressionou botao
  1987.         JR    Z,FREE
  1988.         BIT   7,(IX+7)
  1989.         JR    NZ,GUNSKY
  1990.         JR    FREE
  1991. NIVKK  :CALL  BOTAOR;"Z" pressionou botao
  1992.         JR    NZ,NIVKK
  1993.         LD    HL,3000
  1994.         LD    (CONTG),HL
  1995.         SET   7,(IX+7)
  1996. GUNSX  :CALL  BOTAOR;"Z" pressionou botao
  1997.         JR    NZ,FREE
  1998.         BIT   7,(IX+7)
  1999.         JR    NZ,GUNSX
  2000. FREE   :CALL  DESCER
  2001.         BIT   1,(IX+3);"NZ" jogo "limpa"
  2002.         JP    NZ,LIMPAX
  2003.         BIT   2,(IX+3);"NZ" jogo "cheia"
  2004.         JP    NZ,CHEIAX
  2005.         JP    TREINX;jogo "treino"
  2006.  
  2007. ;CORRIGE SINAL DO BOTAO DE REGULAGEM DOS CORDOES
  2008. ;-----------------------------------------------
  2009. CHAINI:CALL  BOTAOR
  2010.        JR    NZ,VYKA
  2011.        RES   6,(IX+50)
  2012.        RET
  2013. VYKA  :SET   6,(IX+50)
  2014.        RET
  2015.  
  2016. BOTAOR:IN    A,(IN1)
  2017.        BIT   6,A
  2018.        RET
  2019.  
  2020. ;****************************************************************************
  2021.  
  2022. ;DESLIGA RELE1 E RELE2 / TEMPO=0.5 SEG.
  2023. ;--------------------------------------
  2024. DESLMT:SET   3,(IX+50d);indica p/sub-rotina "TRANSI" p/nao ligar novamente o
  2025.                        ;transistor enquanto rele 1 ou 2 tiver ligado
  2026. ;       RES   0,(IX+8);desliga transistor p/rele 1 e 2
  2027.        CALL  SEG01 ;0.1 seg.
  2028.        RES   3,(IX+50d);indica p/"TRANSI" que pode voltar ao normal
  2029.        RES   1,(IX+8);desliga rele1
  2030.        RES   2,(IX+8);desliga rele2
  2031.        CALL  SEG01;0.1 seg.
  2032.        RES   3,(IX+7);indica "S13" OK
  2033.        RET
  2034.  
  2035.  
  2036. ;#############################################################################
  2037.  
  2038.  
  2039. ;ACIONA SOLENOIDES P/TRANCAR PINOS QUE CAIRAM, OU NAO
  2040. ;----------------------------------------------------
  2041. LIGSOL:LD    A,(LPIN1);referencia dos sensores dos pinos ("S1 a S5" e "S8") em
  2042.                       ;relacao a ultima jogada
  2043.        LD    B,A
  2044.        LD    A,(LPIN2);referencia dos sensores dos pinos ("S6,S7,S9 e S10")
  2045.        AND   0FH
  2046.        LD    C,A
  2047.        BIT   1,(IX+3);"NZ" jogo "limpa"
  2048.        JR    NZ,LG1
  2049.        BIT   2,(IX+3);"NZ" jogo "cheia" / "Z" jogo "treino"
  2050.        JR    Z,LG2
  2051. LG1   :LD    A,B
  2052.        AND   7EH
  2053.        LD    (FONT3),A;aciona respectivas solenoides ("SOL1 a SOL5" e "SOL8")
  2054.        LD    A,C
  2055.        AND   0FH
  2056.        LD    (FONT4),A;aciona respectivas solenoides("SOL6,SOL7,SOL9 e SOL10")
  2057.        RET
  2058. LG2   :LD    A,B
  2059.        CPL
  2060.        LD    B,A
  2061.        LD    A,C
  2062.        CPL
  2063.        LD    C,A
  2064.        JR    LG1
  2065.  
  2066. ;#############################################################################
  2067.  
  2068.  
  2069. ;ZERAR SOLENOIDES P/NAO QUEIMAREM
  2070. ;--------------------------------
  2071. ZSOL  :XOR   A
  2072.        LD    (FONT3),A;zerar "SOL1 a SOL5" e "SOL8"
  2073.        LD    A,(FONT4)
  2074.        AND   20H
  2075.        LD    (FONT4),A;zerar "SOL6,SOL7,SOL9 e SOL10"
  2076.        RES   7,(IX+8);desliga rele3 (mesmo que nao tenha sido ligado)
  2077.        RET
  2078.  
  2079. ;#############################################################################
  2080.  
  2081. ;LEITURA DOS SENSORES DE PINOS CAIDOS P/MOSTRAR NO PAINEL E SABER SE CAIRAM
  2082. ;--------------------------------------------------------------------------
  2083. LERPIN:LD    HL,0;referencia dos sensores "S1 a S10"
  2084.        IN    A,(IN1);ler "S7" no bit 3
  2085.        LD    C,A;salva no reg. C
  2086.        IN    A,(IN2);ler "S1 a S6","S8" e "S9"
  2087.        BIT   3,A;  "S4"
  2088.        JR    Z,PM1
  2089.        SET   1,L; posicao do "S4" p/painel
  2090. PM1   :BIT   1,A;  "S8"
  2091.        JR    Z,PM2
  2092.        SET   2,L; posicao do "S8" p/painel
  2093. PM2   :BIT   4,A;  "S2"
  2094.        JR    Z,PM3
  2095.        SET   3,L; posicao do "S2" p/painel
  2096. PM3   :BIT   5,A;  "S1"
  2097.        JR    Z,PM4
  2098.        SET   4,L; posicao do "S1" p/painel
  2099. PM4   :BIT   0,A;  "S5"
  2100.        JR    Z,PM5
  2101.        SET   6,L; posicao do "S5" p/painel
  2102. PM5   :BIT   6,A;  "S3"
  2103.        JR    Z,PM6
  2104.        SET   5,L; posicao do "S3" p/painel
  2105. PM6   :BIT   2,A; "S9"
  2106.        JR    Z,PM7
  2107.        SET   0,H; posicao do "S9" p/painel
  2108. PM7   :BIT   7,A;  "S6"
  2109.        JR    Z,PM8
  2110.        SET   1,H; posicao do "S6" p/painel
  2111. PM8   :BIT   3,C;  "S7"
  2112.        JR    Z,PM9
  2113.        SET   3,H; posicao do "S7" p/painel
  2114. PM9   :BIT   4,C;"S10"
  2115.        JR    Z,TRUS
  2116.        SET   2,H;posicao do "S10" p/painel
  2117. TRUS  :LD    (RAB1),HL;guarda referencia da ultima jogada p/jogo "limpa"
  2118.        BIT   1,(IX+3);"NZ" jogo "limpa"
  2119.        JR    NZ,KIKO
  2120.        BIT   2,(IX+3);"NZ" jogo "cheia" / "Z" jogo "treino"
  2121.        JR    Z,PIKA
  2122. KIKO  :LD    A,(LPIN1)
  2123.        OR    L
  2124.        AND   7EH
  2125.        LD    (LPIN1),A
  2126.        LD    A,(LPIN2)
  2127.        OR    H
  2128.        AND   0FH
  2129.        LD    (LPIN2),A
  2130.        LD    DE,(LPIN1)
  2131.        LD    A,D
  2132.        OR    E
  2133.        CP    0
  2134.        JR    Z,XALE
  2135.        LD    (TYSON),DE;guarda ref. da ultima jogada dos pinos p/jogo "cheia"
  2136.                        ;usado na sub-rotina "PSTX"
  2137. XALE  :BIT   1,(IX+3);"NZ" jogo "limpa"
  2138.        JR    Z,BIKU
  2139.        CALL  ALPLP;acende leds dos pinos para jogo "limpa"
  2140.        RET
  2141. BIKU  :CALL  ALP;acende leds dos pinos para jogo "cheia"
  2142.        RET
  2143.  
  2144. ;acende leds dos pinos para jogo "treino"
  2145. PIKA  :PUSH  BC
  2146.        LD    A,L
  2147.        CPL
  2148.        LD    L,A
  2149.        LD    A,(LPIN1)
  2150.        AND   L
  2151.        LD    (FONT1),A
  2152.        LD    A,H
  2153.        CPL
  2154.        LD    H,A
  2155.        LD    A,(LPIN2)
  2156.        AND   H
  2157.        LD    C,A
  2158.        LD    A,(FONT2)
  2159.        AND   0F0H
  2160.        OR    C
  2161.        LD    (FONT2),A
  2162.        CALL  STRACK
  2163.        POP   BC
  2164.        RET
  2165.  
  2166. ;*****************************************************************************
  2167.  
  2168. ;LER SENSORES DOS PINOS SEM ALTERAR ENDERECOS DE REFERENCIA "LPIN1" E "LPIN2"
  2169. ;----------------------------------------------------------------------------
  2170. LPINOS:IN    A,(IN1)
  2171.        BIT   3,A; "NZ" indica pino 7 caido
  2172.        RET   NZ
  2173.        BIT   4,A;"NZ" indica pino 10 caido
  2174.        RET   NZ
  2175.        IN    A,(IN2);ler sensores "S1 a S6" e "S8,S9"
  2176.        CP    0; "NZ" indica pinos caidos
  2177.        RET
  2178.  
  2179. ;*****************************************************************************
  2180.  
  2181. ;ACENDE LEDS DOS PINOS NO PAINEL P/"CHEIA"
  2182. ;-----------------------------------------
  2183. ALP   :LD    A,(LPIN1);referencia dos sensores dos pinos lidos
  2184.        AND   7EH;manter bits "7" e "0" c/"0" p/sincronismo da saida
  2185.        LD    (FONT1),A; envia o valor p/painel
  2186.        LD    A,(LPIN2);referencia dos sensores dos pinos lidos
  2187.        AND   0FH;manter bits "4 a 7" zerados (nada existe)
  2188.        LD    C,A;salva
  2189.        LD    A,(FONT2)
  2190.        AND   0F0H;anula os leds dos pinos anteriores do painel
  2191.        OR    C;pega os bits dos leds de pinos atuais
  2192.        LD    (FONT2),A;envia o valor p/painel
  2193.        RET
  2194.  
  2195. ;#############################################################################
  2196.  
  2197. ;DAR STOP NO PROGRAMA POR FALHA "S13" (CM DA CORDA)
  2198. ;--------------------------------------------------
  2199. PARE13:LD    SP,PILHA
  2200.        CALL  DESLMT;desliga motor
  2201.        RES   3,(IX+7);desab. falha rotor
  2202.        SET   2,(IX+7);hab. piscar led falha S13
  2203.        SET   4,(IX+50);hab. piscar led servico de maquina
  2204.        CALL  XUCA;sinal vermelho / desliga reles / zera "S1 a S10"
  2205.        CALL  ZORRA;ler tecla e pinos --> se pressionar tecla ou cair pinos ira
  2206.                   ;retornar
  2207.        RES   2,(IX+7)
  2208.        RES   4,(IX+50)
  2209.        CALL  REARMI
  2210.        BIT   1,(IX+3);"NZ" jogo "limpa"
  2211.        JP    NZ,LIMPAX
  2212.        BIT   2,(IX+3);"NZ" jogo "cheia"
  2213.        JP    NZ,CHEIAX
  2214.        JP    TREINX;jogo "treino"
  2215.  
  2216. ;
  2217. XUCA  :CALL  DESLMT;desliga reles / tempo=0.5 seg.
  2218.        SET   3,(IX+8);zerar S1 a S10
  2219.        CALL  INT2; tempo=2 NMI
  2220.        RES   3,(IX+8);volta S1 a S10 normal
  2221.        CALL  ZSOL;zera solenoides para evitar queimar caso tenham sido ligadas
  2222.        RES   7,(IX+8);desliga rele 3, que e usado junto com as solenoides
  2223.        RET
  2224.  
  2225. ZORRA :BIT   4,(IX+0);"NZ" tecla rearme pressionada
  2226.        RET   NZ    
  2227. ZORR  :CALL  LPINOS;ler sensores dos pinos s/alterar enderecos de ref.
  2228.        RET   NZ
  2229.        CALL  RESETJ
  2230.        JR    ZORRA
  2231.  
  2232. ;*****************************************************************************
  2233.  
  2234.  
  2235. ;TEMPO P/MOSTRAR PINOS CAINDO
  2236. ;----------------------------
  2237. TPVEL :IN    A,(IN1)
  2238.        BIT   7,A
  2239.        JR    NZ,TYJU
  2240.        LD    HL,ESPMIN
  2241.        JR    TUKO
  2242. TYJU  :LD    HL,ESPMAX
  2243. TUKO  :LD    (CONTG),HL
  2244.        SET   7,(IX+7);aciona contagem do "TIME" na NMI
  2245. TPVX  :CALL  LERPIN;ler pinos e coloca na memoria
  2246.        CALL  STRACK
  2247. BITH  :BIT   1,(IX+7);"NZ" houve "strack"
  2248.        RET   NZ
  2249.        BIT   7,(IX+7);"Z" indica fim de time
  2250.        JR    NZ,TPVX
  2251.        RET
  2252.  
  2253. ;*****************************************************************************
  2254.  
  2255.  
  2256. ;ZERAR REFERENCIA DOS SENSORES DOS PINOS PARA ATUAR NAS SOLENOIDES NA DESCIDA
  2257. ;----------------------------------------------------------------------------
  2258. ;E REFERENCIA DO JOGO "LIMPA" E "TREINO"
  2259. ;---------------------------------------
  2260. REXYW :LD    HL,0
  2261.        LD    (LPIN1),HL
  2262. ;       LD    (RAB1),HL
  2263.        RET
  2264.  
  2265. ;*****************************************************************************
  2266.  
  2267. ;LER TECLA RESET P/JOGOS
  2268. ;-----------------------
  2269. RESETJ:BIT   7,(IX+0);"NZ" houve reset
  2270.        RET   Z
  2271.        LD    SP,PILHA
  2272.        BIT   1,(IX+3);"NZ" limpa
  2273.        JP    NZ,LIMPA
  2274.        BIT   2,(IX+3);"NZ" cheia
  2275.        JP    NZ,CHEIA2
  2276.        JP    TREINO
  2277. CHEIA2:SET   0,(IX+8);ligar LED contador de jogadas ROLF
  2278.        CALL  SEG01
  2279.        CALL  SEG01
  2280.        RES   0,(IX+8)
  2281.        JP    CHEIA 
  2282.  
  2283. ;*****************************************************************************
  2284.  
  2285.  
  2286. ;CONTAR PINOS CAIDOS E ESPERAR CAIR MAIS PINOS
  2287. ;---------------------------------------------
  2288. CPSPSB:CALL  TPVEL;ler sensores dos pinos e mostrar no painel durante um tempo
  2289.        CALL  LPINOS;ler pinos --> "NZ" caiu pinos
  2290.        RET
  2291.  
  2292. ;*****************************************************************************
  2293.  
  2294. ;tabela
  2295. ;------
  2296. TABGRU:DB 2CH;grupo 1 de solenoides
  2297.        DB 8
  2298.        DB 12H;grupo 2 de solenoides
  2299.        DB 3
  2300.        DB 68H;grupo 3 de solenoides
  2301.        DB 3
  2302.        DB 2CH;grupo 4 de solenoides
  2303.        DB 8
  2304.        DB 12H;grupo 5 de solenoides
  2305.        DB 3
  2306.        DB 68H;grupo 6 de solenoides
  2307.        DB 3
  2308. ;-----------------------------
  2309. ;OBS: BITS --> 0 - NADA
  2310. ;              1 - PINO 4
  2311. ;              2 - PINO 8
  2312. ;              3 - PINO 2
  2313. ;              4 - PINO 1
  2314. ;              5 - PINO 3
  2315. ;              6 - PINO 5 (REI)
  2316. ;              7 - NADA
  2317. ;-----------------------------
  2318. ;              0 - PINO 9
  2319. ;              1 - PINO 6
  2320. ;              2 - NADA
  2321. ;              3 - PINO 7
  2322. ;              4 a 7 - NADA
  2323. ;-----------------------------
  2324.        
  2325. ;*****************************************************************************
  2326. ;*****************************************************************************      
  2327.  
  2328.                                 END    
  2329.  
  2330. ;*****************************************************************************
  2331. ;*****************************************************************************
  2332.  
  2333.                 
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement