org &8B20
CALL &BB4E
CALL &BC02
;mode 1
LD A,1
CALL &BC0E
;border 26
LD BC,&1A1A
CALL &BC38
;ink 0,26
XOR A
LD BC,&1A1A
CALL &BC32
;ink 1,0
LD A,1
LD BC,&0000
CALL &BC32
;pen 1
LD A,1
CALL &BB90
;Windows
LD H,4
LD D,35
LD L,0
LD E,25
CALL &BB66
;demarrer la zic sous interruption + vumetre
CALL &3300
;nombre de texte
LD B,25
LD HL,&4000 ;adr deb dessins ASCII
.BOUCLE
CALL AFFICHAGE_ASCII
;CALL &BB06
;pas terrible ma temporisation
LD A,30
.TEMPO
CALL &BD19
DEC A
CP 0
JR NZ,TEMPO
INC HL
PUSH HL ;sauver la progression
PUSH BC
;locate 1,1
LD HL,&0101
CALL &BB75
;restaurer la progression
POP BC
POP HL
;A t'on tout lu ?
DEC B
LD A,B
CP 0
JR NZ,BOUCLE
;finalement on ne va pas arrêter mais bloquer ici indéfiniment :-)
.loopinfini
JP loopinfini
;arrêt zic sous interruption
;CALL &BCC8
;CALL &BCA7
RET
;affichage texte
.AFFICHAGE_ASCII
LD A,(HL)
CP &FF ;arrêt si on trouve un &FF
RET Z
CALL &BB5A
INC HL
JR AFFICHAGE_ASCII
;lire canaux
.valuecanaux
ds 3
.lirelescanaux
LD B,&03
LD DE,&FFF8
LD HL,valuecanaux
.LIRECANAUX
PUSH BC
LD A,B
ADD &07
LD C,A
LD B,&74
OUT (C),C
LD B,&76
IN A,(C)
OR &C0
OUT (C),A
AND &30
OUT (C),A
LD BC,&F792
OUT (C),C
LD C,A
PUSH BC
DEC B
OR &40
OUT (C),A
IN A,(&F4)
AND &0F
LD (HL),A
POP BC
LD A,&82
OUT (C),A
DEC B
OUT (C),C
INC HL
POP BC
DJNZ LIRECANAUX
milieuA EQU &D7A7
milieuB EQU &E7A7
milieuC EQU &F7A7
remplirvumetre EQU &BB
vidervumetre EQU &00
.affichervumetre
LD HL,milieuA-&20
CALL debut
LD HL,milieuB-&20
CALL debut
LD HL,milieuC-&20
CALL debut
JR affligne
.debut
LD A,&40
.viderlevumetre
LD (HL),vidervumetre
INC HL
DEC A
CP 0
JR NZ,viderlevumetre
RET
.affligne
LD A,(valuecanaux)
LD HL,milieuA
CALL sousroutineaffichagegauche
LD A,(valuecanaux)
LD HL,milieuA
CALL sousroutineaffichagedroite
LD A,(valuecanaux+1)
LD HL,milieuB
CALL sousroutineaffichagegauche
LD A,(valuecanaux+1)
LD HL,milieuB
CALL sousroutineaffichagedroite
LD A,(valuecanaux+2)
LD HL,milieuC
CALL sousroutineaffichagegauche
LD A,(valuecanaux+2)
LD HL,milieuC
CALL sousroutineaffichagedroite
RET
.sousroutineaffichagegauche
ADD A
INC A
.sousroutineaffichagegauche2
LD (HL),remplirvumetre
DEC HL
DEC A
JR NZ,sousroutineaffichagegauche2
RET
.sousroutineaffichagedroite
ADD A
INC A
.sousroutineaffichagedroite2
LD (HL),remplirvumetre
INC HL
DEC A
JR NZ,sousroutineaffichagedroite2
RET