home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
91xx
/
9101a.d64
/
quelltext
< prev
next >
Wrap
Text File
|
1995-03-30
|
12KB
|
609 lines
PHC
TIT.TSE-FORMAT ╩.╦LOEHN, ╚.-─UNCKER-╙TR.83, ──╥-1157 ┬ERLIN, ╘EL.(00372)5082744
:STAROK = 1
;*** LABELDEF ***
:CHRIN = $FFCF
:GETIN = $FFE4
;*** MAKROS ***
:STROUT M 1
LDA #<@0
LDY #>@0
JSR $AB1E
/
:INPUT MF 3
STROUT @0
LDY #0
:INPUT1 JSR CHRIN
STA $0200,Y
INY
CMP #13
BNE INPUT1
LDY #0
LDX #0
:INPUT3 LDA $0200,X
CMP #13
BNE INPUT2
LDA #$A0
B $24
:INPUT2 INX
STA @1,Y
INY
CPY #@2
BNE INPUT3
/
:FLOPPY M 4
;RAMA = @0
;RAME = @1
;DATADR = @2
;STRADR = @3
LDY #@1-@0/32+1
LDX #@1-@0&31
LDA #<@0
STA $FB
LDA #>@0
STA $FC
LDA #<@2
STA ADDR
LDA #>@2
STA ADDR+1
JSR FLOPP1 ;M-W
IF @3
LDY #>@3
LDA #<@3
JSR FLOPP5 ;M-E
EI
/
;*** BASICSTART ***
IF STAROK
ORG $0801
:BASIC W 256,0
B 158,"2111:",143
B 34,141,145,8,142,154
B "TSE-FORMAT V1.1 BY "
B 5,"?SAVE ERROR"
B 154," IN 1989 "
S 3
EL
ORG $C000
EI
LDA #0
STA $D020
STA $D021
INPUT TEXT1,NAME-FSTART+START,16
INPUT TEXT2,ID-FSTART+START,2
INPUT TEXT3,IDFLAG-FSTART+START,1
STROUT TEXT4
:HPTPR1 JSR GETIN
BEQ HPTPR1
FLOPPY START,FEND-FSTART+START,FSTART,FSTART
STROUT TEXT5
PLA ;RUECKSPRUNGADDR
PLA ;VOM STACK HOLEN
JMP $A474 ;EINGABE-WARTESCHLEIFE
;*** DATEN ****
:TEXT1 B 147,30,14," ╘╙┼-╞ORMAT ╓1.1",13
B " ---------------",13,13
B " (C) 1990 ═ARKT & ╘ECHNIK ╓ERLAG ┴╟",13
B " (W) ╩UERGEN ╦LOEHN",13,13,13,13,13
B "─ISKETTENNAME: ",0
:TEXT2 B 13,13,"╔─: ",0
:TEXT3 B 13,13,"╔─ FORTLAUFEND ERHOEHEN (J/N) ? ",0
:TEXT4 B 13,13,13,"┬ITTE 1.─ISK ZUM FORMATIEREN EINLEGEN!",0
:TEXT5 B 13,13
B "─ISKETTEN WERDEN FORMATIERT!",13
B "┼NDE MIT BELIEBIGER ╧PERATION FUER ─ISK",13,0
;*** TEIL VON MAKRO FLOPPY ***
:FLOPP1 STX ANZ ;INN SCHLEIF
STY ANZ+1 ;AUSS "
:FLOPP4 LDA $BA ;GERAET 8
JSR $FFB1 ;LISTEN SENDEN
LDA #$6F ;SEK 15
JSR $FF93 ;SENDEN
JSR KOPF ;M-W SENDEN
LDX ANZ ;INN SCHL.ZAEHL
BEQ FLOPP7
LDY #0 ;X BYTES SENDEN
:FLOPP3 LDA ($FB),Y
JSR $FFA8
INC $FB
BNE FLOPP2
INC $FC
:FLOPP2 DEX
BNE FLOPP3
:FLOPP7 JSR $FFAE ;UNLISTEN
CLC ;FLOPPADDR
LDA ADDR ;+ ANZ DER GESEND.
ADC ANZ ;BYTES
STA ADDR
LDA ADDR+1
ADC #0
STA ADDR+1
LDX #32 ;INN SCHL. MIT 32
STX ANZ
DEC ANZ+1 ;AUSS SCHLEIFE
BNE FLOPP4 ;EINSCHL. 0
RTS
:KOPF LDY #0 ;SENDET M-W
:KOPF1 LDA DAT,Y
JSR $FFA8
INY
CPY #6
BNE KOPF1
RTS
:DAT B "M-W"
:ADDR W 0
:ANZ B 0
B 0 ;ANZ HI ZWISCHENSP
:FLOPP5 STA ADDR2
STY ADDR2+1
LDA $BA ;GERAET 8
JSR $ED0C ;LISTEN SENDEN
LDA #$6F ;SEK 15
JSR $EDB9 ;SENDEN
LDY #0 ;M-E SENDEN
:FLOPP6 LDA DAT2,Y
JSR $FFA8
INY
CPY #5
BNE FLOPP6
JMP $EDFE ;UNLISTEN
:DAT2 B "M-E"
:ADDR2 W 0
;*** FLOPPYPROGRAMM ***
:START
ORG $0400
:FSTART JSR $C100 ;LAMPE AN
SEI
LDA $1C00 ;MOTOR AN
ORA #$04
STA $1C00
LDA $22 ;AKT TRACK
BNE NEW1 ;=0 (NACH UJ)
LDA #46 ;46 TRACKS
STA $22 ;NACH AUSSEN
:NEW1 DEC $22 ;1. TRACK ANFAHREN
BEQ NEW19
JSR STEPA ;1 TRACK NACH AUSSEN
BEQ NEW1 ;ABSOLUT
:NEW19 LDA #1 ;TRACK1
STA $22 ;SETZEN
LDA ID ;ID SETZEN
STA $12
LDA ID+1
STA $13
LDX #0 ;STEPMOTOR
JSR STEP ;RESET
JSR SPEED ;SPEEDFLAGS SETZEN
LDA #$20 ;MOTOR AN
STA $20 ;FUER LW STATUS
:NEW22 CLI
LDA $7C ;ATN ?
BEQ NEW29
JMP FERTIG
:NEW29 SEI
LDA #1 ;ENDTRACK FUER TEST
B $2C
:NEW23 LDA #35 ;SONST FORMAT
STA $1B
JSR SETWR
JSR FORM ;DISK FORMATIEREN
CMP #35 ;LETZER TRACK
BEQ NEW20
JSR SYNC ;TEST AUF DISC IM LAUFWERK
BCS NEW22 ;FORMAT TRACK1
LDA $1C00 ;SCHREIBSCHUTZ ABFRAGEN
AND #$10
BEQ NEW22 ;JA, DANN WEITER WARTEN
LDA #$10 ;FLAG 'KEIN SCHREIBSCHUTZ'
STA $1E ;SETZTEN
LDY #0 ;WARTEN BIS
:WAIT INX ;DISCHEBEL
BNE WAIT ;GESCHLOSSEN
INY
BNE WAIT
BEQ NEW23 ;FORMAT ALL
:NEW20 LDA #$20 ;MOTOR AN
STA $20 ;FUER LAUFW.STATUS
LDA $1C00 ;LAMPE AUS
AND #$F7
STA $1C00
:NEW24 CLI
LDA $7C ;ATN ?
BEQ NEW28
:FERTIG LDA #$10 ;MOTOR SOLL
STA $20 ;NACHLAUFEN
JMP $D042 ;INIT + SCHLUSS
:NEW28 SEI
JSR SYNC ;DISC NOCH DRINN
BCC NEW24
LDA IDFLAG ;ID ERHOEHEN ?
CMP #'J
BNE NEW27
LDX #1 ;ID=ID+1
:NEW26 INC ID,X
LDA ID,X
CMP #':
BNE NEW25
ADC #6
STA ID,X
:NEW25 CMP #'[
BNE NEW27
LDA #'0
STA ID,X
DEX
BEQ NEW26
:NEW27 JMP FSTART
;--------------------
;TRACK NACH INNEN FAHREN UND
;SPEED SETZEN
:STEPI LDY #$02 ;2 HALBSPUREN
:NEW2 LDX $1C00 ;STEPMOTOR
INX ;NACH AUSSEN
JSR STEP
DEY
BNE NEW2
INC $22 ;TRACKZAEHLER ERHOEHEN
JMP SPEED ;SPEEDFLAGS SETZEN
;--------------------
;NSTEP UM 1 TRACK NACH AUSSEN
:STEPA LDY #$02 ;2 HALBSPUREN
:NEW3 LDX $1C00 ;STEPMOTOR
DEX ;NACH AUSSEN
JSR STEP
DEY
BNE NEW3
RTS
;--------------------
;STEPMOTOR ANSTEUERN
;WERT IN X
:STEP TXA
AND #$03
STA $BB
LDA $1C00
AND #$FC ;STEPMOT
ORA $BB ;SETZEN
STA $1C00
LDA #$04 ;WARTEN
STA $BB
LDX #0
:NEW4 DEX
BNE NEW4
DEC $BB
BNE NEW4
RTS
;--------------------
;SPEEDFLAGS SETZEN
:SPEED LDA $22 ;SPURNUMMER
JSR $F24B ;ANZ DER SEK HOLEN
TXA ;SPEEDNEWAGS SETZEN
ASL
ASL
ASL
ASL
ASL
STA $44
LDA $1C00
AND #$9F
ORA $44
STA $1C00
RTS
;--------------------
;KOPFELEKTRONIK AUF SCHREIBEN SCHALTEN
:SETWR LDA $1C0C
AND #$1F
ORA #$C0
STA $1C0C
LDA #$FF
STA $1C03
STA $1C01 ;$FF SCHREIBEN
RTS
;--------------------
;AUF SYNC WARTEN
;FLOPPY-BUCH ╙.373
:SYNC JSR $FE00
LDA #$FF
STA $1805
:SYNC2 BIT $1805
BPL SYNC1
BIT $1C00
BMI SYNC2
LDA $1C01
CLV
CLC
B $24
:SYNC1 SEC
RTS
;--------------------
:FORM LDA #$EE ;BYTE-READY-LEITUNG
STA $1C0C ;FREIGEBEN
LDA #4 ;DATENPUFFER
STA $F9
LDA $22 ;SPURNR
JSR $F24B ;MAX SEKTANZ HOLEN
STA $43 ;MERKEN
JSR SETWR ;AUF SCHREIBEN SCHALTEN
LDA #$FF ;$FF SCHREIBEN
STA $1C01
;+++ HEADERDATEN BEREITSTELLEN +++
LDA #0 ;SEKTNR
STA $BC ;MERKEN
TAX
TAY
:NEW5 LDA $39 ;KENNZEICHEN FUER DATENBLOCK (8)
STA $0300,Y
LDA $BC ;SEKTNR
STA $0302,Y
LDA $22 ;TRACKNR
STA $0303,Y
LDA $13 ;ID2
STA $0304,Y
LDA $12 ;ID1
STA $0305,Y
LDA #$0F ;ABSCHLUSSBYTES
STA $0306,Y
STA $0307,Y
LDA #0 ;PRUEFSUMME
EOR $0302,Y ;BERECHNEN
EOR $0303,Y
EOR $0304,Y
EOR $0305,Y
STA $0301,Y ;UND SPEICHERN
CLC ;8 BYTES WEITER
TYA
ADC #$08
TAY
INC $BC ;SEKTNR ERHOEHEN
LDA $BC
CMP $43 ;<MAXSEKT?
BCC NEW5
TYA ;BYTEANZ (SEKTANZ*8)
PHA
LDA #$03 ;PUFFERNR SETZEN
STA $31 ;FUER ROUTINE
JSR $FE30 ;BLOCKHEADER NACH GCR
PLA
TAY ;BYTEANZ
DEY
JSR $FDE5 ;BYTES NACH OBEN KOPIEREN
JSR $FDF5 ;ZUSATZPUFFER NACH $0300
;+++ DATEN BEREITSTELLEN ++++
JSR $EF41 ;PUFFERZEIGER SETZEN
JSR $F008 ;DATENPUFFER LOESCHEN
LDA #$FF ;2.BYTE FUER 18,01
STA $0701 ;SONST EGAL
LDA #$07 ;DATENPUFFER
STA $31
JSR $F5E9 ;PRUEFSUMME BER.
STA $3A ;MERKEN
JSR $F78F ;DATEN NACH GCR
LDA #0 ;ZEIGER AUF AKT SEKTHEADER
STA $32
;+++ EINEN SEKTOR SCHREIBEN (($BC) MAL)+++
:NEW14 LDA #$FF ;SYNC SCHREIBEN
STA $1C01
LDX #$05 ;5 MAL
:NEW7 BVC NEW7
CLV
DEX
BNE NEW7
LDX #$0A ;10 HEADERDATEN(GCR)
LDY $32
:NEW8 BVC NEW8
CLV
LDA $0300,Y ;SCHREIBEN
STA $1C01
INY
DEX
BNE NEW8
STY $32 ;ZEIGER AUF NAECH.
;HEADER SETZEN
LDX #$08 ;$55 SCHREIBEN
:NEW9 BVC NEW9 ;8 MAL
CLV ;ALS LUECKE
LDA #$55
STA $1C01
DEX
BNE NEW9
LDA #$FF ;SYNC SCHREIBEN
LDX #$05
:NEW10 BVC NEW10
CLV
STA $1C01
DEX
BNE NEW10
LDX #$BB ;DATEN (GCR) SCHREIBEN
:NEW11 BVC NEW11 ;ERST AUS ZUSATZPUFFER
CLV
LDA $0100,X
STA $1C01
INX
BNE NEW11
LDY #$00 ;DANN AUS NORMALEN PUFFER
:NEW12 BVC NEW12
CLV
LDA ($30),Y
STA $1C01
INY
BNE NEW12
LDA #$55 ;$55 ALS LUECKE SCHREIBEN
LDX #$08
:NEW13 BVC NEW13
CLV
STA $1C01
DEX
BNE NEW13
DEC $BC ;SEKTANZ
BNE NEW14
:NEW15 BVC NEW15 ;WARTEN
CLV
:NEW16 BVC NEW16
CLV
JSR $FE00 ;AUF LESEN SCHALTEN
;+++ TRACK 18 BESCHREIBEN +++
LDA $22 ;SPUR = 18
CMP #18
BNE NEW30 ;NEIN
PHA ;SPUR MERKEN
LDA #$84 ;╦ANAL-╨UFFER-┌UORDNUNG
STA $B4
JSR $EF41 ;PUFFERZEIGER SETZEN
JSR $F008 ;PUFFER LOESCHEN
JSR $EEB7 ;BAM ERZEUGEN
LDA #$11 ;TRACK 18
STA $0748 ;ALS BELEGT
LDA #$FC ;KENNZEICHNEN
STA $0749
LDY #IDFLAG-NAME-1
:NEW6 LDA NAME,Y ;NAME,ID
STA $0790,Y ;KOPIEREN
DEY
BPL NEW6
LDA #$41 ;FORMATKENNZEICHEN
STA $0702
LDA #18 ;TRACK 18
STA $0E
LDA #0 ;SEKT 0
STA $0F
CLI
JSR $D58A ;SCHREIBEN
SEI
PLA ;SPURNR
:NEW30 CMP $1B ;ALLE TRACKS ?
BEQ NEW17 ;JA, DANN FERTIG
JSR STEPI ;TRACK NACH INNEN
JMP FORM ;NAECHSTEN TRACK FORMATIEREN
:NEW17 RTS
;--------------------
:NAME B " "
B $A0,$A0
:ID B " "
B $A0,"2A",$A0,$A0,$A0,$A0
:IDFLAG B 0
:FEND
; ┼╬─┼