mirror of
https://github.com/peterdell/wudsn-ide.git
synced 2025-08-07 18:24:59 +00:00
299 lines
4.7 KiB
Plaintext
299 lines
4.7 KiB
Plaintext
;ACME 0.07
|
||
|
||
;ChangesNotSaved.Save?
|
||
!zone
|
||
willblost
|
||
ldx changes
|
||
bne .j
|
||
inx
|
||
rts; return with X=1 ("Changes safe, go on")
|
||
.j jsr crsrnew
|
||
ldx #hWindow_DCS
|
||
stx menunr
|
||
jsr makewin
|
||
ldy #$0b; y-pos of cursor in window
|
||
lda #$32; x-pos
|
||
jsr crsrset
|
||
wblchoice
|
||
jsr getchar
|
||
cmp #Char_DEL
|
||
beq wblchoiced
|
||
cmp #Char_STOP
|
||
beq wblchoicec
|
||
cmp #Char_RETURN
|
||
bne wblchoice
|
||
jsr pullscr
|
||
jsr crsrold
|
||
jsr F_saveas
|
||
jmp willblost
|
||
wblchoiced
|
||
jsr pullscr
|
||
jsr crsrold
|
||
ldx #FALSE
|
||
stx changes
|
||
ldx #2
|
||
rts; return with X=2 ("Changes discarded, go on")
|
||
wblchoicec
|
||
jsr pullscr
|
||
jsr crsrold
|
||
ldx #0
|
||
rts; return with X=1 ("Cancel operation !")
|
||
|
||
eotflag !byte 0;End-Flag
|
||
|
||
!zone
|
||
F_mergeas
|
||
lda #$1f;get Mergename
|
||
sta loadflag;Mode MERGE
|
||
jmp .j
|
||
noload
|
||
rts
|
||
F_loadas
|
||
jsr willblost;Changes saved ?
|
||
beq noload
|
||
lda #0;Mode LOAD
|
||
sta loadflag
|
||
lda #$3f;get LOADname
|
||
.j jsr rename
|
||
bne load;ggfs Abbruch
|
||
rts
|
||
|
||
!zone
|
||
loadalien
|
||
lda loadflag
|
||
bne loadfirst
|
||
jmp noheader
|
||
load lda conreg;Bank sichern
|
||
pha
|
||
jsr crsrnew;new copy (hidden)
|
||
ldx #hWindow_Load
|
||
stx menunr
|
||
jsr makewin
|
||
jsr copypara;Parameter setzen
|
||
lda #"r";Lesemodus
|
||
sta dosmode
|
||
+bank15
|
||
jsr open;Open File
|
||
ldx #lf;File: = Input
|
||
jsr chkin
|
||
ldy #$0f;Header pruefen
|
||
.l3 jsr basin
|
||
cmp idfile,y
|
||
bne loadalien
|
||
dey
|
||
bpl .l3
|
||
ldy #$0f;Namen holen
|
||
.l2 jsr basin
|
||
sta dosname,y
|
||
dey
|
||
bpl .l2
|
||
lda loadflag;Bei LOAD
|
||
bne loadfirst; Name kopieren,
|
||
sta unnamed;(clear Flag)
|
||
ldy #$0f
|
||
.l lda dosname,y
|
||
sta txtname,y
|
||
sta lodname,y
|
||
dey
|
||
bpl .l
|
||
sty updatewbi; Update verlangen,
|
||
jsr newtext; Defaultwerte
|
||
loadfirst
|
||
ldy #FALSE;Pufferstart
|
||
sty eotflag;init Flag
|
||
|
||
!zone
|
||
loadline
|
||
+xbank15
|
||
.l4 iny;Eins weiter
|
||
lda #" ";get Space
|
||
ldx status
|
||
bne .j6;ggfs
|
||
jsr basin; get Byte
|
||
.j6 sta linebuf,y; und setzen
|
||
cpy llen
|
||
bne .l4
|
||
ldy #1;Neustart
|
||
.l3 lda linebuf,y
|
||
cmp #Char_RETURN
|
||
beq .j2
|
||
cmp #"-"
|
||
bne .j5
|
||
sty linebuf;Dann Pos merken
|
||
.j5 cmp #" "
|
||
bne .j4
|
||
sty linebuf;Dann Pos merken
|
||
.j4 iny;weiter
|
||
cpy llen
|
||
bne .l3
|
||
lda linebuf,y;LineEnd = Space ?
|
||
cmp #" "; Dann Grenze: = Y &
|
||
bne .j3
|
||
sty linebuf
|
||
lda status
|
||
beq .j3; ggfs setflag
|
||
sta eotflag
|
||
.j3 ldy linebuf;get Grenze
|
||
bne .j
|
||
ldy llen
|
||
dey
|
||
.j2 sty linebuf
|
||
.j +xram0
|
||
jsr needline;fordert Zeile
|
||
bcs nomemleft;ggfs Abbruch
|
||
ldy linebuf; copy buffer2line
|
||
.l2 lda linebuf,y
|
||
sta (lvek),y
|
||
dey
|
||
bne .l2
|
||
lda eotflag;Ende ?
|
||
bne endoffile
|
||
ldx linebuf;shift buffer
|
||
.l cpx llen;fertig ?
|
||
beq loadline;Dann lesen !
|
||
inx
|
||
iny
|
||
lda linebuf,x
|
||
sta linebuf,y
|
||
jmp .l
|
||
|
||
nomemleft
|
||
jsr memfull;Warnung
|
||
endoffile
|
||
+bank15
|
||
lda loadflag
|
||
sta changes
|
||
noheader
|
||
jsr clrchn;Standard
|
||
lda #lf;Close File
|
||
jsr close
|
||
jsr pullscr;Win weg
|
||
jsr crsrold;restore cursor
|
||
pla;alte Bank
|
||
sta conreg
|
||
rts
|
||
|
||
!zone
|
||
nosave
|
||
rts;Abbruch
|
||
F_saveas
|
||
jsr F_rnmtxt;get Textname
|
||
beq nosave;ggfs Abbruch
|
||
lda #FALSE;Name vorhanden
|
||
sta unnamed
|
||
F_save
|
||
lda unnamed;Name ?
|
||
bne F_saveas;ggfs holen
|
||
ldy #$0f;proof "?"
|
||
.l6 lda txtname,y
|
||
cmp #"?"
|
||
beq F_saveas
|
||
cmp #"*"
|
||
beq F_saveas
|
||
cmp #","
|
||
beq F_saveas
|
||
cmp #":"
|
||
beq F_saveas
|
||
sta dosname,y
|
||
dey
|
||
bpl .l6
|
||
lda #"w";Schreibmodus
|
||
sta dosmode
|
||
lda conreg;Bank sichern
|
||
pha
|
||
+bank15
|
||
jsr crsrnew;new copy (hidden)
|
||
ldx #hWindow_Save;Save-Win
|
||
stx menunr
|
||
jsr makewin
|
||
jsr copykill;Killparameter
|
||
jsr open;Open CmdChannel
|
||
lda killpara+1; (Scratch)
|
||
jsr close;Close CC
|
||
jsr copypara;Dateiparameter
|
||
jsr open;Open Outputfile
|
||
ldx #lf
|
||
jsr chkout
|
||
ldy #$0f;Sendet Header
|
||
.l5 lda idfile,y
|
||
jsr basout
|
||
dey
|
||
bpl .l5
|
||
ldy #$0f;Sendet Name
|
||
.l4 lda txtname,y
|
||
jsr basout
|
||
dey
|
||
bpl .l4
|
||
iny;Y: = 0, tmpy wird fuers
|
||
sty tmpy+1; Speichern init.
|
||
tya;A: = 0
|
||
iny;Y: = 1
|
||
sty tmpy
|
||
sec;errechnet negativen
|
||
sbc zzbe; Zeilenzaehler (tmp2)
|
||
sta tmp2
|
||
lda #0
|
||
sbc zzbe+1
|
||
sta tmp2+1
|
||
.l3 +xram0;volles RAM
|
||
ldx #1;mind. 1 Byte/Zeile
|
||
stx linebuf
|
||
ldx #TMP
|
||
jsr getlvek;LineVek
|
||
ldy #1;Versatz: = 1
|
||
.l2 lda (lvek),y;Byte in Puffer
|
||
cmp #" "
|
||
beq .j3
|
||
sty linebuf;Pos sichern
|
||
.j3 sta linebuf,y
|
||
iny
|
||
cpy llen
|
||
bne .l2
|
||
ldx linebuf
|
||
lda linebuf,x;letztes Byte
|
||
cmp #Char_RETURN
|
||
beq .j2
|
||
cmp #"-"
|
||
beq .j2
|
||
cmp #" "
|
||
beq .j2
|
||
inx;Dann Space hinter
|
||
lda #" "; die Zeile
|
||
sta linebuf,x
|
||
.j2 stx .m+1;Ende speichern
|
||
+xbank15
|
||
.l inx;X = 1
|
||
lda linebuf,x;Zeichen senden
|
||
jsr basout
|
||
.m cpx #MODIFIED8; L<>nge
|
||
bne .l;alle ?
|
||
+inc16 tmpy;tmpy += 1
|
||
inc tmp2;zaehler += 1
|
||
bne .l3
|
||
inc tmp2+1
|
||
bne .l3
|
||
jsr clrchn;Standardkanaele
|
||
lda #lf
|
||
jsr close;Close File
|
||
jsr pullscr;Win weg
|
||
jsr crsrold;restore cursor
|
||
pla;alte Bank
|
||
sta conreg
|
||
lda #FALSE;Changes saved !
|
||
sta changes
|
||
rts
|
||
|
||
!zone
|
||
copykill
|
||
ldy #$0b;Scratchparameter
|
||
+bit16;BIT-Trick !
|
||
copypara
|
||
ldy #$05;Fileparameter
|
||
ldx #5;6 Bytes
|
||
.l lda filepara,y; ins System
|
||
sta fnlen,x
|
||
dey
|
||
dex
|
||
bpl .l
|
||
rts
|