;
; ; Logon System 1989 ; ; Written by LongShot : 30/11/89 ; ; Amazing Demo Copier including Formatter ; ; ORG #100 ; TT EQU 64+31 FF EQU 64+4 ; J NUMSUIV DI Interrupt Out LD (NUMSUIV),A On s CALL INIT ; REMAKE LD A,1 Motor On CALL MOTOR CALL MOTOR ; CALL TRAK00 ; ; ; Lire 5 secteurs Counter Grx ; LD B,5 INITRS PUSH BC LD HL,LIRES1 Lire Secteur #43.#44.#45.#46.#47 CALL ENVOIP ; LD (SIX1+2),HL SIX1 LD IX,0000 BIT 7,(IX-6) JP Z,READERR LD HL,NSEC1 INC (HL) Num Sec + 1 INC HL INC HL INC (HL) Idem INC HL INC HL INC HL INC HL INC (HL) Buffer + 512 INC (HL) POP BC DJNZ INITRS ; ; Decompacter Secteurs ; LD HL,#B400 Buffer Address LD DE,#C000 Video Dest DECOMP LD A,(HL) CP 36 JR Z,DECW CP 37 JR Z,DECB CALL STBYDE INC HL JR DECOMP DECW INC HL LD A,(HL) LD (DECW1+1),A INC HL LD C,(HL) INC HL LD B,(HL) INC HL DECW1 LD A,0 CALL STBYDE DEC BC LD A,B OR C JR NZ,DECW1 JR DECOMP DECB INC HL LD A,(HL) INC HL LD B,(HL) INC HL LD C,A OR B B=A=0 JR Z,FINDEC LD A,C DECB1 CALL STBYDE DJNZ DECB1 JR DECOMP FINDEC Fin de Decompactage ; CALL GENVID2 Crt Normal + Couleur ; LD HL,#F940 Complete Part 1 Digit LD DE,#C190 CALL COMPLI LD HL,#FC10 Complete Part 2 LD DE,#C460 CALL COMPLI ; ; LD A,(FLAGRAM) Memoire Dispo ? OR A JP Z,GEST128 Oui ; GEST064 LD D,1 LD C,0 LD A,3 G64R1 PUSH AF PUSH DE PUSH BC CALL ECRRE LD HL,READSEC LD (MODRW+1),HL CALL RWRAMC Burp ! LD A,1 CALL CHGDISK FLST1 LD A,0 OR A JR NZ,NOFLST INC A LD (FLST1+1),A CALL FORMDK NOFLST CALL ECRWR LD HL,WRITSEC LD (MODRW+1),HL POP BC POP DE CALL RWRAMC PUSH BC PUSH DE XOR A CALL CHGDISK POP DE POP BC POP AF DEC A JR NZ,G64R1 PUSH DE PUSH BC CALL ECRRE LD HL,READSEC LD (MODRW+1),HL LD A,155 CALL RWRAMC1 LD HL,#AC00 CALL READSYS LD A,1 CALL CHGDISK CALL ECRWR POP BC POP DE LD HL,WRITSEC LD (MODRW+1),HL LD A,155 CALL RWRAMC1 LD HL,#AC00 CALL WRITSYS JP FINCOPY ; ; GEST128 ; On va engloutir 256 secteurs soit 64 Kb de donnees ; CALL ECRRE LD HL,READSEC LD (MODRW+1),HL CALL RWBANK Burp ! CALL RWRAMC LD A,1 CALL CHGDISK Change Disk CALL FORMDK Formate Dk Dest CALL ECRWR LD HL,WRITSEC LD (MODRW+1),HL CALL RWBANK Save Sect : Bleuuaaarrp ! CALL RWRAMC PUSH BC Sauve Piste/Sect PUSH DE XOR A CALL CHGDISK CALL ECRRE LD HL,READSEC LD (MODRW+1),HL LD A,3 CALL RWBANK1 CALL RWBANK2 LD HL,#1000 CALL READSYS LD A,1 CALL CHGDISK CALL ECRWR POP DE POP BC LD HL,WRITSEC LD (MODRW+1),HL LD A,3 CALL RWBANK1 CALL RWBANK2 LD HL,#1000 CALL WRITSYS JP FINCOPY ; ECRWR PUSH HL LD HL,CHAINE3 ECRPR PUSH DE PUSH BC LD DE,#D815 CALL AFFSTR1 POP BC POP DE POP HL RET ECRRE PUSH HL LD HL,CHAINE2 JR ECRPR ; RWBANK LD A,4 4 Banques LD D,1 Piste 1 LD C,0 Sector 0 RWBANK1 PUSH AF ADD A,#C3 LD B,#7F Ram Selection OUT (C),A LD A,#40 Buffer en #4000 LD (BUFFER+1),A LD B,A Pour 64 secteurs CALL RW256 POP AF DEC A JR NZ,RWBANK1 RET ; RWRAMC LD A,175 RWRAMC1 LD B,#7F Select Standard Ram LD L,#C0 OUT (C),L LD B,A LD A,#10 LD (BUFFER+1),A En #1000 JP RW256 ; RWBANK2 LD A,#C7 En Bank 7 LD B,#7F OUT (C),A LD A,#40 LD (BUFFER+1),A LD B,57 57 Secteurs JP RW256 ; ; ; Lecture de la piste systeme en HL de RamC ; READSYS LD BC,#7FC0 OUT (C),C LD (BUFSYS),HL LD (ADRSYS+1),HL CALL TRAK00 LD A,#41 LD (NSEC1),A LD (NSEC2),A LD B,9 Lire 9 Sect Syst RSYS1 PUSH BC LD HL,LIRES1 Lire Secteur #41 a #49 CALL ENVOIP LD (SIX2+2),HL SIX2 LD IX,0000 BIT 7,(IX-6) JP Z,READERR LD HL,NSEC1 INC (HL) Num Sec + 1 INC HL INC HL INC (HL) Idem INC HL INC HL INC HL INC HL INC (HL) Buffer + 512 INC (HL) POP BC DJNZ RSYS1 ; ; Gestion numero de la copie ; ADRSYS LD HL,0000 LD BC,500 ADD HL,BC LD (GNCOP1+1),HL LD (GNCOP2+1),HL GNCOP1 LD HL,(0) INC HL GNCOP2 LD (0),HL RET ; ; WRITSYS LD BC,#7FC0 OUT (C),C LD (ADRBS+1),HL CALL TRAK00 LD A,#41 LD (NSW1),A LD (NSW2),A LD B,9 Ecrire 9 Sect Syst WSYS1 PUSH BC LD HL,WRITS1 Ecrire Secteur #41 a #49 CALL ENVOITAB ADRBS LD HL,0000 CALL ENVTF LD HL,NSW1 INC (HL) Num Sec + 1 INC HL INC HL INC (HL) Idem LD HL,ADRBS+2 INC (HL) INC (HL) POP BC DJNZ WSYS1 RET ; ; Lecture de B secteurs a partir de la piste D Secteur C ; RW256 CALL NEWTRAK LD A,41 SUB D CALL AFFDIGIT RWBP PUSH BC PUSH DE MODRW CALL READSEC ; New Track 1ere fois POP DE POP BC INC C Secteur +1 LD A,C CP 17 = 17 ? JR NZ,RWNNP Non INC D Nlle Piste CALL NEWTRAK LD A,41 SUB D CALL AFFDIGIT LD C,0 Nouveau Secteur RWNNP LD HL,BUFFER+1 Buffer Load + 256 INC (HL) DJNZ RWBP Lire ts les secteurs RET ; ; Se placer sur la piste D ; NEWTRAK PUSH DE PUSH BC LD A,D LD (NUMPI),A Tab Track LD (PISTS),A Tab Sector LD (PISTW),A LD HL,PISTE Tab Rech Piste CALL ENVOIP Envoi au FDC ARRPI LD HL,PISTEOK Tab Control Exec Finie CALL ENVOIP BIT 0,A Execution Commande Finie ? JR NZ,ARRPI Non Redemande POP BC POP DE RET ; ; TRAK00 PUSH DE PUSH BC LD HL,PISTE00 CALL ENVOITAB JR ARRPI ; ; Lire le secteur C ; READSEC LD A,C LD (NUMSEC),A LD (NUMSEC1),A LD HL,LIRESEC Tab Read Secteur CALL ENVOIP LD (SIX3+2),HL SIX3 LD IX,0000 BIT 7,(IX-6) RET NZ READERR LD HL,STERR3 ERROR PUSH HL CALL GENVID1 POP HL LD DE,#D805 CALL AFFSTR2 LD E,#45 WKERR CALL AKEY RLCA JP C,WKERR FINCOPY LD SP,#100 CALL GENVID1 LD HL,#C9FB LD (#38),HL LD SP,#100 XOR A CALL MOTOR EI BCLP LD B,#F5 WSYNC IN A,(C) RRA JP NC,WSYNC LD HL,#D801 LD DE,#D800 LD BC,79 LDIR LD HL,#E001 LD DE,#E000 LD BC,79 LDIR LD HL,#E801 LD DE,#E800 LD BC,79 LDIR LD HL,#F001 LD DE,#F000 LD BC,79 LDIR LD HL,#F801 LD DE,#F800 LD BC,79 LDIR LD HL,#C051 LD DE,#C050 LD BC,79 LDIR LD HL,#C851 LD DE,#C850 LD BC,79 LDIR LD HL,#D051 LD DE,#D050 LD BC,79 LDIR STRPTR LD HL,STRSCRO LD A,(HL) CP #FF JR NZ,NENDSCR LD HL,STRSCRO LD (STRPTR+1),HL LD A,(HL) NENDSCR LD C,A FLMODC LD A,0 XOR 1 LD (FLMODC+1),A JR NZ,NNEWPTR INC HL LD (STRPTR+1),HL NNEWPTR LD B,0 SLA C SLA C SLA C RL B SLA C RL B LD HL,FONTE1 ADD HL,BC OR A JR NZ,NOINCDA INC HL NOINCDA LD DE,#D84F LD B,8 AFFCASC LD A,(HL) LD (DE),A INC HL INC HL CALL LSUIVDE DJNZ AFFCASC LD E,#41 CALL AKEY BIT 1,A JR Z,OTHER LD E,#47 CALL AKEY CP #FF JR NZ,EXIT DEC E CALL AKEY CP #FF JR NZ,EXIT DEC E CALL AKEY CP #FF JR NZ,EXIT DEC E JP BCLP EXIT JR EXIT OTHER LD A,#43 LD (NSEC1),A LD (NSEC2),A LD HL,#B200 LD (BUFSYS),HL LD HL,STRSCRO LD (STRPTR+1),HL XOR A LD (COUNTL),A INC A CALL MOTOR CALL MOTOR LD HL,#1000 LD DE,#1001 LD BC,#EFFF LD (HL),0 LDIR CALL GENVID2 JP REMAKE ; ; ; Ecrire le secteur C ; WRITSEC LD A,C LD (NUMSEW),A LD (NUMSEW1),A LD HL,WRITESEC CALL ENVOITAB LD HL,(BUFFER) JP ENVTF ; ; Formatage Amazing Format ; FORMDK ; Formatage de la premiere piste standard ; PUSH BC PUSH DE ; LD HL,CHAINE1 Formatting Track LD DE,#D815 CALL AFFSTR1 ; XOR A CALL AFFDIGIT ; CALL TRAK00 Sur Piste 00 CALL FORMATT1 ; ; Formatage des 40 autres Demo System ; LD B,40 CONTFOR PUSH BC LD A,41 SUB B LD HL,TF2 LD B,17 INITTF2 LD (HL),A INC HL INC HL INC HL INC HL DJNZ INITTF2 LD D,A CALL AFFDIGIT CALL NEWTRAK CALL FORMATT2 POP BC DJNZ CONTFOR POP DE POP BC RET ; FORMATT1 LD HL,FORCOM1 CALL ENVOITAB Envoi de la commande LD HL,TF1 Envoi des Id en phase exec JR ENVTF ENTTAB INC C LD A,(HL) OUT (C),A DEC C INC HL ENVTF IN A,(C) JP P,ENVTF AND #20 acore des donnees ? Aga ! JR NZ,ENTTAB LD HL,ZONE CALL PHASER1 Ok pour Phase Resultat LD A,(ZONE+1) Write Protect Disk BIT 1,A JR NZ,WRPRO RET RLA No Disk in Drive RET C LD HL,STERR1 JP ERROR WRPRO LD HL,STERR2 JP ERROR ; FORMATT2 LD HL,FORCOM2 CALL ENVOITAB LD HL,TF2 JR ENVTF ; ; Changement de Dk demande ; CHGDISK PUSH HL PUSH BC PUSH DE PUSH AF CALL GENVID1 Ok pour Status Line POP AF LD HL,CHAINE4 OR A JR Z,OKWAIT LD HL,CHAINE5 OKWAIT LD DE,#D805 CALL AFFSTR2 ; WAIT LD BC,#F6C0 OUT (C),C LD BC,#F40E OUT (C),C LD BC,#F792 OUT (C),C LD BC,#F648 OUT (C),C LD B,#F4 IN E,(C) LD BC,#F645 OUT (C),C LD B,#F4 IN A,(C) LD BC,#F782 OUT (C),C LD BC,#F600 OUT (C),C BIT 2,E JP Z,FINCOPY RLCA JP C,WAIT ; CALL GENVID2 ; POP DE POP BC POP HL RET ; AKEY LD BC,#F6C0 OUT (C),C LD BC,#F40E OUT (C),C LD BC,#F792 OUT (C),C DEC B OUT (C),E LD B,#F4 IN A,(C) LD BC,#F782 OUT (C),C LD BC,#F600 OUT (C),C RET ; GENVID2 CALL RESTO LD B,#7F Ink 1 sur Texte On LD HL,#014A OUT (C),H OUT (C),L LD A,#8C OUT (C),A JR BLANKST ; GENVID1 LD BC,#7F10 LD HL,#0040 OUT (C),C OUT (C),L OUT (C),H OUT (C),L LD HL,#014B OUT (C),H OUT (C),L LD HL,#0254 OUT (C),H OUT (C),L LD A,#8D OUT (C),A LD BC,#BC06 OUT (C),C LD BC,#BD02 OUT (C),C LD BC,#BC07 OUT (C),C LD BC,#BD15 OUT (C),C BLANKST LD B,8 LD HL,#C000 LD DE,#C001 BLKS1 PUSH BC PUSH HL LD (HL),0 LD BC,159 LDIR POP HL POP BC LD A,H ADD A,8 LD H,A LD D,A LD E,1 DJNZ BLKS1 RET ; ; Affichage d'une chaine HL en DE : Utilisation du Mode 0 ; Fonte : Fonte0 Copyright Logon System ; AFFSTR1 XOR A LD (FLAGM+1),A AFFST11 LD A,(HL) CP #FF RET Z CALL AFFCAR1 INC HL JR AFFST11 ; ; Affichage d'une chaine HL en DE : Mode 1 ; Fonte : FlySpy Fonte rippee par LongShot ; AFFSTR2 LD A,(HL) CP #FF RET Z CALL AFFCAR2 INC HL JR AFFSTR2 ; AFFCAR1 PUSH HL SLA A Car x 4 SLA A LD C,A LD B,0 LD HL,FONTE0 Ptr dans Fonte ADD HL,BC PUSH DE Sauve Grx Ptr FLAGM LD A,0 XOR 1 LD (FLAGM+1),A JR NZ,GEST1 CALL AFFCA2 POP DE INC DE JR AFFCS GEST1 CALL AFFCA1 POP DE AFFCS INC DE INC DE POP HL RET ; ; AFFCA1 LD B,4 4 Byte Stockage AFFC2 PUSH BC LD C,(HL) Lire Byte LD B,2 2 Ligne par Byte AFFC1 XOR A A=0 SRL C RRA SRL C RRA LD (DE),A Stockage 2 premiers pixels XOR A SRL C RRA SRL C RRA INC DE LD (DE),A Stockage 2 pixels suivants DEC DE CALL LSUIVDE DJNZ AFFC1 2 lignes a faire INC HL Byte suivant POP BC Tt ceci 4 fois DJNZ AFFC2 RET ; ; ; AFFCA2 LD B,4 AFFC4 PUSH BC LD A,2 LD C,(HL) AFFC3 EX AF,AF XOR A LD B,C Sauve Bit 2 SRL C Ejecte ; XOR A SRL C Sort Bit 1 RRA Entre OR A RRA Blank 1er Pixel LD (DE),A Stockage 2 premiers pixels ; XOR A SRL C Sort Bit 4 RRA INC DE INC DE LD (DE),A DEC DE ; XOR A SRL C Sort Bit 3 RRA RR B Placer Bit 2 RRA LD (DE),A DEC DE CALL LSUIVDE EX AF,AF DEC A JR NZ,AFFC3 ; INC HL Byte suivant POP BC Tt ceci 4 fois DJNZ AFFC4 RET ; AFFCAR2 PUSH HL PUSH DE LD B,0 SLA A Car x 16 SLA A SLA A RL B SLA A RL B LD C,A LD HL,FONTE1 ADD HL,BC LD B,8 AFFCT2 LD A,(HL) LD (DE),A INC DE INC HL LD A,(HL) LD (DE),A INC HL DEC DE CALL LSUIVDE DJNZ AFFCT2 POP DE POP HL INC DE INC DE RET ; ; LSUIVDE LD A,D Ligne suivante ADD A,8 LD D,A RET NC LD A,E ADD A,80 LD E,A LD A,D ADC A,#C0 LD D,A RET ; ; FONTE0 DB #79,#F7,#77,#07 DB #7B,#B7,#77,#0B DB #3D,#33,#33,#0D DB #7B,#77,#77,#0B DB #3F,#B3,#33,#0F DB #3F,#B3,#33,#03 DB #7F,#F3,#77,#0F DB #77,#F7,#77,#07 DB #99,#99,#99,#09 DB #99,#99,#99,#03 DB #77,#BB,#77,#07 DB #33,#33,#F3,#0F DB #F6,#77,#77,#07 DB #76,#6E,#66,#06 DB #79,#77,#77,#09 DB #7B,#B7,#33,#03 DB #79,#77,#B7,#0D DB #7B,#B7,#77,#07 DB #3F,#F3,#CC,#0F DB #9F,#99,#99,#09 DB #77,#77,#77,#09 DB #77,#77,#57,#08 DB #77,#77,#F7,#07 DB #66,#98,#61,#06 DB #66,#96,#99,#09 DB #4F,#94,#22,#0F DB #00,#00,#00,#00 ; FONTE1 ; DB #10,#80,#04,#40 DB #29,#28,#38,#A0 DB #08,#20,#29,#28 DB #28,#28,#0C,#0C DB #70,#E0,#0B,#1C DB #48,#14,#78,#E0 DB #0B,#1C,#48,#14 DB #78,#C0,#0F,#0E DB #10,#F0,#00,#10 DB #14,#0E,#14,#02 DB #14,#00,#04,#F0 DB #06,#10,#03,#0E DB #70,#E0,#08,#10 DB #29,#1C,#28,#14 DB #28,#14,#38,#D0 DB #08,#00,#0F,#0C DB #70,#F0,#08,#10 DB #29,#0E,#38,#C0 DB #29,#08,#38,#F0 DB #08,#10,#0F,#0E DB #70,#F0,#08,#10 DB #29,#0E,#38,#C0 DB #28,#40,#29,#08 DB #28,#00,#0C,#00 DB #30,#E0,#00,#10 DB #29,#0E,#28,#70 DB #28,#1C,#38,#D0 DB #0C,#20,#07,#0C DB #60,#30,#28,#14 DB #38,#D0,#28,#10 DB #29,#1C,#28,#14 DB #28,#14,#0C,#06 DB #30,#F0,#04,#10 DB #07,#42,#01,#40 DB #01,#40,#30,#70 DB #04,#10,#07,#0E DB #70,#F0,#08,#10 DB #0F,#42,#01,#40 DB #61,#40,#18,#40 DB #0C,#00,#07,#00 DB #60,#70,#28,#90 DB #38,#02,#28,#04 DB #28,#40,#29,#20 DB #29,#18,#0C,#0E DB #60,#00,#28,#00 DB #28,#00,#28,#00 DB #28,#00,#38,#F0 DB #08,#10,#0F,#0E DB #60,#30,#38,#50 DB #28,#90,#29,#14 DB #29,#1C,#29,#14 DB #28,#14,#0C,#06 DB #60,#30,#38,#14 DB #28,#94,#28,#50 DB #29,#10,#28,#18 DB #28,#14,#0C,#06 DB #10,#C0,#04,#20 DB #18,#18,#28,#14 DB #18,#90,#0C,#20 DB #06,#00,#03,#08 DB #70,#E0,#08,#10 DB #18,#1C,#18,#D0 DB #08,#00,#18,#0C DB #18,#00,#0E,#00 DB #10,#C0,#04,#20 DB #18,#18,#29,#1C DB #09,#D0,#0C,#68 DB #06,#34,#03,#0B DB #70,#E0,#08,#10 DB #29,#1C,#38,#D0 DB #28,#20,#29,#18 DB #28,#1C,#0C,#06 DB #30,#E0,#08,#10 DB #29,#0E,#3C,#E0 DB #07,#1C,#70,#D0 DB #0C,#00,#07,#0C DB #30,#F0,#04,#10 DB #07,#42,#01,#40 DB #01,#40,#01,#40 DB #01,#40,#01,#08 DB #60,#30,#28,#14 DB #28,#14,#28,#14 DB #28,#14,#38,#D0 DB #08,#10,#0F,#0E DB #60,#30,#28,#14 DB #28,#14,#28,#14 DB #18,#18,#0C,#20 DB #06,#40,#03,#08 DB #60,#30,#28,#14 DB #28,#14,#28,#94 DB #29,#94,#38,#50 DB #08,#10,#0F,#0E DB #60,#30,#18,#10 DB #0C,#20,#06,#40 DB #40,#20,#80,#18 DB #09,#1C,#0E,#06 DB #60,#30,#18,#18 DB #0C,#20,#06,#40 DB #04,#80,#18,#00 DB #28,#00,#0C,#00 DB #70,#F0,#08,#10 DB #0F,#20,#02,#40 DB #04,#80,#08,#70 DB #08,#10,#0F,#0E DS 16 ; CHAINE1 DB 5,14,17,12,0,19,19,8,13 DB 6,26,19,17,0,2,10,#FF CHAINE2 DB 26,26,17,4,0,3,8,13,6,26 DB 3,0,19,0,26,26,#FF CHAINE3 DB 26,26,22,17,8,19,8,13,6 DB 26,3,0,19,0,26,26,#FF CHAINE4 DB 8,13,18,4,17,19,26 DB 18,14,20,17,2,4 DB 26,3,8,18,10,26,0,13 DB 3,26,15,17,4,18,18 DB 26,0,26,10,4,24,#FF CHAINE5 DB 8,13,18,4,17,19,26 DB 19,0,17,6,4,19 DB 26,3,8,18,10,26,0,13 DB 3,26,15,17,4,18,18 DB 26,0,26,10,4,24,#FF STERR1 DB 26,26,13,14,26,3,8,18,10 DB 26,8,13,26,3,17,8,21,4 DB #FF STERR2 DB 22,17,8,19,4,26 DB 15,17,14,19,4,2,19,4,3 DB 26,3,8,18,10,#FF STERR3 DB 26,17,4,0,3,26 DB 4,17,17,14,17,#FF ; STRSCRO DB #04,#07,#0E,#1A DB #0C,#00,#0D,#1A DB #18,#0E,#14,#1A DB #02,#00,#0D,#1A DB #03,#0E,#1A,#00 DB #0D,#1A,#0E,#13 DB #07,#04,#11,#1A DB #02,#0E,#0F,#18 DB #1A,#01,#18,#1A DB #0F,#11,#04,#12 DB #12,#08,#0D,#06 DB #1A,#13,#07,#04 DB #1A,#02,#0E,#0F DB #18,#1A,#0A,#04 DB #18,#1A,#1A,#1A DB #1A,#1A,#1A,#1A DB #1A,#1A,#1A,#1A DB #1A,#0F,#11,#04 DB #12,#12,#1A,#00 DB #0D,#1A,#0E,#13 DB #07,#04,#11,#1A DB #0A,#04,#18,#1A DB #13,#0E,#1A,#11 DB #04,#13,#14,#11 DB #0D,#1A,#08,#0D DB #1A,#00,#0C,#00 DB #19,#08,#0D,#06 DB #1A,#03,#04,#0C DB #0E,#1A,#0E,#11 DB #1A,#16,#00,#08 DB #13,#1A,#13,#16 DB #0E,#1A,#0C,#08 DB #0D,#14,#13,#04 DB #12,#1A,#1A,#1A DB #1A,#1A,#1A,#1A DB #1A,#1A,#1A,#1A DB #1A,#1A,#1A,#1A DB #FF ; ; ; Affiche Digit decimal contenu dans A ; AFFDIGIT PUSH HL PUSH DE PUSH BC LD BC,10 Petite conversion decimale DECALC CP C JR C,DECOK SUB C INC B JR DECALC DECOK LD C,A 2eme digit SLA A SLA A SLA A SUB C x 7 LD E,A LD D,0 LD HL,TABREFC ADD HL,DE LD DE,TABCOUL+9 LD A,B LD BC,7 LDIR LD B,A SLA A SLA A SLA A SUB B LD E,A LD D,0 LD HL,TABREFC ADD HL,DE LD DE,TABCOUL+2 LD BC,7 LDIR LD HL,TABCOUL+15 LD BC,#7F7F LD A,#F SETINK OUT (C),A OUTD LD B,C DEC A JR NZ,SETINK POP BC POP DE POP HL RET ; ; Routine utilisee durant le decompactage ; STBYDE EX AF,AF LD A,(COUNTL) Compteur de ligne INC A LD (COUNTL),A CP 80 JR C,NODEDEC PUSH HL EX DE,HL LD DE,80 XOR A SBC HL,DE EX DE,HL POP HL LD (COUNTL),A LD A,D ADD A,8 LD D,A JR NC,NODEDEC LD A,E ADD A,80 LD E,A LD A,D ADC A,#C0 LD D,A NODEDEC EX AF,AF LD (DE),A INC DE RET COUNTL DB 0 ; ; Routine utilisee pour les replications de lignes ; COMPLI LD A,8*6 CPLI1 EX AF,AF PUSH HL PUSH DE LD BC,80 LDIR POP DE LD A,D ADD A,8 LD D,A JR NC,NODEB1 LD A,E ADD A,80 LD E,A LD A,D ADC A,#C0 LD D,A NODEB1 POP HL EX AF,AF DEC A JR NZ,CPLI1 RET ; ; Initialisations generales ; Prise en main de l'ordinateur ; INIT DI POP HL LD SP,#100 PUSH HL LD B,#7F LD HL,#8CC0 OUT (C),H Disable Rom OUT (C),L Connecte Ram Normale LD HL,INTER Nouveau Systeme Interrupt LD DE,#38 LDI LDI LDI IM 1 EI Enable Interrupt HALT ; ; Init Param Video ; LD HL,#1000 LD DE,#1001 LD BC,#EFFF LD (HL),0 LDIR ; RESTO LD BC,#7F54 Ttes ink LD A,#10 INKS0 OUT (C),A OUT (C),C DEC A JP P,INKS0 LD HL,CRTSTD+13 Crt C standard LD D,13 LD BC,#BC00 INCRT OUT (C),D INC B LD A,(HL) OUT (C),A DEC HL DEC B DEC D JP P,INCRT MORET LD B,#FD LD C,#E7 INC B INC C OUT (C),C LD A,#C9 LD (MORET),A ; ; 6128 ou DK'Tronic installee ? ; LD HL,#4000 LD BC,#7FC4 LD (HL),L OUT (C),C LD (HL),C LD A,#C0 OUT (C),A LD A,(HL) LD (FLAGRAM),A Si 0 : Ram Supp Dispo ; RET ; ; Drive Motor Command ; MOTOR EI LD BC,#FA7E Motor Drive On OUT (C),A LD B,255 Wait Speed Ok ! WDISK HALT B*0.02 Sec DJNZ WDISK DI RET ; ; Envoi des params Tab au Fdc / Execution / Et recuperation data ; ENVOIP CALL ENVOITAB JP PHASER ; ENVOITAB LD BC,#FB7E Status Port LD D,(HL) Lire Nb Donnees FDC INC HL WAIT1 IN A,(C) ; Lire State P JP P,WAIT1 Ready ? LD A,(HL) Lire Donnee INC HL Ptr suivant INC C Sur Port Data OUT (C),A Envoi Data DEC C Sur Port State LD A,#05 Wait TEMPW DEC A NOP JR NZ,TEMPW DEC D Count donnees -1 JR NZ,WAIT1 RET PHASER LD A,(HL) Lire Ptr 16 Bits : HL INC HL Pour retirer donnees LD H,(HL) LD L,A PHASER1 LD D,%11000000 DT & DES Bit = 1 WAIT2 IN A,(C) Read Status BIT 4,A FDC Busy ? RET Z Non, Fin Commande CP D Pret pour retirer data JR C,WAIT2 Non ! INC C Oui : Port Data In IN A,(C) Retirer Donnee LD (HL),A Stockage INC HL DEC C Status Port JR WAIT2 ; INTER EI RETI ; ; CRTSTD Table Crt C Standard DB 63,40,46,14 DB 38,0,25,30,0,7 DB 0,0,48,0 ; FLAGRAM DB 0 ; 0 : 128 Kb ; TABCOUL DB #54 DB #4A DS 14 TABREFC DB TT,TT,TT,TT,TT,TT,FF DB FF,TT,TT,FF,FF,FF,FF DB TT,TT,FF,TT,TT,FF,TT DB TT,TT,TT,TT,FF,FF,TT DB FF,TT,TT,FF,FF,TT,TT DB TT,FF,TT,TT,FF,TT,TT DB TT,FF,TT,TT,TT,TT,TT DB TT,TT,TT,FF,FF,FF,FF DB TT,TT,TT,TT,TT,TT,TT DB TT,TT,TT,TT,FF,TT,TT ; ; PISTE DB 3 DB %00001111 Seek Track n DB %00000000 On Drive A NUMPI DB 00 ; Track Wanted ! DW ZONE Buffer ; PISTEOK DB 1 DB %00001000 Cause interruption State Bit 0 DW ZONE ; PISTE00 DB 2 DB %00000111 DB %00000000 ; LIRESEC DB 9 DB %01000110 Read Data DB %00000000 Drive A PISTS DB %00000000 ; Piste 0 DB %00000000 Tete 0 NUMSEC DB 0 ; Num Secteur DB 1 Length Secteur NUMSEC1 DB 0 ; Dernier Secteur DB #30 Gap #52 DB #FF <> 0 pour longueur normale BUFFER DW 0 ; Adresse de chargement ; LIRES1 DB 9 DB %01000110 DB %00000000 DB 0 DB 0 NSEC1 DB #43 DB 2 NSEC2 DB #43 DB #52 DB #FF BUFSYS DW #B200 ; WRITS1 DB 9 DB %01000101 DB 0 DB 0 DB 0 NSW1 DB #41 DB 2 NSW2 DB #41 DB #52 DB #FF ; WRITESEC DB 9 DB %01000101 DB %00000000 PISTW DB 0 DB 0 NUMSEW DB 0 DB 1 NUMSEW1 DB 0 DB #30 DB #FF ; FORCOM1 DB 6 DB %01001101 Format Track DB %00000000 Drive A DB 2 Taille 512 DB 9 Nb Sect 9 DB #52 Gap 3 DB #E6 Valeur de remplissage ; FORCOM2 DB 6 DB %01001101 DB %00000000 DB 1 DB 17 DB #20 DB #E6 ; TF1 DB 0 DB 0 DB #41 DB 2 ; DB 0 DB 0 DB #46 DB 2 ; DB 0 DB 0 DB #42 DB 2 ; DB 0 DB 0 DB #47 DB 2 ; DB 0 DB 0 DB #43 DB 2 ; DB 0 DB 0 DB #48 DB 2 ; DB 0 DB 0 DB #44 DB 2 ; DB 0 DB 0 DB #49 DB 2 ; DB 0 DB 0 DB #45 DB 2 ; TF2 DB 1 DB 0 DB 0 DB 1 ; DB 1 DB 0 DB 9 DB 1 ; DB 1 DB 0 DB 1 DB 1 ; DB 1 DB 0 DB 10 DB 1 ; DB 1 DB 0 DB 2 DB 1 ; DB 1 DB 0 DB 11 DB 1 ; DB 1 DB 0 DB 3 DB 1 ; DB 1 DB 0 DB 12 DB 1 ; DB 1 DB 0 DB 4 DB 1 ; DB 1 DB 0 DB 13 DB 1 ; DB 1 DB 0 DB 5 DB 1 ; DB 1 DB 0 DB 14 DB 1 ; DB 1 DB 0 DB 6 DB 1 ; DB 1 DB 0 DB 15 DB 1 ; DB 1 DB 0 DB 7 DB 1 ; DB 1 DB 0 DB 16 DB 1 ; DB 1 DB 0 DB 8 DB 1 ; ; ZONE DS 9 ; FIN ; ; ; ; ; |