; Cristina Casares i Josep Valls CTRL: INP 0 ;Comprova que no hi hagi una ordre de parada TST #%00010000 JZ LECT ;Si que hi ha ordre, para el programa JMP PARA ;No hi ha cap ordre, inicia el programa principal LECT: INP 1 ;Lectura de l'estat AND #%00000011 ;Filtra l'estat TST #%00000011 ;Comproba si ambdos estan apagats JNZ CONT1 ;Algun està encés, continua JMP CTRL ;No hi ha cap avís CONT1: NOT TST #%00000011 ;Comproba si ambdos estan actius, error JNZ CONT2 ;No estan els dos encesos, continua JMP CTRL ;No es pot donar el cas CONT2: TST #%00000001 ;Comproba si està a punt de vessar JNZ NOVESS ;Si no està a punt de vessar, està buida JMP VESSA ;Informa que està apunt de vessar NOVESS: JMP BUIDA ;Informa que està punt d'assecar-se TANC: INP 0 ;Lectura del tanc que genera l'alerta AND #%00001111 ;Filtra el codi de tanc TAX ;Guardo el valor de A a X per no perdre'l CMP #8 ;Miro si es tracta del tanc 8 (8-num tanc que està en A) JNZ DEC ;No coincideixen, salto LDA ERRS8 ;Si que conincideixen carrego num d'errors INA ;Incremento errors STA ERRS8 ;Guardo errors TXA ;Torno a carregar el codi del tanc DEC: SUB #10 ;Resto 10 a A JNC NEG ;Si hi ha carry es negatiu POS: LDA #'1' ;Si no es negatiu, hi ha una desena OUT 7 TXA ;Recupero el valor original SUB #10 ;Aïllo les unitats JMP UNIT NEG: LDA #'0' ;No hi ha desenes OUT 7 TXA UNIT: TAX LDA ODEC,X ;Carrega el valor de la taula ODEC OUT 6 ;Mostrar per pantalla el valor JMP CTRL ;Reinicia el bucle principal FI: HLT ;Fi del programa PARA: LDA #'E' ;Hi ha ordre de parada, carregar numero d'errors del tanc 8 OUT 5 LDA #'R' OUT 4 LDA #'R' OUT 3 LDA #'O' OUT 2 LDA #'R' OUT 1 LDA #'S' OUT 0 LDA ERRS8 SHR SHR SHR SHR TAX LDA ODEC,X OUT 7 LDA ERRS8 AND #%00001111 TAX LDA ODEC,X OUT 6 JMP FI ODEC: DB '0' DB '1' DB '2' DB '3' DB '4' DB '5' DB '6' DB '7' DB '8' DB '9' DB 'A' DB 'B' DB 'C' DB 'D' DB 'E' DB 'F' VESSA: LDA #'V' ;Escriu VESSA OUT 5 LDA #'E' OUT 4 LDA #'S' OUT 3 LDA #'S' OUT 2 LDA #'A' OUT 1 JMP TANC ;Comproba el tanc BUIDA: LDA #'B' ;Escriu BUIDA OUT 5 LDA #'U' OUT 4 LDA #'I' OUT 3 LDA #'D' OUT 2 LDA #'A' OUT 1 JMP TANC ;Comproba el tanc ERRS8: DB 0 ;Registre d'errors del tanc 8