hola amigos,
o estáis todos de fiesta o estoy perdiendo el poder de convocatoria ...
Además de la rutina que está encima de este mensaje, añado otra que también contiene algunos IN y OUT y, la verdad
es que NO se que debo convertir a 6809 si no tengo la menor idea de que hacen estas sentencias y no solamente ellas en solitario
sino además la forma en que se tratan los datos leídos del port ...
A ver si nos sacáis del punto muerto en que nos hemos atascado ...
saludos
pere
; (#24# --) ; Algo con la Impresora ???
L_8B22: LD A,(L_B6F2) ; 8B22 3A F2 B6 ; recupera L_B6F2 (flag imprimir o no)
AND A ; 8B25 A7 ; es 0 (no)?
RET Z ; 8B26 C8 ; si, retorna
PUSH HL ; 8B27 E5 ; guarda HL
PUSH DE ; 8B28 D5 ; guarda DE
PUSH BC ; 8B29 C5 ; guarda BC
LD D, $01 ; 8B2A 16 01 ; pone 1 en D
LD HL, $5020 ; 8B2C 21 20 50 ; apunta a inicio linea 18 de pantalla
XOR A ; 8B2F AF ; pone 0 en A y
LD E, A ; 8B30 5F ; en E, DE = $100
i_8B31: OUT ($FB), A ; 8B31 D3 FB ; ???
i_8B33: IN A, ($FB) ; 8B33 DB FB ; Lee teclado (Q-W-E-R-T)
ADD A, A ; 8B35 87 ; duplica A (mueve A a la izquierda 1 bit) bit6 pasa al bit7
JP M, i_8B74 ; 8B36 FA 74 8B ; Si es negativo (bit7 a 1), salta a i_8B74
JR NC, i_8B33 ; 8B39 30 F8 ; si no ha habido Carry, salta a i_8B33
PUSH HL ; 8B3B E5 ; Guarda HL
PUSH DE ; 8B3C D5 ; Guarda DE
LD A, D ; 8B3D 7A ; pasa D a A
CP $02 ; 8B3E FE 02 ; es 2? se usa para afectar al Carry
SBC A, A ; 8B40 9F ; A = A - A - Carry
AND E ; 8B41 A3 ; A = A AND E
RLCA ; 8B42 07 ; Rota a la izq circular A (b7 pasa al Carry y al b0)
AND E ; 8B43 A3 ; A = A AND E
LD D, A ; 8B44 57 ; guarda resultado en D
i_8B45: LD C, (HL) ; 8B45 4E ; recupera contenido byte de pantalla
PUSH HL ; 8B46 E5 ; Guarda HL
LD B, $08 ; 8B47 06 08 ; B = 8
i_8B49: LD A, D ; 8B49 7A ; recupera A de D
RLC C ; 8B4A CB 01 ; Rota a la Izq circular C (b7 pasa al Carry y al b0)
RRA ; 8B4C 1F ; Rota a la Der circular A (b0 pasa al carry y Carry al b7)
LD H, A ; 8B4D 67 ; guarda valor en H
i_8B4E: IN A, ($FB) ; 8B4E DB FB ; Lee teclado (Q-W-E-R-T)
RRA ; 8B50 1F ; Rota a la Derecha A
JR NC, i_8B4E ; 8B51 30 FB ; si no ha habido Carry, salta a i_8B4E
LD A, H ; 8B53 7C ; recupera A
OUT ($FB), A ; 8B54 D3 FB ; ???
DJNZ i_8B49 ; 8B56 10 F1 ; decrementa contador, si no es cero, vuelve a i_8B49 (8 veces)
POP HL ; 8B58 E1 ; Recupera HL
INC HL ; 8B59 23 ; Incrementa HL
LD A, L ; 8B5A 7D ; pasa L a A
AND $1F ; 8B5B E6 1F ; se queda con los bits 4-3-2-1-0
JR NZ, i_8B45 ; 8B5D 20 E6 ; si no es cero, vuelve a i_8B45
i_8B5F: IN A, ($FB) ; 8B5F DB FB ; Lee teclado (Q-W-E-R-T)
RRA ; 8B61 1F ; Rota a la Derecha A
JR NC, i_8B5F ; 8B62 30 FB ; si no ha habido Carry, salta a i_8B5F
LD A, D ; 8B64 7A ; guarda D en A
RRCA ; 8B65 0F ; Rota a la Der circular a A (bit0 al carry y al b7)
OUT ($FB), A ; 8B66 D3 FB ; ???
POP DE ; 8B68 D1 ; Recupera DE
POP HL ; 8B69 E1 ; Recupera HL
INC H ; 8B6A 24 ; Incrementa H (suma 256 a HL)
INC E ; 8B6B 1C ; Incrementa E
BIT 3, E ; 8B6C CB 5B ; esta a 1 el bit3 de E?
JR Z, i_8B31 ; 8B6E 28 C1 ; no, salta a i_8B31
LD A, $04 ; 8B70 3E 04 ; A = 4
OUT ($FB), A ; 8B72 D3 FB ; ???
i_8B74: POP BC ; 8B74 C1 ; Recupera BC
POP DE ; 8B75 D1 ; Recupera DE
POP HL ; 8B76 E1 ; Recupera HL
RET ; 8B77 C9 ; Retorna