; "SCROLLING HARD VERTICAL
; PAR SNN 3/03/98
;
run &3000
JP &3000

NOLIST
ORG &3000 
CALL DELOCK

REINIT
XOR A
LD HL,0
LD (OFFSET),HL
LD (COMPT),A
LD HL,&C000
LD (ADR),HL
LD BC,&BC02
OUT(C),C
LD BC,&BD00+43
OUT(C),C
LD BC,&BC01
OUT(C),C
LD BC,&BD00+32
OUT(C),C
LD BC,&BC06
OUT(C),C
LD BC,&BD00+31
OUT(C),C
LD BC,&BC07
OUT (C),C
LD BC,&BD00+34
OUT(C),C
DI
LD HL,(&38) 
LD (INTER),HL
LD HL,&C9FB 
LD(&38),HL 
EI

; DEBUT SYNCHRO
START  
LD B,&F5 
SYNCHRO IN A,(C)
RRA
JR NC,SYNCHRO
LD BC,&7FB8
OUT(C),C
LD A,(COMPT)
AND %111
RLA
RLA
RLA
RLA
LD (SSCR),A
OR A ; Doit-on toucher l'offset ?
JR NZ,SUITE
LD HL,(OFFSET)
LD BC,32
ADD HL,BC
LD (OFFSET),HL
LD A,H
AND %11
OR &30
LD BC,&BC0C
OUT(C),C
LD BC,&BD00
OUT(C),A
LD A,L
LD BC,&BC0D
OUT(C),C
LD BC,&BD00
OUT (C),A
SUITE   LD BC,&7FA0
OUT(C),C
LD DE,(ADR) 
CALL BC26
LD(ADR),DE

; AFFICHAGE DU SCROLLING
; GESTION COMPTEUR + TEST CLAVIER
LD A,(COMPT) 
INC A 
LD (COMPT),A
KEY     LD BC,&F40E 
OUT (C),C
LD BC,&F6C0 
OUT (C),C 
XOR A
OUT (C),C
LD BC,&F792
OUT (C),C
LD BC,&F640
OUT(C),C
LD B,&F4
IN A,(C)
LD BC,&F782
OUT(C),C
LD BC,&F600
OUT(C),C
RLA
RLA
JP C,START
FIN     LD BC,&7FB8 
OUT(C),C 
XOR A 
LD (SSCR),A 
LD BC,&7FA0 
OUT(C),C
DI
LD HL,(INTER) 
LD(&38),HL 
EI
LD BC,&BC01
OUT (C),C
LD BC,&BD00+40
OUT (C),C
LD BC,&BC02
OUT (C),C
LD BC,&BD00+46
OUT (C),C
LD BC,&BC06
OUT(C),C
LD BC,&BD00+25
OUT (C),C
LD BC,&BC07
OUT (C),C
LD BC,&BD00+30
OUT (C),C
LD A,2
CALL &BC0E
RET

;SOUS-PROGRAMMES
DELOCK  DI
LD E,17
LD HL,TABASIC
LD BC,#BC00
SASIC   LD A,(HL)
OUT (C),A
INC HL
DEC E
JR NZ,SASIC
RET
BC26    LD A,D 
ADD A,8
LD D,A
RET NC
LD BC,&C000+64 
EX DE,HL
ADD HL,BC 
EX DE,HL 
RET

; EQUIVALENCE
SSCR    EQU &6804

; TABLEAU DE VALEURS
COMPT   NOP
INTER   DS 2
TABASIC DB 255,0,255,119,179 
DB 81,168,212,98,57,156
DB 70,43,21,138,205 
DB 238
OFFSET  DS 2
ADR     DS 2