Software e Hardware para linha x86
Moderadores: andre_luis, 51
por tcpipchip » 29 Nov 2019 12:46
https://1drv.ms/u/s!Ak_-1v7Ug-k21U_a11DvmOfxIIRp- Código: Selecionar todos
; I/O Address Bus decode - every device gets 0x200 addresses */
IO0 EQU 0000h
IO1 EQU 0200h
IO2 EQU 0400h
IO3 EQU 0600h
IO4 EQU 0800h
IO5 EQU 0A00h
IO6 EQU 0C00h
IO7 EQU 0E00h
IO8 EQU 1000h
IO9 EQU 1200h
IO10 EQU 1400h
IO11 EQU 1600h
IO12 EQU 1800h
IO13 EQU 1A00h
IO14 EQU 1C00h
IO15 EQU 1E00h
; REGISTRADORES DA CONTROLADORA 8255
ADR_PPI_PORTA EQU (IO5) ; 0A00
ADR_PPI_PORTB EQU (IO5 + 02h) ; 0A02
ADR_PPI_PORTC EQU (IO5 + 04h) ; 0A04
ADR_PPI_CONTROL EQU (IO5 + 06h) ; 0A06
; GOOGLE: 8255 DATASHEET
PPI_PORTA_INP EQU 10h
PPI_PORTA_OUT EQU 00h
PPI_PORTB_INP EQU 02h
PPI_PORTB_OUT EQU 00h
PPI_PORTCL_INP EQU 01h
PPI_PORTCL_OUT EQU 00h
PPI_PORTCH_INP EQU 08h
PPI_PORTCH_OUT EQU 00h
PPI_MODE_BCL_0 EQU 00h
PPI_MODE_BCL_1 EQU 04h
PPI_MODE_ACH_0 EQU 00h
PPI_MODE_ACH_1 EQU 20h
PPI_MODE_ACH_2 EQU 40h
PPI_ACTIVE EQU 80h
TAM_STRING EQU 22
ADR_TIMER_DATA0 EQU (IO6 + 00h)
ADR_TIMER_DATA1 EQU (IO6 + 02h)
ADR_TIMER_DATA2 EQU (IO6 + 04h)
ADR_TIMER_CONTROL EQU (IO6 + 06h)
TIMER_COUNTER0 EQU 00h
TIMER_COUNTER1 EQU 40h
TIMER_COUNTER2 EQU 80h
TIMER_LATCH EQU 00h
TIMER_LSB EQU 10h
TIMER_MSB EQU 20h
TIMER_LSB_MSB EQU 30h
TIMER_MODE0 EQU 00h
TIMER_MODE1 EQU 02h
TIMER_MODE2 EQU 04h
TIMER_MODE3 EQU 06h
TIMER_MODE4 EQU 08h
TIMER_MODE5 EQU 09h
TIMER_BCD EQU 01h
MACRO_INICIALIZA_8253_TIMER0 MACRO HIGH,LOW
PUSHF
PUSH AX
PUSH DX
MOV AL,36H
MOV DX, ADR_TIMER_CONTROL
OUT DX,AL
MOV AL,LOW
MOV DX, ADR_TIMER_DATA0
OUT DX,AL
MOV AL,HIGH
MOV DX, ADR_TIMER_DATA0
OUT DX,AL
POP DX
POP AX
POPF
ENDM
;MEU CODIGO
CODE SEGMENT
ASSUME DS:DATA
org 0000h
org 0008h
PONTEIRO_TRATADOR_INTERRUPCAO DB 4 DUP(?)
DW OFFSET RELOGIO
DW SEG RELOGIO
;RESERVADO PARA VETOR DE INTERRUPCOES
org 0400h
;MEU CODIGO
inicio: ; GRAFICO DE BARRAS
MOV AX,0000
MOV DS,AX
MOV WORD PTR PONTEIRO_TRATADOR_INTERRUPCAO, OFFSET INTERRUPT_ONE_SECOND
MOV WORD PTR PONTEIRO_TRATADOR_INTERRUPCAO + 2, SEG INTERRUPT_ONE_SECOND
MOV AX,DATA
MOV DS,AX ; DS AGORA APONTA PARA DATA SEGMENT
MOV AX,EXTRA
MOV ES,AX ; ES AGORA APONTA PARA EXTRA SEGMENT
MOV AX,STACK
MOV SS,AX ; SS AGORA APONTA PARA STACK SEGMENT
CALL INICIALIZA_8251
; PROGRAMA PORTA = SAIDA, PORTB = SAIDA, PORTC = ENTRADA
CALL INICIALIZA_8255_PORTB_OUTPUT
CALL GLCD_ATIVA
CALL GLCD_CLR
MOV AH, 0
MOV AL, 0
MOV SI, OFFSET SPESH_ABERTURA
CALL PRINT_ICON
MOV BX, OFFSET INICIO_JOGO
CALL MANDA_MENSAGEM
VOLTA_AQUI:
CALL RECEBE_CARACTER
CMP AL, 13
JNE VOLTA_AQUI
CALL CRIA_BARREIRAS
CALL GLCD_CLR
MOV BX, OFFSET ENTRA_COM_LETRA
CALL MANDA_MENSAGEM
MOV X_MAPA, 0
MOV Y_MAPA, 0
CALL CONTINHA_MAPA
MOV VALOR_MAPA, 129
CALL TABELA_ESCREVER_MAPA
MOV AH, 1
MOV AL, 7
CALL GLCD_GOTO_XY_TEXT
MOV AL, 'P'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'O'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'N'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'T'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'U'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'A'
CALL PRINT_CAR
MOV AH, 8
MOV AL, 7
CALL GLCD_GOTO_XY_TEXT
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'C'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'A'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'O'
CALL PRINT_CAR
MOV AL, ':'
CALL PRINT_CAR
MOV AH, 13
MOV AL, 7
CALL GLCD_GOTO_XY_TEXT
MOV AL, '0'
CALL PRINT_CAR
MOV AL, '0'
CALL PRINT_CAR
REPETE:
CALL LER_MAPA_TODO
MOV CONTADOR_SEED, 0
CALL RECEBE_CARACTER
CALL CRIA_FRUTINHAS
CMP AL, "A"
JE MOVE_ESQUERDA
CMP AL, "W"
JE MOVE_CIMA
CMP AL, "D"
JE MOVE_DIREITA
CMP AL, "S"
JE MOVE_BAIXO
MOV BX, OFFSET CONTADOR_SEED
MOV AL, [BX]
CALL MANDA_CARACTER
JMP REPETE
INTERRUPT_ONE_SECOND:
PUSHF
INC BYTE PTR CONTADOR_SEED
SAI_INTERRUPT:
POPF
IRET
ESCREVER_PERDEU_MAPA:
PUSH AX
MOV AH, 4
MOV AL, 4
CALL GLCD_GOTO_XY_TEXT
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'P'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'E'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'R'
CALL PRINT_CAR
MOV AH, 8
MOV AL, 4
CALL GLCD_GOTO_XY_TEXT
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'D'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'E'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'U'
CALL PRINT_CAR
POP AX
RET
ESCREVER_GANHOU_MAPA:
PUSH AX
MOV AH, 4
MOV AL, 4
CALL GLCD_GOTO_XY_TEXT
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'G'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'A'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'N'
CALL PRINT_CAR
MOV AH, 8
MOV AL, 4
CALL GLCD_GOTO_XY_TEXT
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'H'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'O'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'U'
CALL PRINT_CAR
POP AX
RET
ESCREVER_TUDO_BRANCO:
PUSHF
PUSH AX
PUSH BX
MOV BX, OFFSET MAPA
ENCREMENTA_MAPA:
MOV AL, [BX]
CMP AL, 0
JE SAI_ENCREMENTA_MAPA
MOV AL, 32
MOV [BX], AL
INC BX
JMP ENCREMENTA_MAPA
SAI_ENCREMENTA_MAPA:
POP BX
POP AX
POPF
RET
PERDEU_JOGO:
CALL ESCREVER_TUDO_BRANCO
CALL LER_MAPA_TODO
CALL ESCREVER_PERDEU_MAPA
MOV AL, 13
CALL MANDA_CARACTER
MOV AL, 10
CALL MANDA_CARACTER
MOV BX, OFFSET FRASE_DE_DERROTA
CALL MANDA_MENSAGEM
JMP $
GANHOU_JOGO:
CALL ESCREVER_TUDO_BRANCO
CALL LER_MAPA_TODO
CALL ESCREVER_GANHOU_MAPA
MOV AL, 13
CALL MANDA_CARACTER
MOV AL, 10
CALL MANDA_CARACTER
MOV BX, OFFSET FRASE_DE_VITORIA
CALL MANDA_MENSAGEM
JMP $
PROCURA_ESPACO_BRANCO:
PUSHF
PUSH BX
MOV BX, OFFSET MAPA
LER_POSICAO_BRANCA:
MOV AL, [BX]
CMP AL, 0
JE SAI_PROCURA_ESPACO_BRANCO
CMP AL, 32
JE SAI_PROCURA_ESPACO_BRANCO
INC BX
JMP LER_POSICAO_BRANCA
SAI_PROCURA_ESPACO_BRANCO:
POP BX
POPF
RET
PROCURA_FRUTINHAS:
PUSHF
PUSH BX
MOV BX, OFFSET MAPA
LER_POSICAO_FRUTINHAS:
MOV AL, [BX]
CMP AL, 0
JE SAI_PROCURA_FRUTINHAS
CMP AL, 133
JE SAI_PROCURA_FRUTINHAS
INC BX
JMP LER_POSICAO_FRUTINHAS
SAI_PROCURA_FRUTINHAS:
POP BX
POPF
RET
CRIA_BARREIRAS:
PUSHF
PUSH AX
PUSH CX
CALL RANDOM
AND AL, 00001111B
MOV CL, AL
CMP CL, 0
JE SAI_BARREIRAS
LP_BARREIRAS:
CALL RANDOM
AND AL, 00001111B
MOV Y_MAPA, AL
CALL RANDOM
AND AL, 00000111B
CMP AL, 8
JE LP_BARREIRAS
MOV X_MAPA, AL
CALL TABELA_LER
CMP AL, 32
JNE LP_BARREIRAS
MOV VALOR_MAPA, 128
CALL TABELA_ESCREVER_MAPA
LOOP LP_BARREIRAS
SAI_BARREIRAS:
POP CX
POP AX
POPF
RET
CRIA_FRUTINHAS:
PUSHF
PUSH AX
PUSH CX
MOV CL, CONTADOR_SEED
CMP CL, 0
JE SAI_FRUTINHAS
LP_FRUTINHAS:
CALL RANDOM
AND AL, 00001111B
MOV Y_MAPA, AL
CALL RANDOM
AND AL, 00000111B
CMP AL,6
JG LP_FRUTINHAS
MOV X_MAPA, AL
CALL TABELA_LER
CMP AL, 32
JNE LP_FRUTINHAS
MOV VALOR_MAPA, 133
CALL TABELA_ESCREVER_MAPA
CALL PROCURA_ESPACO_BRANCO
CMP AL, 0
JE PERDEU_JOGO
LOOP LP_FRUTINHAS
SAI_FRUTINHAS:
POP CX
POP AX
POPF
RET
RANDOM:
PUSH DX
MOV AX,SEED ;; AX = seed
ADD AL,CONTADOR_SEED ; ATUALIZADO A CADA 1 SEGUNDO VIA INTERRUPT
MOV DX,8405h ;; DX = 8405h
MUL DX ;; MUL (8405h * SEED) into dword DX:AX
;
CMP AX,SEED
JNZ GOTSEED ;; if new SEED = old SEED, alter SEED
MOV AH,DL
INC AX
GOTSEED:
MOV SEED,AX ;; We have a new seed, so store it
MOV AX,DX ;; AL = random number
POP DX
RET
MOVE_ESQUERDA:
CALL MANDA_CARACTER
MOV AL, X_PAC
MOV X_MAPA, AL
CMP Y_PAC, 0
JE ENCREMENTA_15_Y_ESQUERDA
MOV AL, Y_PAC
MOV Y_MAPA,AL
DEC Y_PAC
VOLTA_AQUI_ESQUERDA:
CALL CONTINHA_PAC
MOV VALOR_MAPA, 130
CMP MAPA[BX], 128
JE SAI_MOVE
CMP MAPA[BX], 133
JE AUMENTA_PONTUACAO
CALL TABELA_ESCREVER_PAC
MOV VALOR_MAPA, 32
CALL TABELA_ESCREVER_MAPA
JMP REPETE
ENCREMENTA_15_Y_ESQUERDA:
MOV AL, Y_PAC
MOV Y_MAPA,AL
MOV Y_PAC, 15
JMP VOLTA_AQUI_ESQUERDA
MOVE_CIMA:
CALL MANDA_CARACTER
MOV AL, Y_PAC
MOV Y_MAPA, AL
CMP X_PAC, 0
JE ENCREMENTA_6_X_CIMA
MOV AL, X_PAC
MOV X_MAPA, AL
DEC X_PAC
VOLTA_AQUI_CIMA:
CALL CONTINHA_PAC
MOV VALOR_MAPA, 132
CMP MAPA[BX], 128
JE SAI_MOVE
CMP MAPA[BX], 133
JE AUMENTA_PONTUACAO
CALL TABELA_ESCREVER_PAC
MOV VALOR_MAPA,32
CALL TABELA_ESCREVER_MAPA
JMP REPETE
ENCREMENTA_6_X_CIMA:
MOV AL, X_PAC
MOV X_MAPA, AL
MOV X_PAC, 6
JMP VOLTA_AQUI_CIMA
MOVE_DIREITA:
CALL MANDA_CARACTER
MOV AL, X_PAC
MOV X_MAPA, AL
CMP Y_PAC, 15
JE ENCREMENTA_0_Y_DIREITA
MOV AL, Y_PAC
MOV Y_MAPA,AL
INC Y_PAC
VOLTA_AQUI_DIREITA:
CALL CONTINHA_PAC
MOV VALOR_MAPA, 129
CMP MAPA[BX], 128
JE SAI_MOVE
CMP MAPA[BX], 133
JE AUMENTA_PONTUACAO
CALL TABELA_ESCREVER_PAC
MOV VALOR_MAPA, 32
CALL TABELA_ESCREVER_MAPA
JMP REPETE
ENCREMENTA_0_Y_DIREITA:
MOV AL, Y_PAC
MOV Y_MAPA,AL
MOV Y_PAC, 0
JMP VOLTA_AQUI_DIREITA
MOVE_BAIXO:
CALL MANDA_CARACTER
MOV AL, Y_PAC
MOV Y_MAPA, AL
CMP X_PAC, 6
JE ENCREMENTA_0_X_BAIXO
MOV AL, X_PAC
MOV X_MAPA, AL
INC X_PAC
VOLTA_AQUI_BAIXO:
CALL CONTINHA_PAC
MOV VALOR_MAPA, 131
CMP MAPA[BX], 128
JE SAI_MOVE
CMP MAPA[BX], 133
JE AUMENTA_PONTUACAO
CALL TABELA_ESCREVER_PAC
MOV VALOR_MAPA, 32
CALL TABELA_ESCREVER_MAPA
JMP REPETE
ENCREMENTA_0_X_BAIXO:
MOV AL, X_PAC
MOV X_MAPA, AL
MOV X_PAC, 0
JMP VOLTA_AQUI_BAIXO
AUMENTA_PONTUACAO:
MACRO_INICIALIZA_8253_TIMER0 00H,05FH ; 523.25HZ NOTA DO (020BH)
CALL PAUSA
MACRO_INICIALIZA_8253_TIMER0 00H,00H
CALL TABELA_ESCREVER_PAC
ADD PONTUACAO, 1
MOV VALOR_MAPA, 32
CALL TABELA_ESCREVER_MAPA
CALL CONTINHA_PONTUACAO
CALL PROCURA_FRUTINHAS
CMP AL,0
JE GANHOU_JOGO
JMP REPETE
SAI_MOVE:
MACRO_INICIALIZA_8253_TIMER0 00H,04DH ; 523.25HZ NOTA DO (020BH)
CALL PAUSA
MACRO_INICIALIZA_8253_TIMER0 00H,00H ;
CALL TABELA_ESCREVER_MAPA
MOV AL, X_MAPA
MOV X_PAC, AL
MOV AL, Y_MAPA
MOV Y_PAC, AL
JMP REPETE
LER_MAPA_TODO:
PUSHF
PUSH AX
PUSH BX
PUSH CX
MOV AX, 0
MOV BX, OFFSET MAPA
MOV CL, 0
MAPA_LER_LOOP:
MOV AL, CL
CMP AH, 16
JE ENCREMENTA_AX
ESCREVE_DISPLAY_MAPA:
CALL GLCD_GOTO_XY_TEXT
MOV AL, [BX]
CMP AL, 0
JE FIM_LER_MAPA_TODO
CALL PRINT_CAR
INC BX
INC AH
JMP MAPA_LER_LOOP
ENCREMENTA_AX:
INC AL
MOV AH, 0
MOV CL, AL
JMP ESCREVE_DISPLAY_MAPA
FIM_LER_MAPA_TODO:
POP CX
POP BX
POP AX
POPF
RET
TABELA_ESCREVER_MAPA:
PUSHF
PUSH AX
PUSH BX
CALL CONTINHA_MAPA
MOV AL, VALOR_MAPA
MOV MAPA[BX], AL
POP BX
POP AX
POPF
RET
TABELA_ESCREVER_PAC:
PUSHF
PUSH AX
PUSH BX
CALL CONTINHA_PAC
MOV AL, VALOR_MAPA
MOV MAPA[BX], AL
POP BX
POP AX
POPF
RET
TABELA_LER:
PUSHF
PUSH BX
CALL CONTINHA_MAPA
MOV AL, MAPA[BX]
POP BX
POPF
RET
CONTINHA_MAPA:
PUSH CX
PUSH AX
MOV AL, X_MAPA
MOV CL, 16
MUL CL
MOV CL, Y_MAPA
MOV CH, 0
ADD AX, CX
MOV BX, AX
POP AX
POP CX
RET
CONTINHA_PAC:
PUSH CX
PUSH AX
MOV AL, X_PAC
MOV CL, 16
MUL CL
MOV CL, Y_PAC
MOV CH, 0
ADD AX, CX
MOV BX, AX
POP AX
POP CX
RET
CONTINHA_PONTUACAO:
PUSHF
PUSH AX
PUSH CX
MOV AH, 13
MOV AL, 7
CALL GLCD_GOTO_XY_TEXT
MOV AH, 0
MOV AL, PONTUACAO
MOV CL, 10
DIV CL
ADD AL, 48
CALL PRINT_CAR
MOV AL, AH
ADD AL, 48
CALL PRINT_CAR
POP CX
POP AX
POPF
RET
PAUSA:
MOV CX,16768
DELAY2:
LOOP DELAY2
MOV CX,16768
DELAY3:
LOOP DELAY3
RET
MOV AH, 0
MOV AL, 0
MOV BH, 1
CALL GLCD_DRAW_POINT
MOV AH, 0
MOV AL, 0
MOV BH, 0
CALL GLCD_DRAW_POINT
CALL MOSTRA_GRAFICO
MOV AH, 1
MOV AL, 8
MOV BH, 1
CALL FAZER_LINHA
MOV AH, 1
MOV AL, 54
MOV BH, 1
CALL FAZER_LINHA
CALL MOSTRA_NUMEROS
MOV BX, OFFSET ENTRE_NUMEROS
CALL MANDA_MENSAGEM
MOV BX, OFFSET NUMEROS
CALL RECEBE_MENSAGEM
CALL CONTA_NUMEROS
MOV SI, OFFSET CONTADOR_NUMEROS
CALL CRIA_GRAFICO
JMP $
CRIA_GRAFICO:
PUSHF
PUSH AX
PUSH SI
PUSH CX
MOV AH, 13
MOV BL, 0
ENCREMENTA_SI:
MOV CL, [SI]
MOV AL, CL
CMP AL, 0
JE ENCREMENTA_AH
CMP CL, "+"
JE FINALIZAR_PRINTA
MOV AL, CL
ADD AL, CL
MOV CL, AL
MOV AL, 53
MOV BH, 1
ROT:
CALL GLCD_DRAW_POINT
DEC AL
LOOP ROT
MOV CH, 0
MOV CL, [SI]
INC AH
MOV AL, CL
ADD AL, CL
MOV CL, AL
MOV AL, 53
MOV BH, 1
ROT1:
CALL GLCD_DRAW_POINT
DEC AL
LOOP ROT1
MOV CH, 0
MOV CL, [SI]
INC AH
MOV AL, CL
ADD AL, CL
MOV CL, AL
MOV AL, 53
MOV BH, 1
ROT2:
CALL GLCD_DRAW_POINT
DEC AL
LOOP ROT2
MOV CH, 0
MOV CL, [SI]
INC AH
MOV AL, CL
ADD AL, CL
MOV CL, AL
MOV AL, 53
MOV BH, 1
ROT3:
CALL GLCD_DRAW_POINT
DEC AL
LOOP ROT3
ADD AH, 7
INC SI
INC BL
CMP BL, 3
JE ENCREMENTA_UM
JMP ENCREMENTA_SI
ENCREMENTA_UM:
INC AH
JMP ENCREMENTA_SI
ENCREMENTA_AH:
INC SI
ADD AH, 10
JMP ENCREMENTA_SI
FINALIZAR_PRINTA:
POP CX
POP BX
POP AX
POPF
RET
CONTA_NUMEROS:
PUSHF
PUSH AX
MOV SI, OFFSET NUMEROS
ROTULO:
INC SI
MOV AL, [SI]
CMP AL, 0
JE IMPRESSAO
SUB AL, 48
MOV AH, 0
MOV BX,AX
INC CONTADOR_NUMEROS[BX]
JMP ROTULO
IMPRESSAO:
POP AX
POPF
RET
MOSTRA_GRAFICO:
MOV AH, 3
MOV AL, 8
CALL GLCD_GOTO_XY_TEXT
MOV AL, 'G'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'R'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'A'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'F'
CALL PRINT_CAR
MOV AH, 8
MOV AL, 8
CALL GLCD_GOTO_XY_TEXT
MOV AL, 'I'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'C'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, 'O'
CALL PRINT_CAR
RET
MOSTRA_NUMEROS:
MOV AH, 1
MOV AL, 7
CALL GLCD_GOTO_XY_TEXT
MOV AL, ' '
CALL PRINT_CAR
MOV AL, '0'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, '1'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, '2'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, '3'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, '4'
CALL PRINT_CAR
MOV AH, 8
MOV AL, 7
CALL GLCD_GOTO_XY_TEXT
MOV AL, '5'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, '6'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, '7'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, '8'
CALL PRINT_CAR
MOV AL, ' '
CALL PRINT_CAR
MOV AL, '9'
CALL PRINT_CAR
RET
FAZER_LINHA:
PUSH AX
FAZ_LINHA:
CALL GLCD_DRAW_POINT
CMP AH, 128
JE FIM_LINHA
INC AH
JMP FAZ_LINHA
FIM_LINHA:
POP AX
RET
MOV AH, 0
MOV AL, 0
MOV SI, OFFSET FULANO
CALL PRINT_ICON
MOV AH, 0
MOV AL, 0
MOV BH, 1
REPETE_ESSE:
CALL GLCD_DRAW_POINT
CMP AH, 56
JE OUTRO_RISCO
INC AH
INC AL
JMP REPETE_ESSE
OUTRO_RISCO:
MOV AH, 64
MOV AL, 0
MOV BH, 1
OUTRO_ESSE_RISCO:
CALL GLCD_DRAW_POINT
CMP AH, 8
JE SAI_REPETE_ESSE
DEC AH
INC AL
JMP OUTRO_ESSE_RISCO
SAI_REPETE_ESSE:
JMP $
LENDO: ; LE CONTEUDO PORTC DO 8255 E JOGA EM AL
CALL LE_PORT_C
; AGORA MANDE AL PARA PORTB E PORTC
CALL MANDA_PORT_A
CALL MANDA_PORT_B
JMP LENDO
CALL INICIALIZA_8251
AGAIN:
MOV BX, OFFSET TEXTO
CALL RECEBE_MENSAGEM
CALL PULA_LINHA
MOV BX, OFFSET TEXTO
CALL MENSAGEM_MAIUSCULO
CALL PULA_LINHA
MOV BX, OFFSET TEXTO
CALL MANDA_MENSAGEM
CALL PULA_LINHA
MOV BX, OFFSET TEXTO
CALL INVERTE_MENSAGEM
CALL PULA_LINHA
JMP REPETE
MOV SEGUNDOS_UNID, 0
MOV SEGUNDOS_DEZ, 0
MOSTRA:
CALL DISPLAY
JMP MOSTRA
INVERTE_MENSAGEM:
PUSHF
PUSH AX
PUSH CX
MOV CL, [BX] ; CL PEGA O TAMANHO DO TEXTO
CMP CL,0 ; SE STRING VAZIA, IGNORA TUDO
JE FIM_INVERTE_MENSAGEM
MOV AL, [BX] ; AL CONTEM O TAMANHO DO TEXTO
MOV AH, 0 ; LIMPA AH PARA SOMA COM AX (PAI DE AL)
ADD BX, AX
PROCURA_INVERTE_CARACTER:
MOV AL, [BX]
CALL MANDA_CARACTER
DEC BX ; VOLTA CARACTER
DEC CL
CMP CL,0
JNE PROCURA_INVERTE_CARACTER
FIM_INVERTE_MENSAGEM:
POP CX
POP AX
POPF
RET
MENSAGEM_MAIUSCULO:
PUSHF
PUSH AX
IGNORA_CARACTER_MAISCULO:
INC BX ; PARA PULAR TAMANHO
MOV AL, [BX]
CMP AL, 0
JE SAI_MENSAGEM_MAIUSCULO
CMP AL, 'a'
JL IGNORA_CARACTER_MAISCULO
CMP AL, 'z'
JG IGNORA_CARACTER_MAISCULO
MOV AL,32
SUB [BX],AL ; LE CARACTERE DA MEMORIA, SUBTRAI 32 E ESCREVE NOVAMENTE NA MEMORIA
JMP IGNORA_CARACTER_MAISCULO
SAI_MENSAGEM_MAIUSCULO:
POP AX
POPF
RET
PULA_LINHA:
PUSHF
PUSH AX
MOV AL,13
CALL MANDA_CARACTER
MOV AL,10
CALL MANDA_CARACTER
POP AX
POPF
RET
DISPLAY:
PUSH AX
PUSH BX
PUSH DX
MOV BL, SEGUNDOS_UNID
MOV BH, 0
MOV AL, TABELA[BX]
MOV DX, IO3
OUT DX, AL
MOV BL, SEGUNDOS_DEZ
MOV BH, 0
MOV AL, TABELA[BX]
MOV DX, IO2
OUT DX, AL
POP DX
POP BX
POP AX
RET
DELAY: PUSH CX
MOV CX, 65535
DEC_CX:
DEC CX
CMP CX, 0
JE SAI_DELAY
JMP DEC_CX
SAI_DELAY:
POP CX
RET
RELOGIO:
PUSHF
INC SEGUNDOS_UNID
CMP SEGUNDOS_UNID, 10
JE ZERA_SEGUNDOS_UNID
JMP SAI_INTERRUPT_RELOGIO
ZERA_SEGUNDOS_UNID:
MOV SEGUNDOS_UNID, 0
INC SEGUNDOS_DEZ
CMP SEGUNDOS_DEZ, 6
JE ZERA_SEGUNDOS_DEZ
JMP SAI_INTERRUPT_RELOGIO
ZERA_SEGUNDOS_DEZ:
MOV SEGUNDOS_DEZ, 0
SAI_INTERRUPT_RELOGIO:
POPF
IRET
; 8251A USART
ADR_USART_DATA EQU (IO4 + 00h)
;ONDE VOCE VAI MANDAR E RECEBER DADOS DO 8251
ADR_USART_CMD EQU (IO4 + 02h)
;É O LOCAL ONDE VOCE VAI ESCREVER PARA PROGRAMAR O 8251
ADR_USART_STAT EQU (IO4 + 02h)
;RETORNA O STATUS SE UM CARACTER FOI DIGITADO
;RETORNA O STATUS SE POSSO TRANSMITIR CARACTER PARA O TERMINAL
INICIALIZA_8251:
MOV AL,0
MOV DX, ADR_USART_CMD
OUT DX,AL
OUT DX,AL
OUT DX,AL
MOV AL,40H
OUT DX,AL
MOV AL,4DH
OUT DX,AL
MOV AL,37H
OUT DX,AL
RET
RECEBE_CARACTER:
PUSHF
PUSH DX
AGUARDA_CARACTER:
MOV DX, ADR_USART_STAT
IN AL,DX
TEST AL,2
JZ AGUARDA_CARACTER
MOV DX, ADR_USART_DATA
IN AL,DX
SHR AL,1
NAO_RECEBIDO:
POP DX
POPF
RET
MANDA_CARACTER:
PUSHF
PUSH DX
PUSH AX ; SALVA AL
BUSY:
MOV DX, ADR_USART_STAT
IN AL,DX
TEST AL,1
JZ BUSY
MOV DX, ADR_USART_DATA
POP AX ; RESTAURA AL
OUT DX,AL
POP DX
POPF
RET
MANDA_MENSAGEM:
PUSHF
PUSH AX
INC BX ; PULA TAMANHO DA MENSAGEM
MANDA_MENSAGEM_CARACTER:
MOV AL,[BX]
CMP AL,0
JE FIM_MANDA_MENSAGEM
CALL MANDA_CARACTER
INC BX
JMP MANDA_MENSAGEM_CARACTER
FIM_MANDA_MENSAGEM:
POP AX
POPF
RET
RECEBE_MENSAGEM:
PUSHF
PUSH AX
INC BX ; APONTE PARA O PAYLOAD, NAO APONTE PARA O TAMANHO
MOV CONTADOR_LETRAS,0
RECEBE_MENSAGEM_CARACTER:
CALL RECEBE_CARACTER
CMP AL,13
JE SAI_RECEBE_CARACTER
CMP AL, 8 ; BACKSPACE
JE CONSISTE_BACKSPACE
CMP CONTADOR_LETRAS,TAM_STRING
JE RECEBE_MENSAGEM_CARACTER
IMPRIME_SALVA:
CALL MANDA_CARACTER
MOV [BX],AL
INC BX
INC CONTADOR_LETRAS
JMP RECEBE_MENSAGEM_CARACTER
CONSISTE_BACKSPACE:
CMP CONTADOR_LETRAS,0
JE RECEBE_MENSAGEM_CARACTER
DEC BX
DEC CONTADOR_LETRAS
CALL MANDA_CARACTER ; EXCLUSIVO PARA IMPRIMIR BACKSPACE
JMP RECEBE_MENSAGEM_CARACTER
SAI_RECEBE_CARACTER:
MOV AL,0
MOV [BX],AL
MOV BX, OFFSET TEXTO ; APONTA PARA CAMPO TAMANHO DE TEXTO
MOV AL, CONTADOR_LETRAS ; PEGA
MOV [BX],AL
POP AX
POPF
RET
;---------------------------------------------------------
;ROTINAS PARA 8255
;CONFIGURA PORTA E PORTB COMO SAIDAS
INICIALIZA_8255_PORTB_OUTPUT:
PUSHF
PUSH AX
PUSH DX
MOV DX, ADR_PPI_CONTROL
MOV AL,0
OR AL,PPI_PORTA_OUT
OR AL,PPI_PORTB_OUT
OR AL,PPI_PORTCL_INP
OR AL,PPI_PORTCH_INP
OR AL,PPI_MODE_BCL_0
OR AL,PPI_MODE_ACH_0
OR AL,PPI_ACTIVE
OUT DX,AL
POP DX
POP AX
POPF
RET
;INICIALIZA PORTB E "PORTC" COMO ENTRADA
INICIALIZA_8255_PORT_INPUT:
PUSHF
PUSH AX
PUSH DX
MOV DX, ADR_PPI_CONTROL
MOV AL,0
OR AL,PPI_PORTA_OUT
OR AL,PPI_PORTB_INP
OR AL,PPI_PORTCL_INP
OR AL,PPI_PORTCH_INP
OR AL,PPI_MODE_BCL_0
OR AL,PPI_MODE_ACH_0
OR AL,PPI_ACTIVE
OUT DX,AL
POP DX
POP AX
POPF
RET
;MANDA AL PARA PORTA
MANDA_PORT_A:
PUSHF
PUSH DX
MOV DX,ADR_PPI_PORTA
OUT DX,AL
POP DX
POPF
RET
;MANDA AL PARA PORTB
MANDA_PORT_B:
PUSHF
PUSH DX
MOV DX,ADR_PPI_PORTB
OUT DX,AL
POP DX
POPF
RET
;LE PORTB E JOGA EM AL
LE_PORT_B:
PUSHF
PUSH DX
MOV DX,ADR_PPI_PORTB
IN AL,DX
POP DX
POPF
RET
;LE PORTC E JOGA EM AL
LE_PORT_C:
PUSHF
PUSH DX
MOV DX,ADR_PPI_PORTC
IN AL,DX
POP DX
POPF
RET
;---------------------------------------------------------
;LIGA DISPLAY
GLCD_ON:
CALL GLCD_CS1_LOW
CALL GLCD_CS2_LOW
CALL GLCD_RS_LOW
CALL GLCD_RW_LOW
MOV AL,03FH
CALL MANDA_PORT_B
CALL ENABLE_PULSE
RET
;------------------------------------
;POSICIONA "CURSOR" NA COLUNA
GLCD_GOTO_COL:
PUSHF
PUSH AX
CALL GLCD_RS_LOW
CALL GLCD_RW_LOW
CMP AH,64
JL LEFT
CALL GLCD_CS2_LOW
CALL GLCD_CS1_HIGH
SUB AH,64
MOV COL_DATA,AH
JMP SAI_GOTO_COL
LEFT:
CALL GLCD_CS1_LOW
CALL GLCD_CS2_HIGH
MOV COL_DATA,AH
SAI_GOTO_COL:
OR COL_DATA, 40H
AND COL_DATA, 7FH
MOV AL,COL_DATA
CALL MANDA_PORT_B
CALL ENABLE_PULSE
POP AX
POPF
RET
;------------------------------------
;------------------------------------
;POSICIONA "CURSOR" NA COLUNA
GLCD_GOTO_COL_TEXT:
PUSHF
PUSH AX
PUSH BX
PUSH AX
MOV BL,8
MOV AL,AH
MUL BL
MOV BL,AL
POP AX
MOV AH,BL
CALL GLCD_RS_LOW
CALL GLCD_RW_LOW
CMP AH,64
JL LEFT_TEXT
CALL GLCD_CS2_LOW
CALL GLCD_CS1_HIGH
SUB AH,64
MOV COL_DATA,AH
JMP SAI_GOTO_COL_TEXT
LEFT_TEXT:
CALL GLCD_CS1_LOW
CALL GLCD_CS2_HIGH
MOV COL_DATA,AH
SAI_GOTO_COL_TEXT:
OR COL_DATA, 40H
AND COL_DATA, 7FH
MOV AL,COL_DATA
CALL MANDA_PORT_B
CALL ENABLE_PULSE
POP BX
POP AX
POPF
RET
;------------------------------------
;------------------------------------
;POSICIONA "CURSOR" NA LINHA
GLCD_GOTO_ROW:
PUSH AX
CALL GLCD_RS_LOW
CALL GLCD_RW_LOW
OR AL,0B8H
AND AL,0BFH
MOV COL_DATA,AL
CALL MANDA_PORT_B
CALL ENABLE_PULSE
POP AX
RET
;------------------------------------
;------------------------------------
;POSICIONA "CURSOR" NA LINHA
GLCD_GOTO_ROW_TEXT:
PUSH AX
CALL GLCD_RS_LOW
CALL GLCD_RW_LOW
OR AL,0B8H
AND AL,0BFH
MOV COL_DATA,AL
CALL MANDA_PORT_B
CALL ENABLE_PULSE
POP AX
RET
;------------------------------------
;------------------------------------
; AH LINHA E AL COLUNA
; POSICIONAMENTO DO "CURSOR" EM LINHA X COLUNA
; MODO GRAFICO (128x64)
GLCD_GOTO_XY:
CALL GLCD_GOTO_COL
CALL GLCD_GOTO_ROW
RET
;;------------------------------------
;------------------------------------
; AH LINHA E AL COLUNA
; POSICIONAMENTO DO "CURSOR" EM LINHA X COLUNA
; COLUNAS 16 (0..15), LINHAS 8 (0..7)
GLCD_GOTO_XY_TEXT:
CALL GLCD_GOTO_COL_TEXT
CALL GLCD_GOTO_ROW_TEXT
RET
;------------------------------------
; AL = DATA
GLCD_WRITE:
CALL GLCD_RS_HIGH
CALL GLCD_RW_LOW
CALL MANDA_PORT_B
CALL ENABLE_PULSE
RET
;AL = DATA
GLCD_CLRLN:
PUSHF
PUSH AX
PUSH CX
MOV AH,0
CALL GLCD_GOTO_XY
MOV AH,64
CALL GLCD_GOTO_XY
CALL GLCD_CS1_LOW
MOV AL,0
MOV CX,64
ESCREVA:
CALL GLCD_WRITE
LOOP ESCREVA
POP CX
POP AX
POPF
RET
;---------------------------------------------------------
;APAGA DISPLAY GRAFICO
GLCD_CLR:
PUSHF
PUSH AX
MOV AL,0
CLRLN:
CALL GLCD_CLRLN
ADD AL,1
CMP AL,8
JNE CLRLN
POP AX
POPF
RET
;---------------------------------------------------------
;---------------------------------------------------------
;DESENHA UM PONTO NESTAS COORDENADAS
;AH, AL, BH
;COLUNAS MODO GRAFICO = 128 (0..127) AH
;LINHAS MODO GRAFICO = 64 (0..63) AL
;BH = 0 PIXEL APAGADO, BH=1 PIXEL ACESO
GLCD_DRAW_POINT:
PUSHF
PUSH AX
PUSH BX
PUSH CX
PUSH AX ; SALVA AH, AL
PUSH AX ; SALVA AH, AL
MOV CH,AH ; SALVA AH
MOV AH,0
MOV BL,8
DIV BL
MOV AH,CH
CALL GLCD_GOTO_XY
POP AX ; RESTAURA AH, AL
CMP BH,0
JE LIGHT_SPOT
MOV AH,0
MOV BH,8
DIV BH
; AH RESTO
MOV CL,AH
MOV AL,1
SHL AL,CL
MOV COL_DATA_AUX,AL
MOV AH,CH
CALL GLCD_READ_DATA
OR COL_DATA_AUX,AL
JMP SAI_GLCD_DRAW_POINT
LIGHT_SPOT:
MOV AH,0
MOV BH,8
DIV BH
; AH RESTO
MOV CL,AH
MOV AL,1
SHL AL,CL
NOT AL
MOV COL_DATA_AUX,AL
MOV AH,CH
CALL GLCD_READ_DATA
AND COL_DATA_AUX,AL
SAI_GLCD_DRAW_POINT:
POP AX
MOV CH,AH ; SALVA AH
MOV AH,0
MOV BL,8
DIV BL
MOV AH,CH
CALL GLCD_GOTO_XY
MOV AL, COL_DATA_AUX
CALL GLCD_WRITE
POP CX
POP BX
POP AX
POPF
RET
;---------------------------------------------------------
;---------------------------------------------------------
;LE STATUS DO DISPLAY
GLCD_READ_DATA:
CALL INICIALIZA_8255_PORT_INPUT
CALL GLCD_RW_HIGH
CALL GLCD_RS_HIGH
CMP AH,63
JG HAB_CS2
HAB_CS1:
CALL GLCD_CS2_HIGH
CALL GLCD_CS1_LOW
JMP HAB
HAB_CS2:
CALL GLCD_CS2_LOW
CALL GLCD_CS1_HIGH
HAB:
CALL GLCD_EN_HIGH
CALL GLCD_EN_LOW
CALL GLCD_EN_HIGH
CALL LE_PORT_B
MOV READ_DATA,AL
CALL GLCD_EN_LOW
CALL INICIALIZA_8255_PORTB_OUTPUT
RET
;---------------------------------------------------------
;---------------------------------------------------------
; AL = INDICE CARACTER FONT (COMECA EM 0)
; IMPRIME CARACTER NA LINHA E COLUNA DEFINIDA
PRINT_CAR:
PUSHF
PUSH AX
PUSH BX
PUSH CX
MOV BL,5
MUL BL
MOV BX,AX
MOV CX,5
PRINTING_CAR:
MOV AL,FONTS[BX]
CALL GLCD_WRITE
INC BX
LOOP PRINTING_CAR
POP CX
POP BX
POP AX
POPF
RET
;---------------------------------------------------------
; AH = COLUNA, AL=LINHA
; PRIMEIRO BYTE DO VETOR É NUMERO DE LINHAS E COLUNAS OCUPADAS
; EXEMPLO, IMAGEM DE 24X24 PIXELS = 3 LINHAS X 3 COLUNAS
PRINT_ICON:
PUSHF
PUSH AX
PUSH CX
MOV CL, DS:[SI]
MOV QNT_COLUNAS, CL ; QNT COLUNAS IMPRESSAS
MOV SALVA_QNT_COLUNAS, CL ; GUARDA QNT PARA NOVO LACO QNT COLUNAS IMPRESSAS
MOV POS_COLUNAS, AH ; COLUNA PASSADA COMO PARAMETRO
MOV CL, DS:[SI+1]
MOV LINHA, CL ;LINHA
ADD SI,2 ; APONTA PARA ICONE...
PRINT:
MOV CX,8
CALL GLCD_GOTO_XY_TEXT
PRINTING_ICON:
PUSH AX
MOV AL,DS:[SI]
CALL GLCD_WRITE
POP AX
INC SI
LOOP PRINTING_ICON
INC AH
DEC QNT_COLUNAS
JNE PRINT
MOV AH,SALVA_QNT_COLUNAS
MOV QNT_COLUNAS,AH
MOV AH,POS_COLUNAS
INC AL
DEC LINHA
JNE PRINT
POP CX
POP AX
POPF
RET
;---------------------------------------------------------
;ESTA ROTINA IMPRIME O GRAFICO APONTADO POR SI
PLOT_BMP:
PUSHF
PUSH AX
PUSH SI
MOV AL,0
MOV AH,0
PLOT:
CALL GLCD_GOTO_XY
PUSH AX
MOV AL,[SI]
CALL GLCD_WRITE
POP AX
INC SI
INC AH
CMP AH,127
JNE PLOT
MOV AH,0
INC AL
CMP AL,8
JNE PLOT
POP SI
POP AX
POPF
RET
;---------------------------------------------------------
;---------------------------------------------------------
;ATIVA O GLCD
GLCD_ATIVA:
CALL GLCD_CS1_HIGH
CALL GLCD_CS2_HIGH
CALL GLCD_RST_HIGH
CALL GLCD_ON
RET
;---------------------------------------------------------
;---------------------------------------------------------
;ESTAS ROTINAS APENAS GERAM PULSOS PARA O DISPLAY GRAFICO
GLCD_CS1_HIGH:
PUSHF
PUSH AX
OR GLCD_CONTROL, 32
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_CS1_LOW:
PUSHF
PUSH AX
MOV AL, 32
NOT AL
AND GLCD_CONTROL, AL
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_CS2_HIGH:
PUSHF
PUSH AX
OR GLCD_CONTROL, 16
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_CS2_LOW:
PUSHF
PUSH AX
MOV AL, 16
NOT AL
AND GLCD_CONTROL, AL
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_RST_HIGH:
PUSHF
PUSH AX
OR GLCD_CONTROL, 1
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_RST_LOW:
PUSHF
PUSH AX
MOV AL, 1
NOT AL
AND GLCD_CONTROL, AL
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_EN_HIGH:
PUSHF
PUSH AX
OR GLCD_CONTROL, 2
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_EN_LOW:
PUSHF
PUSH AX
MOV AL, 2
NOT AL
AND GLCD_CONTROL, AL
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_RW_HIGH:
PUSHF
PUSH AX
OR GLCD_CONTROL, 4
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_RW_LOW:
PUSHF
PUSH AX
MOV AL, 4
NOT AL
AND GLCD_CONTROL, AL
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_RS_HIGH:
PUSHF
PUSH AX
OR GLCD_CONTROL, 8
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
GLCD_RS_LOW:
PUSHF
PUSH AX
MOV AL, 8
NOT AL
AND GLCD_CONTROL, AL
MOV AL,GLCD_CONTROL
CALL MANDA_PORT_A
POP AX
POPF
RET
ENABLE_PULSE:
CALL GLCD_EN_HIGH
CALL GLCD_EN_LOW
RET
CODE ENDS
;MILHA PILHA
STACK SEGMENT STACK
DW 128 DUP(?)
STACK ENDS
;MEUS DADOS
DATA SEGMENT
DB "******"
MAPA DB 112 DUP (32), 0
X_PAC DB 0
Y_PAC DB 0
X_MAPA DB 0
Y_MAPA DB 0
VALOR_MAPA DB 0
CONTADOR_NUMEROS DB 10 DUP (0), "+"
ENTRA_COM_LETRA DB ?,"Pressione uma letra!", 13,10, 0
PONTUACAO DB 0
NUMEROS DB TAM_STRING DUP(' ')
ENTRE_NUMEROS DB ?,"Entre com uma sequencia de numeros",13,10,0
INICIO_JOGO DB ?,'Pressione a tecla enter',13,10,0
FRASE_DE_DERROTA DB ?,'Perdeu o jogo!',13,10,0
FRASE_DE_VITORIA DB ?,'Ganhou o jogo!',13,10,0
GLCD_CONTROL DB 0
GLCD_DATA DB 0
COL_DATA DB 0
COL_DATA_AUX DB 0
READ_DATA DB 0
LINHA DB 0
QNT_COLUNAS DB 0
SALVA_QNT_COLUNAS DB 0
POS_COLUNAS DB 0
SPESH_ABERTURA DB 16,8
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 07FH, 07FH, 07FH, 07FH, 07FH, 07FH, 07FH, 07FH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 07FH, 03FH, 00FH, 007H, 003H, 003H, 001H
DB 001H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 001H
DB 003H, 003H, 007H, 00FH, 01FH, 07FH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 01FH, 001H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 080H, 080H, 0C0H, 0C0H
DB 0E0H, 0E0H, 0F0H, 0F0H, 0F8H, 0F8H, 0FDH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 07FH
DB 03FH, 03FH, 07FH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 03FH
DB 03FH, 07FH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 03FH, 03FH, 07FH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0F8H, 080H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 002H, 002H, 003H, 003H, 003H, 007H, 007H, 007H
DB 007H, 007H, 007H, 007H, 00FH, 00FH, 08FH, 0EFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FEH, 0FEH, 0FEH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FCH
DB 0FCH, 0FEH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FCH, 0FCH, 0FEH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FEH, 0FCH, 0F0H, 0E0H, 0C0H, 0C0H, 080H
DB 080H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 080H
DB 0C0H, 0C0H, 0E0H, 0F0H, 0F8H, 0FEH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FEH, 0FEH, 0FEH, 0FEH, 0FEH, 0FEH, 0FEH, 0FEH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH
MIGUEL DB 8,4
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,07FH,07FH,07FH,07FH,07FH,07FH,07FH
DB 07FH,03FH,03FH,03FH,03FH,03FH,03FH,03FH,03FH,03FH,03FH,03FH,03FH,03FH,03FH,03FH
DB 03FH,03FH,01FH,01FH,01FH,01FH,01FH,03FH,03FH,03FH,03FH,03FH,03FH,07FH,07FH,07FH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,07FH,03FH,003H,011H,040H,040H,010H,010H,010H,070H,030H,070H
DB 070H,070H,040H,040H,000H,000H,000H,000H,000H,000H,000H,000H,0C0H,0C0H,0E0H,0E0H
DB 0E0H,0E0H,0E0H,0F0H,0F0H,0F8H,0F8H,078H,018H,038H,078H,07CH,0F8H,0F8H,0F8H,0F8H
DB 0FCH,0FFH,0DFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,003H,007H,037H,07FH,07FH
DB 07FH,06FH,0EFH,07FH,0FFH,0FFH,0FBH,071H,0C1H,000H,000H,000H,000H,000H,003H,003H
DB 003H,003H,000H,001H,001H,001H,07BH,0FDH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FCH,0F8H,0F0H,0F0H,0F0H,040H,000H,000H,000H
DB 001H,001H,001H,001H,003H,003H,003H,003H,003H,002H,002H,002H,002H,002H,002H,007H
DB 007H,007H,007H,007H,007H,067H,067H,073H,0F1H,0F0H,0F0H,0F0H,0F0H,0F0H,0F0H,070H
DB 070H,0F0H,0F8H,0FCH,0FEH,0FEH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,07FH,07FH,07FH
FULANO DB 8,7, 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,080H,0C0H,0E0H,0F0H,0F8H
DB 0FCH,0FCH,0FCH,0FCH,0FEH,07EH,03EH,07EH,03EH,03FH,03EH,03EH,03EH,03EH,03EH,03EH
DB 01CH,01CH,03CH,078H,060H,0E0H,080H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,03FH,07FH,0FFH,0FFH,0FFH
DB 01FH,001H,001H,021H,030H,030H,070H,060H,060H,018H,048H,060H,000H,000H,000H,000H
DB 018H,03CH,03CH,01CH,00CH,009H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,047H,0C3H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H,040H,000H,000H,004H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,080H,0C0H,0C0H,0E0H,0E0H,0F8H,0FCH,0FEH,0FFH
DB 0FEH,0FCH,0FCH,0FCH,0E8H,0FCH,0F8H,0E0H,0B0H,0E0H,0E0H,0A8H,000H,000H,010H,000H
DB 000H,000H,000H,080H,0E0H,0C0H,0C0H,080H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 0F0H,0F8H,0FCH,0FCH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FFH,0FFH,0FFH,0FCH
DB 0FCH,0FCH,0F8H,0CFH,01FH,0FFH,0FFH,07FH,0E3H,0E3H,0FFH,0FEH,0FEH,0FCH,0FCH,0FCH
DB 0FCH,0F8H,0F8H,0F0H,0E0H,0E0H,0E0H,0C0H,000H,000H,000H,000H,000H,000H,000H,000H
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F3H,0F9H,0F9H,0FFH,0FFH,0A7H,03FH,07FH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FCH,0F8H,0E0H,0C0H,080H,000H
DB 003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H
DB 003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H
DB 003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,001H,002H
DB 003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H,003H
FONTS DB 32*5 DUP(0)
DB 00H, 00H, 00H, 00H, 00H ; (space)
DB 00H, 00H, 5FH, 00H, 00H ; !
DB 00H, 07H, 00H, 07H, 00H ; "
DB 14H, 7FH, 14H, 7FH, 14H ; #
DB 24H, 2AH, 7FH, 2AH, 12H ; $
DB 23H, 13H, 08H, 64H, 62H ; %
DB 36H, 49H, 55H, 22H, 50H; &
DB 00H, 05H, 03H, 00H, 00H; '
DB 00H, 1CH, 22H, 41H, 00H; (
DB 00H, 41H, 22H, 1CH, 00H; )
DB 08H, 2AH, 1CH, 2AH, 08H; *
DB 08H, 08H, 3EH, 08H, 08H; +
DB 00H, 50H, 30H, 00H, 00H; H,
DB 08H, 08H, 08H, 08H, 08H; -
DB 00H, 60H, 60H, 00H, 00H; .
DB 20H, 10H, 08H, 04H, 02H; /
DB 3EH, 51H, 49H, 45H, 3EH; 0
DB 00H, 42H, 7FH, 40H, 00H; 1
DB 42H, 61H, 51H, 49H, 46H; 2
DB 21H, 41H, 45H, 4BH, 31H; 3
DB 18H, 14H, 12H, 7FH, 10H; 4
DB 27H, 45H, 45H, 45H, 39H; 5
DB 3CH, 4AH, 49H, 49H, 30H; 6
DB 01H, 71H, 09H, 05H, 03H; 7
DB 36H, 49H, 49H, 49H, 36H; 8
DB 06H, 49H, 49H, 29H, 1EH; 9
DB 00H, 36H, 36H, 00H, 00H; :
DB 00H, 56H, 36H, 00H, 00H; ;
DB 00H, 08H, 14H, 22H, 41H; <
DB 14H, 14H, 14H, 14H, 14H; =
DB 41H, 22H, 14H, 08H, 00H; >
DB 02H, 01H, 51H, 09H, 06H; ?
DB 32H, 49H, 79H, 41H, 3EH; @
DB 7EH, 11H, 11H, 11H, 7EH; A
DB 7FH, 49H, 49H, 49H, 36H; B
DB 3EH, 41H, 41H, 41H, 22H; C
DB 7FH, 41H, 41H, 22H, 1CH; D
DB 7FH, 49H, 49H, 49H, 41H; E
DB 7FH, 09H, 09H, 01H, 01H; F
DB 3EH, 41H, 41H, 51H, 32H; G
DB 7FH, 08H, 08H, 08H, 7FH; H
DB 00H, 41H, 7FH, 41H, 00H; I
DB 20H, 40H, 41H, 3FH, 01H; J
DB 7FH, 08H, 14H, 22H, 41H; K
DB 7FH, 40H, 40H, 40H, 40H; L
DB 7FH, 02H, 04H, 02H, 7FH; M
DB 7FH, 04H, 08H, 10H, 7FH; N
DB 3EH, 41H, 41H, 41H, 3EH; O
DB 7FH, 09H, 09H, 09H, 06H; P
DB 3EH, 41H, 51H, 21H, 5EH; Q
DB 7FH, 09H, 19H, 29H, 46H; R
DB 46H, 49H, 49H, 49H, 31H; S
DB 01H, 01H, 7FH, 01H, 01H; T
DB 3FH, 40H, 40H, 40H, 3FH; U
DB 1FH, 20H, 40H, 20H, 1FH; V
DB 7FH, 20H, 18H, 20H, 7FH; W
DB 63H, 14H, 08H, 14H, 63H; X
DB 03H, 04H, 78H, 04H, 03H; Y
DB 61H, 51H, 49H, 45H, 43H; Z
DB 00H, 00H, 7FH, 41H, 41H; [
DB 02H, 04H, 08H, 10H, 20H; "\"
DB 41H, 41H, 7FH, 00H, 00H; ]
DB 04H, 02H, 01H, 02H, 04H; ^
DB 40H, 40H, 40H, 40H, 40H; _
DB 00H, 01H, 02H, 04H, 00H; `
DB 20H, 54H, 54H, 54H, 78H; a
DB 7FH, 48H, 44H, 44H, 38H; b
DB 38H, 44H, 44H, 44H, 20H; c
DB 38H, 44H, 44H, 48H, 7FH; d
DB 38H, 54H, 54H, 54H, 18H; e
DB 08H, 7EH, 09H, 01H, 02H; f
DB 08H, 14H, 54H, 54H, 3CH; g
DB 7FH, 08H, 04H, 04H, 78H; h
DB 00H, 44H, 7DH, 40H, 00H; i
DB 20H, 40H, 44H, 3DH, 00H; j
DB 00H, 7FH, 10H, 28H, 44H; k
DB 00H, 41H, 7FH, 40H, 00H; l
DB 7CH, 04H, 18H, 04H, 78H; m
DB 7CH, 08H, 04H, 04H, 78H; n
DB 38H, 44H, 44H, 44H, 38H; o
DB 7CH, 14H, 14H, 14H, 08H; p
DB 08H, 14H, 14H, 18H, 7CH; q
DB 7CH, 08H, 04H, 04H, 08H; r
DB 48H, 54H, 54H, 54H, 20H; s
DB 04H, 3FH, 44H, 40H, 20H; t
DB 3CH, 40H, 40H, 20H, 7CH; u
DB 1CH, 20H, 40H, 20H, 1CH; v
DB 3CH, 40H, 30H, 40H, 3CH; w
DB 44H, 28H, 10H, 28H, 44H; x
DB 0CH, 50H, 50H, 50H, 3CH; y
DB 44H, 64H, 54H, 4CH, 44H; z
DB 00H, 08H, 36H, 41H, 00H; {
DB 00H, 00H, 7FH, 00H, 00H; |
DB 00H, 41H, 36H, 08H, 00H; }
DB 08H, 08H, 2AH, 1CH, 08H; ->
DB 08H, 1CH, 2AH, 08H, 08H ; <-
DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH; CAIXA PRETA
DB 07EH, 0FDH, 0F7H, 0E3H, 041H ;PACK-MAN DIREITA
DB 041H, 0E3H, 0F7H, 0FDH, 07EH ; PACK-MAN ESQUERDA
DB 07EH, 03FH, 01FH, 03BH, 07EH ; PACK-MAN BAIXO
DB 07EH, 0FCH, 0F8H, 0DCH, 07EH ; PACK-MAN CIMA
DB 038H, 07CH, 07FH, 07DH, 038H ; LARANJA
TABELA DB 0111111b,0000110b,1011011b,1001111b
DB 1100110b,1101101b,1111101b,0000111b
DB 1111111b,1101111b,1110111b,1111100b
DB 0111001b,1011110b,1111001b,1110001b
SEGUNDOS_UNID DB 0
SEGUNDOS_DEZ DB 0
TEXTO DB ?,TAM_STRING+1 DUP(?)
CONTADOR_LETRAS DB 0
MENSAGEM DB "MIGUEL ALEXANDRE WISINTAINER",13,10,0
SEED DW 2332h
RNDNUM DW 0
DB '++++++++++'
CONTADOR_SEED DB 0 ; SEED PARA NUMERO ALEATORIO
DATA ENDS
;EXTRA
EXTRA SEGMENT
EXTRA ENDS
end inicio
-

tcpipchip
- Dword
-
- Mensagens: 6560
- Registrado em: 11 Out 2006 22:32
- Localização: TCPIPCHIPizinho!
Voltar para Intel x86
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante