0 -; F1-VERWALTUNG STK 08+09+12/06, 01/07 1 -; 2 -; PROGRAMMEINSTELLUNGEN 3 - .EQ VIC=0 ;0:C64, 1:VIC20/STD, 2:VIC20/3K, 3:VIC20/>=8K 4 - .EQ DECO=1 ;0/1: OHNE/MIT RANDTEXT/FARBE 5 - .EQ VMAJOR=0 ;VORKOMMA-VERSIONSNUMMER 6 - .EQ VMINOR=6 ;NACHKOMMA-VERSIONSNUMMER 7 - .EQ YEAR=2007 ;JAHR FUER BASICZEILE UND RANDTEXT 8 -; 9 -; SPEICHERKONFIGURATIONEN 10 -.IF VIC=1 11 - .OB "F1-MINIBASE 20/0,P,W" 12 - .BA $1001 ;OHNE SPEICHERERWEITERUNG 13 -.EI 14 -.IF VIC=2 15 - .OB "F1-MINIBASE 20/3,P,W" 16 - .BA $0401 ;3K-ERWEITERUNG 17 -.EI 18 -.IF VIC=3 19 - .OB "F1-MINIBASE 20/8,P,W" 20 - .BA $1201 ;>=8K-ERWEITERUNG 21 -.EI 22 -.IF VIC=0 23 - .OB "F1-MINIBASE 64,P,W" 24 - .BA $0801 ;C64 25 -.EI 26 -; 27 -; RECHNERSPEZIFISCHE LABELS 28 -.IF VIC 29 -; VIC-20 30 - .EQ LINELEN=22 ;ZEILENLAENGE 31 - .EQ SCREENLEN=23;ZEILENZAHL 32 - .EQ BACKCOL=$900F;VIC-REG. FUER RAHMEN- U. HINTERGRUNDFARBE 33 -.IF DECO 34 - .EQ RACECOL=0 ;FARBE GP-NAME 35 - .EQ RESCOL=2 ;FARBE RENNERGEBNISSE 36 - .EQ DRVCOL=6 ;FARBE FAHRER 37 - .EQ TABCOL=4 ;FARBE TABELLE 38 - .EQ STATCOL=0 ;FARBE STATUSZEILE 39 - .EQ DECOCOL=0 ;FARBE RANDTEXTE 40 - .EQ BACK=15 ;HINTERGRUNDFARBE 41 - .EQ BORDER=5 ;RAHMENFARBE 42 -.EI 43 -.IF DECO=0 44 - .EQ LETTER=1 ;SCHRIFTFARBE, MUSS BEI VIC20 1 SEIN WG. SCRCLR 45 - .EQ BACK=2 ;HINTERGRUNDFARBE 46 - .EQ BORDER=7 ;RAHMENFARBE 47 -.EI 48 -.EI 49 -.IF VIC=0 50 -; C64 51 - .EQ LINELEN=40 ;ZEILENLAENGE 52 - .EQ SCREENLEN=25;ZEILENZAHL 53 - .EQ BACKCOL=$D021;VIC2-REG. FUER HINTERGRUND 54 - .EQ BORDERCOL=$D020;VIC2-REG FUER RAHMEN 55 -.IF DECO 56 - .EQ RACECOL=0 ;FARBE GP-NAME 57 - .EQ RESCOL=2 ;FARBE RENNERGEBNISSE 58 - .EQ DRVCOL=6 ;FARBE FAHRER 59 - .EQ TABCOL=4 ;FARBE TABELLE 60 - .EQ STATCOL=0 ;FARBE STATUSZEILE 61 - .EQ DECOCOL=0 ;FARBE RANDTEXTE 62 - .EQ BACK=7 ;HINTERGRUNDFARBE 63 - .EQ BORDER=5 ;RAHMENFARBE 64 -.EI 65 -.IF DECO=0 66 - .EQ LETTER=1 ;SCHRIFTFARBE 67 - .EQ BACK=2 ;HINTERGRUNDFARBE 68 - .EQ BORDER=7 ;RAHMENFARBE 69 -.EI 70 -.EI 71 -; 72 -; GEMEINSAME LABELS 73 - .EQ CHROUT=$FFD2;ZEICHEN AUSGEBEN 74 - .EQ CHRIN=$FFCF;ZEICHEN EINLESEN 75 - .EQ SETLFS=$FFBA;PARAMETER FUER OPEN SETZEN 76 - .EQ FNAMELEN=$B7;LAENGE DATEINAME 77 - .EQ CHKOUT=$FFC9;AUSGABE IN DATEI X 78 - .EQ CHKIN=$FFC6;EINGABE VON DATEI X 79 - .EQ OPEN=$FFC0 ;DATEI OEFFNEN 80 - .EQ CLRCH=$FFCC;EIN-/AUSGABE IN DAT. BEENDEN 81 - .EQ CLOSE=$FFC3;DATEI SCHLIESSEN 82 - .EQ GA=8 ;GERAETEADRESSE 83 - .EQ PRTGA=4 ;DRUCKERGERAETEADRESSE 84 - .EQ HEADERLEN=7;LAENGE DES DATEIHEADERS 85 - .EQ GETIN=$FFE4;ZEICHEN EINLESEN 86 - .EQ PLOT=$FFF0 ;CURSOR SETZEN 87 - .EQ FIELDLEN=10;LAENGE DES FELDES 88 -; .EQ COL2=LINELEN-FIELDLEN-1;2.BS-SPALTE 89 - .EQ COL2=LINELEN/2;2.BS-SPALTE 90 - .EQ DRIVER1=9 ;ERSTES FAHRERFELD 91 - .EQ DRIVER2=21 ;LETZTES FELD IN SPALTE1 92 - .EQ MAXFIELD=34;LETZTES FELD IN SPALTE2 93 - .EQ MAXDRIVER=MAXFIELD-DRIVER1+1;MAX. FAHRERZAHL 94 - .EQ RESSIZE=8 ;ANZAHL FAHRER IN RENNERGEBNIS 95 - .EQ TABSIZE=9 ;ANZAHL ZEILEN IN TABELLE 96 - .EQ STATSIZE=9 ;BYTES PRO FAHRER IN DRVSTAT 97 - .EQ MAXGP=24 ;MAX. RENNENZAHL 98 - .EQ LASTFIELD=MAXFIELD+TABSIZE;LETZTES FELD MIT TABELLE 99 - .EQ TABMODEMAX=2;GROESSTER TAB.-MODUS 100 - .EQ GP=$02 ;AKT. RENNEN 101 - .EQ LINE=$D1 ;ZEIGER AUF POS IN BS-SPEICHER ... 102 - .EQ COL=$D3 ;VON OS 103 - .EQ FNAMELEN=$B7;LAENGE DATEINAME 104 - .EQ SA=$B9 ;SEKUNDAERADR. 105 - .EQ BLINK=$CC ;0: CRSR BLINKT 106 - .EQ BLINKFLAG=$CF;BLINKPHASE 107 - .EQ RVS=$C7 ;18: REV. SCHRIFT 108 - .EQ COLOR=$0286;SCHRIFTFARBE 109 - .EQ TMP1=$F7 ;ZP-ZWISCHENSPEICHER1 110 - .EQ TMP2=$F8 ;ZP-ZWISCHENSPEICHER2 111 - .EQ TMP3=FNAMELEN;ZP-ZWISCHENSPEICHER3 (AUCH LAENGE DATEINAME) 112 - .EQ DECOPOS=TMP1;ZEILE BEI RANDTEXT 113 - .EQ COPYPTR=$FD;ZEIGER AUF COPYZIEL 114 - .EQ COLORPTR=$61;ZEIGER AUF ERSTE FELDPOS IM FARBRAM 115 - .EQ FIELDPTR=$BB;ZEIGER AUF ERSTE FELDPOS./FILENAME 116 - .EQ FIELD=$FB ;AKT. EINGABEFELD 117 - .EQ FIELDUP=TMP2;ZU AKT.EINGABEFELD BEI DISPLAY 118 - .EQ FIELDPOS=TMP1;AKT. POS. IM EINGABEFELD 119 - .EQ MINFIELD=TMP2;MIN. EINGABEFELD BEI SELECT 120 - .EQ TABSTART=$FA;ERSTE POS. IN TABELLE 121 - .EQ TABPOS=TMP3;MOM. TAB-ZEILE BEI TAB-AUSGABE 122 - .EQ TABMODE=$FC;NAMEN O. PUNKTE IN TAB. 123 - .EQ PRTCNT=TMP3;AKTUELLES ZU DRUCKENDES FELD 124 - .EQ SPACES=$63 ;LEERZEICHEN BEI COPYDRV 125 - .EQ CALCFLAG=$F9;1:STAT-/TAB-NEUBERECHNUNG NACH SIMDOWN 126 - .EQ SORTINDEX=TMP2;SORTIERINDEX 127 - .EQ FACTOR=TMP1;FAKTOR BEI MEMPOS-BER. 128 - .EQ GPRES=$033C;ADRESSE DER RENNERGEBNISSE 129 - .EQ DRVSTAT=TABLE+MAXDRIVER;ADR. D. PUNKTE UND PLAZIERUNGEN 130 - .EQ GPNAMES=DRVSTAT+MAXDRIVER*STATSIZE;ADR. D. RENNNAMEN 131 - .EQ POINTS=GPNAMES+MAXGP*FIELDLEN;PUNKTE FUER PLAETZE 1-8 132 - .EQ YEAR10=(YEAR-2000)/10;ZEHNERSTELLE JAHR 133 - .EQ YEAR1=YEAR-YEAR10*10-2000;EINERSTELLE JAHR 134 -; 135 -; BASIC-STARTZEILE 136 -; 137 -BASIC .BY $19,$10,YEAR-1792,$07,$9E,$C2,$28,$34 138 - .BY $33,$29,$AA,$C2,$28,$34,$34,$29 139 - .BY $AC,$32,$35,$36,$AA,$32,$36,$00 140 - .BY $00,$00 141 -; 142 -; ------------- 143 -; HAUPTPROGRAMM 144 -; ------------- 145 -; 146 -; BILDSCHIRM INITIALISIEREN 147 -; 148 -INIT LDA #8 149 - JSR CHROUT 150 - LDA #14 151 - JSR CHROUT 152 - LDA #18 ;RVS EIN 153 - STA RVS 154 -.IF DECO=0 155 - LDA #LETTER 156 - STA COLOR 157 -.IF VIC=0 158 - STA BACKCOL ;FUER ALTE C64-VERSION 159 -.EI 160 -.EI 161 - JSR SCRCLR 162 -.IF VIC 163 - LDA #BACK*16+8+BORDER 164 -.EL 165 - LDA #BORDER 166 - STA BORDERCOL 167 - LDA #BACK 168 -.EI 169 - STA BACKCOL 170 -; RANDTEXTE (FALLS DECO<>0) 171 -.IF DECO 172 -; FELDFARBEN SETZEN 173 - LDX #LASTFIELD 174 - STX DECOPOS 175 -DECOCOLLOOP1 LDA DECOPOS 176 - JSR SETCUR 177 - LDY #FIELDLEN-1 178 - LDA COLOR 179 -DECOCOLLOOP2 STA (COLORPTR),Y 180 - DEY 181 - BPL DECOCOLLOOP2 182 - DEC DECOPOS 183 - BPL DECOCOLLOOP1 184 -; RANDTEXTE 185 - LDX #SCREENLEN-1 186 -DECOLOOP STX DECOPOS 187 - LDY #LINELEN-1 188 - JSR PLOTMEM 189 - LDX DECOPOS 190 - LDA WWW,X 191 - LDY #0 192 - STA (FIELDPTR),Y 193 - LDA #DECOCOL 194 - STA (COLORPTR),Y 195 - DEX 196 - BPL DECOLOOP 197 -.IF VIC=0 198 - LDX #SCREENLEN-2 199 - JSR PLOTMEM 200 - LDY #LINELEN-2 201 -DECOLOOP64 LDA WRITTEN,Y 202 - STA (FIELDPTR),Y 203 - LDA #DECOCOL 204 - STA (COLORPTR),Y 205 - DEY 206 - BPL DECOLOOP64 207 -.EI 208 -.EI 209 -; 210 -; PARAMETER UND TABELLEN INIT. 211 -; 212 -INIT2 LDA #TABMODEMAX 213 - STA TABMODE 214 - LDA #0 215 - STA GP 216 - STA FIELD 217 - STA TABSTART 218 -; RENNERGEBNISSE 219 - LDY #MAXGP*RESSIZE 220 -INITRES STA GPRES-1,Y 221 - DEY 222 - BNE INITRES 223 -; RENNNAMEN 224 - LDA #"-" 225 - LDY #MAXGP*FIELDLEN 226 -INITNAMES STA GPNAMES-1,Y 227 - DEY 228 - BNE INITNAMES 229 -; PUNKTE FUER PLAETZE 230 - LDA #1 231 -COPYPOINTS STA POINTTYPE 232 - ASL ;*RESSIZE(=8) 233 - ASL 234 - ASL 235 - TAY 236 - LDX #0 237 -COPYPLOOP LDA POINTS1,Y 238 - STA POINTS,X 239 - INY 240 - INX 241 - CPX #RESSIZE 242 - BNE COPYPLOOP 243 -; 244 -; FAHRERSTATISTIKEN BERECHNEN 245 -; 246 -; STATDATEN AUF 0 247 -STATCALC LDA #0 248 - STA CALCFLAG 249 - LDY #MAXDRIVER*STATSIZE 250 -STATRESET STA DRVSTAT-1,Y 251 - DEY 252 - BNE STATRESET 253 -; STATDATEN BERECHNEN 254 - LDX GP ;LETZTES RES-BYTE V. GP BER. 255 - INX ;GP+1 256 - TXA 257 - ASL ;*8 258 - ASL ;(8=RESSIZE) 259 - ASL 260 - TAX 261 - DEX ;-1 262 -STATCALCLOOP LDA GPRES,X 263 - BEQ STATNODRV 264 - JSR STATPOS 265 - TXA ;PLATZ BEST. 266 - AND #7 ;WG. RESSIZE=8 267 - TAY 268 - INY 269 - LDA (COPYPTR),Y;Y.PLAETZE 270 - CLC ;UM 1 ERHOEHEN 271 - ADC #1 272 - STA (COPYPTR),Y 273 - LDA POINTS-1,Y ;PKTE ADD. 274 - LDY #0 275 - CLC 276 - ADC (COPYPTR),Y 277 - STA (COPYPTR),Y 278 -STATNODRV DEX 279 - CPX #255 280 - BNE STATCALCLOOP 281 -; 282 -; TABELLE BERECHNEN 283 -; 284 -; TABELLE INIT. 285 -TABCALC LDY #MAXDRIVER-1 286 -TABRESET TYA 287 - CLC 288 - ADC #DRIVER1 289 - STA TABLE,Y 290 - DEY 291 - BPL TABRESET 292 -; TABELLE SORTIEREN 293 - LDX #0 294 -SORTLOOP1 STX SORTINDEX 295 - TXA 296 - LDA TABLE,X 297 - INX 298 - JSR STATPOS 299 - JSR COPYFIELD 300 -SORTLOOP2 LDA TABLE,X 301 - JSR STATPOS 302 -; STATS VERGLEICHEN 303 - LDY #0 304 -SORTCOMP LDA (FIELDPTR),Y 305 - CMP (COPYPTR),Y 306 - BEQ SORTEQUAL 307 - BCS SORTCONT 308 -; FAHRER TAUSCHEN 309 -SWAP JSR COPYFIELD 310 - LDA TABLE,X 311 - PHA 312 - LDY SORTINDEX 313 - LDA TABLE,Y 314 - STA TABLE,X 315 - PLA 316 - STA TABLE,Y 317 - BNE SORTCONT 318 -SORTEQUAL INY 319 - CPY #STATSIZE 320 - BNE SORTCOMP 321 -SORTCONT INX 322 - CPX #MAXDRIVER 323 - BNE SORTLOOP2 324 - LDX SORTINDEX 325 - INX 326 - CPX #MAXDRIVER-1 327 - BNE SORTLOOP1 328 -; 329 -; ANZEIGE AKTUALISIEREN 330 -; 331 -; RENNNAMEN ANZEIGEN 332 -DISPLAY JSR GPNAMEPOS 333 - LDY #FIELDLEN-1 334 -DISPGPLOOP LDA (COPYPTR),Y 335 - STA (FIELDPTR),Y 336 - DEY 337 - BPL DISPGPLOOP 338 -; ERGEBNIS ANZEIGEN 339 -DISPRES LDA #RESSIZE 340 - STA FIELDUP 341 -DISPRESLOOP JSR GPRESPOS 342 - LDY FIELDUP 343 - DEY 344 - LDA (COPYPTR),Y 345 - LDY FIELDUP 346 - JSR COPYDRV 347 - DEC FIELDUP 348 - BNE DISPRESLOOP 349 -; TABELLE ANZEIGEN 350 -DISPTAB LDA #MAXFIELD+1 351 - STA FIELDUP 352 - LDA TABSTART 353 - STA TABPOS 354 -DISPTABLOOP LDY TABPOS 355 - LDA TABLE,Y 356 -; LDX TABMODE 357 -; BEQ TABNONAMES 358 -; NAMEN 359 -TABNAMES PHA 360 - LDY FIELDUP 361 - JSR COPYDRV 362 - PLA 363 - LDX SPACES 364 - BMI TABCONT 365 -TABNONAMES LDX TABMODE 366 - CPX #TABMODEMAX 367 - BEQ TABCONT 368 - JSR STATPOS 369 - LDA FIELDUP 370 - JSR SETCUR 371 - LDY #0 372 - STY RVS 373 - LDX TABMODE 374 - BEQ TABPOINTS 375 - LDA #"" 376 - LDY #6 377 - JSR CHROUTY 378 - LDA #" " 379 - JSR CHROUT 380 -; PUNKTE 381 -TABPOINTS LDA (COPYPTR),Y 382 - JSR BYTEOUT3 383 - LDX TABMODE 384 - BNE TABCONT 385 -; SIEGE 386 - LDA #"." 387 - LDY #5 388 - JSR CHROUTY 389 - INY 390 - LDA (COPYPTR),Y 391 - JSR BYTEOUT2 392 -; GEMEINSAMES ENDE 393 -TABCONT INC TABPOS 394 - INC FIELDUP 395 - LDA FIELDUP 396 - CMP #MAXFIELD+TABSIZE+1 397 - BNE DISPTABLOOP 398 - LDY #18 399 - STY RVS 400 -; 401 -; TASTATUR ABFRAGEN 402 -; 403 -KEYBOARD LDA #0 404 - JSR SELECT 405 -KEYBOARDLOOP CMP #13 ;RETURN 406 - BNE NOCR 407 - LDA FIELD 408 - BNE NORACE 409 - JSR EDIT ;RENNNAMEN 410 - JSR GPNAMEPOS 411 - JSR COPY 412 - BMI SIMDOWN 413 -NORACE CMP #DRIVER1 ;FAHRER? 414 - BCS DRVEDIT 415 - LDA FIELD ;RENNERG. 416 - PHA 417 - LDA #DRIVER1 418 - STA FIELD 419 - JSR SETCUR 420 -RESINLOOP LDA #DRIVER1 421 - JSR SELECT 422 - CMP #13 423 - BEQ CR 424 - CMP #20 ;DEL 425 - BNE RESINLOOP 426 - JSR INVERS 427 - LDA #0 428 - STA FIELD 429 -CR JSR GPRESPOS 430 - PLA 431 - TAY 432 - LDA FIELD 433 - STY FIELD 434 - DEY 435 - STA (COPYPTR),Y 436 - INC CALCFLAG 437 - BNE SIMDOWN 438 -DRVEDIT JSR EDIT ;FAHRER 439 -SIMDOWN JSR INVERS 440 - LDA #0 441 - STA MINFIELD 442 - JSR DOWN 443 - LDA CALCFLAG 444 - BNE JSTATCALC 445 -JDISPLAY JMP DISPLAY 446 -NOCR CMP #134 ;F3 447 - BNE NOF3 448 - LDA TABSTART 449 - CLC 450 - ADC #TABSIZE 451 - CMP #MAXDRIVER-TABSIZE+1 452 - BCC TABSTARTOK 453 - LDA #MAXDRIVER-TABSIZE 454 -TABSTARTOK STA TABSTART 455 -JDISPTAB JMP DISPTAB 456 -NOF3 CMP #133 ;F1 457 - BNE NOF1 458 - LDA TABSTART 459 - SEC 460 - SBC #TABSIZE 461 - BPL TABSTARTOK 462 - LDA #0 463 - BEQ TABSTARTOK 464 -NOF1 CMP #136 ;F7 465 - BNE NOF7 466 - LDX TABMODE 467 - DEX 468 - BPL TABMODESET 469 - LDX #TABMODEMAX 470 -TABMODESET STX TABMODE 471 - BPL JDISPTAB 472 -NOF7 CMP #"" ;CRSR RECHTS 473 - BNE NORIGHT 474 - LDX GP 475 - INX 476 - CPX #MAXGP 477 - BNE GPOK 478 - LDX #0 479 -GPOK STX GP 480 -JSTATCALC JMP STATCALC 481 -NORIGHT CMP #"" ;CRSR LINKS 482 - BNE NOLEFT 483 - DEC GP 484 - BPL JSTATCALC 485 - LDX #MAXGP-1 486 - BNE GPOK 487 -NOLEFT CMP #"S" ;SAVE? 488 - BNE NOSAVE 489 - LDY #1 490 - JSR DISKPREP 491 - BCS BCSDISKEND ;FEHLER 492 - JSR CHKOUT 493 -; HEADER+PUNKTETYP 494 - LDY #HEADERLEN 495 -DSHEADER LDA POINTTYPE,Y 496 - JSR CHROUT 497 - DEY 498 - BPL DSHEADER 499 - LDA GP 500 - JSR CHROUT 501 -; PLATZPUNKTE+RENNNAMEN 502 - LDY #MAXGP*FIELDLEN+RESSIZE 503 -DSGPNAMES LDA GPNAMES-1,Y 504 - JSR CHROUT 505 - DEY 506 - BNE DSGPNAMES 507 -;RENNRESULTATE 508 - LDY #MAXGP*RESSIZE 509 -DSGPRES LDA GPRES-1,Y 510 - JSR CHROUT 511 - DEY 512 - BNE DSGPRES 513 -;FAHRERNAMEN 514 - LDA #DRIVER1 515 -DSDRIVER STA FIELDUP 516 - JSR SETCUR 517 - LDY #FIELDLEN-1 518 -DSDRIVERIN LDA (FIELDPTR),Y 519 - JSR CHROUT 520 - DEY 521 - BPL DSDRIVERIN 522 - LDY FIELDUP 523 - INY 524 - TYA 525 - CMP #MAXFIELD+1 526 - BNE DSDRIVER 527 - BEQ DISKEND 528 -NOSAVE CMP #"L" ;LOAD? 529 - BNE NOLOAD 530 - LDY #0 531 - JSR DISKPREP 532 -BCSDISKEND BCS DISKEND ;FEHLER 533 - JSR CHKIN 534 -;HEADER UEBERPRUEFEN 535 - LDY #HEADERLEN-1 536 -DLHEADER JSR CHRIN 537 - CMP HEADER,Y 538 - BNE DISKEND ;KEINE F1-DAT. 539 - DEY 540 - BPL DLHEADER 541 - JSR CHRIN 542 - STA POINTTYPE 543 - JSR CHRIN 544 - STA GP 545 -;PLATZPUNKTE+RENNNAMEN 546 - LDY #MAXGP*FIELDLEN+RESSIZE 547 -DLGPNAMES JSR CHRIN 548 - STA GPNAMES-1,Y 549 - DEY 550 - BNE DLGPNAMES 551 -;RENNRESULTATE 552 - LDY #MAXGP*RESSIZE 553 -DLGPRES JSR CHRIN 554 - STA GPRES-1,Y 555 - DEY 556 - BNE DLGPRES 557 -;FAHRERNAMEN 558 - LDA #DRIVER1 559 -DLDRIVER STA FIELDUP 560 - JSR SETCUR 561 - LDY #FIELDLEN-1 562 -DLDRIVERIN JSR CHRIN 563 - STA (FIELDPTR),Y 564 - DEY 565 - BPL DLDRIVERIN 566 - LDY FIELDUP 567 - INY 568 - TYA 569 - CMP #MAXFIELD+1 570 - BNE DLDRIVER 571 -DISKEND JSR CLRCH 572 - LDA #GA 573 - JSR CLOSE 574 -JSTATCALC2 JMP STATCALC 575 -NOLOAD CMP #"1" ;POINTS1? 576 - BNE NO1 577 - LDA #0 578 -JCOPYPOINTS JMP COPYPOINTS 579 -NO1 CMP #"2" ;POINTS2? 580 - BNE NO2 581 - LDA #1 582 - BNE JCOPYPOINTS 583 -NO2 CMP #"R" ;RECALC? 584 - BEQ JSTATCALC2 585 -NORECALC CMP #"" ;NEW? 586 - BNE NONEW 587 - JMP INIT 588 -NONEW CMP #"" ;QUIT? 589 - BEQ SCRCLR 590 - CMP #"P" 591 - BNE NOPRT 592 - JSR PRTRACE 593 -NOPRT JMP KEYBOARD 594 -SCRCLR LDA #"" 595 - JMP CHROUT 596 -; 597 -; -------------- 598 -; UNTERPROGRAMME 599 -; -------------- 600 -; 601 -; EINGABEFELD AUSWAEHLEN, A: MIN. FELD 602 -; ASCII-CODE DER EINGABE IN A 603 -; 604 -SELECT STA MINFIELD 605 -; STATUSZEILE 606 -SELECTLOOP .IF DECO 607 - LDA #STATCOL 608 - STA COLOR 609 -.EI 610 - LDA FIELD 611 - CMP #DRIVER1 ;FAHRER? 612 - BCS SELDRV 613 - JSR STATPREP 614 - LDX GP ;RENNNR. 615 - INX 616 - TXA 617 - JSR BYTEOUT2 618 - LDA #"/" 619 - JSR CHROUT 620 - LDX POINTTYPE ;PUNKTETYP 621 - INX 622 - JSR DIGITOUT 623 - JMP SELECTMAIN 624 -SELDRV JSR STATPOS 625 - LDX #DRIVER1 626 - LDY #1 627 - CLC 628 - JSR PLOT 629 - LDY #0 630 -SELDRVLOOP TYA 631 - ROR 632 - BCS RVSSTAT 633 - LDA #0 634 - STA RVS 635 -RVSSTAT LDA (COPYPTR),Y 636 - JSR BYTEOUT23 637 - LDA #18 638 - STA RVS 639 - INY 640 - CPY #STATSIZE 641 - BNE SELDRVLOOP 642 -; STATUSZEILE ENDE 643 -SELECTMAIN LDA FIELD 644 - JSR SETCUR 645 - JSR INVERS 646 -SELKEYLOOP JSR GETIN 647 - CMP #0 648 - BEQ SELKEYLOOP 649 - CMP #13 650 - BEQ LEAVESELECT 651 - PHA 652 - JSR INVERS 653 - PLA 654 - CMP #"" ;CRSR HOCH 655 - BNE NOUP 656 - LDX FIELD 657 - DEX 658 - CPX MINFIELD 659 - BPL SELECTOK1 660 - LDX #MAXFIELD 661 -SELECTOK1 STX FIELD 662 - BPL SELECTLOOP 663 -NOUP CMP #"" ;CRSR RUNTER 664 - BNE LEAVESELECT 665 - JSR DOWN 666 - JMP SELECTLOOP 667 -; EINSPRUNG FUER EIN FELD ABWAERTS 668 -DOWN LDX FIELD 669 - INX 670 - CPX #MAXFIELD+1 671 - BCC SELECTOK2 672 - LDX MINFIELD 673 -SELECTOK2 STX FIELD 674 -LEAVESELECT RTS 675 -; 676 -; STATUSZEILE INV.,CRSR SETZEN,STATPOS=0 677 -; 678 -STATPREP LDX #DRIVER1 679 - LDY #0 680 - JSR PLOTMEM 681 - LDY #LINELEN-2 682 -STATPREPLOOP LDA #160 ;RVS. SPACE 683 - STA (FIELDPTR),Y 684 -.IF DECO 685 - LDA #STATCOL 686 - STA (COLORPTR),Y 687 -.EI 688 - DEY 689 - BPL STATPREPLOOP 690 - LDA #"" 691 - JMP CHROUT 692 -; 693 -; BYTE IN A 2- O. 3-STELLIG AUSGEBEN 694 -; 695 -BYTEOUT23 CPY #0 ;PUNKTE? 696 - BNE BYTEOUT2 ;NEIN:BREITE2 697 -BYTEOUT3 LDX #0 698 -LOOP100 CMP #100 699 - BCC NO100 700 - INX 701 - SBC #100 702 - BNE LOOP100 703 -NO100 JSR DIGITOUT 704 -; EINSPRUNG FUER 2-STELLIG 705 -BYTEOUT2 LDX #0 706 -LOOP10 CMP #10 707 - BCC NO10 708 - INX 709 - SBC #10 710 - BNE LOOP10 711 -NO10 JSR DIGITOUT 712 - TAX 713 -; ZIFFER IN X AUSGEBEN 714 -DIGITOUT PHA 715 - TXA 716 - CLC 717 - ADC #"0" 718 - JSR CHROUT 719 - PLA 720 - RTS 721 -; 722 -; Y-MAL ZEICHEN IN A AUSGEBEN 723 -; 724 -CHROUTY JSR CHROUT 725 - DEY 726 - BNE CHROUTY 727 - RTS 728 -; 729 -; MEMPOS VON GP. RENNNAMEN NACH COPYPTR 730 -; UND CRSR AUF RENNNAMEN POS. 731 -; 732 -GPNAMEPOS LDA #<(GPNAMES) 733 - STA COPYPTR 734 - LDA #>(GPNAMES) 735 - STA COPYPTR+1 736 - LDA GP 737 - LDY #FIELDLEN 738 - JSR MEMPOS 739 - LDA #0 740 -; 741 -; CURSOR AUF ANFANG DES A. FELDES POS. 742 -; 743 -SETCUR LDY #0 744 -.IF DECO 745 - LDX #RACECOL 746 - CMP #0 747 - BEQ NODRIVER 748 - LDX #RESCOL 749 -.EI 750 - CMP #DRIVER1 751 - BCC NODRIVER 752 -.IF DECO 753 - LDX #DRVCOL 754 -.EI 755 - ADC #0 ;+1 WG. C=1 756 - CMP #DRIVER2+2 757 - BCC NODRIVER 758 - SBC #DRIVER2-DRIVER1+1 759 - LDY #COL2 760 - CMP #DRIVER2+2 761 - BCC NODRIVER 762 -.IF DECO 763 - LDX #TABCOL 764 -.EI 765 - SBC #DRIVER2+2 766 -NODRIVER .IF DECO 767 - STX COLOR 768 -.EI 769 - TAX 770 -; EINSPRUNG FUER CRSR AUF Y/X+FIELDPTR 771 -PLOTMEM CLC 772 - JSR PLOT 773 -; CURSOR-POS. IM BS-SPEICHER->FIELDPTR 774 - LDY LINE+1 775 - LDA LINE 776 - CLC 777 - ADC COL 778 - STA FIELDPTR 779 -.IF DECO 780 - STA COLORPTR 781 -.EI 782 - BCC NOHIGHLINE 783 - INY 784 -NOHIGHLINE STY FIELDPTR+1 785 -.IF DECO 786 - TYA 787 - AND #$03 788 -.IF VIC 789 - ORA #$94 790 -.EI 791 -.IF VIC=0 792 - ORA #$D8 793 -.EI 794 - STA COLORPTR+1 795 -.EI 796 - RTS 797 -; 798 -; FIELDLEN-ZEICHEN AB FIELDPTR INV. 799 -; 800 -INVERS LDY #FIELDLEN-1 801 -INVLOOP LDA (FIELDPTR),Y 802 - EOR #128 803 - STA (FIELDPTR),Y 804 - DEY 805 - BPL INVLOOP 806 - RTS 807 -; 808 -; FAHRER A NACH FELD Y KOPIEREN 809 -; 810 -COPYDRV PHA 811 - TYA 812 - JSR SETCUR 813 - LDY FIELDPTR 814 - STY COPYPTR 815 - LDY FIELDPTR+1 816 - STY COPYPTR+1 817 - LDY #<(EMPTY) 818 - STY FIELDPTR 819 - LDY #>(EMPTY) 820 - STY FIELDPTR+1 821 - PLA 822 - BEQ COPY 823 - JSR SETCUR 824 -; 825 -; FIELDLEN-ZEICHEN V. FIELDPTR->COPYPTR 826 -; SPACES=$FF FALLS NUR LEERZEICHEN 827 -; 828 -COPY LDY #FIELDLEN-1 829 - STY SPACES 830 -COPYLOOP LDA (FIELDPTR),Y 831 - AND #127 ; KEINE RVS. ZEICHEN 832 - CMP #" " 833 - BNE COPYNOSPC 834 - DEC SPACES 835 -COPYNOSPC STA (COPYPTR),Y 836 - DEY 837 - BPL COPYLOOP 838 - RTS 839 -; 840 -; MEMPOS. STATISTIK V. FAHRER A->COPYPTR 841 -; 842 -STATPOS LDY #<(DRVSTAT) 843 - STY COPYPTR 844 - LDY #>(DRVSTAT) 845 - STY COPYPTR+1 846 - SEC 847 - SBC #DRIVER1 848 - LDY #STATSIZE 849 - BNE MEMPOS 850 -; 851 -; MEMPOS. DER GP. RESULTATE NACH COPYPTR 852 -; 853 -GPRESPOS LDA GP 854 -; EINSPRUNG FUER GP-NR. IN A 855 -GPRESPOSA LDY #<(GPRES) 856 - STY COPYPTR 857 - LDY #>(GPRES) 858 - STY COPYPTR+1 859 - LDA GP 860 - LDY #RESSIZE 861 -; 862 -; COPYTR=COPYPTR+Y*A 863 -; 864 -MEMPOS STA FACTOR 865 - LDA COPYPTR 866 -MEMLOOP CLC 867 - ADC FACTOR 868 - BCC MEMNOHIGH 869 - INC COPYPTR+1 870 -MEMNOHIGH DEY 871 - BNE MEMLOOP 872 - STA COPYPTR 873 - RTS 874 -; 875 -; COPYPTR NACH FIELDPTR KOPIEREN 876 -; 877 -COPYFIELD LDA COPYPTR 878 - STA FIELDPTR 879 - LDA COPYPTR+1 880 - STA FIELDPTR+1 881 - RTS 882 -; 883 -; FELD AB CURSORPOS EDIEREN 884 -; 885 -EDIT LDX #0 ;STARTPOS. 0 886 - STX FIELDPOS 887 -; LDX #18 ;RVS. SCHRIFT EIN 888 -; STX RVS 889 -NEXTKEY DEC BLINK ;CRSR EIN 890 -WAITKEY JSR GETIN 891 - CMP #13 ;RETURN 892 - BEQ LEAVEEDIT 893 - LDX FIELDPOS 894 - CMP #"" ;CRSR LINKS 895 - BNE NOELEFT 896 - DEX 897 - DEX 898 - CPX #$FE 899 - BNE PRINT 900 -NOELEFT CPX #FIELDLEN ;RECHTER RAND? 901 - BCS WAITKEY 902 - CMP #"" ;CRSR RECHTS 903 - BEQ PRINT 904 - CMP #34 ;ANFUEHRUNGSZEICHEN? 905 - BEQ WAITKEY 906 - CMP #" " ;ERLAUBTE ZEICHEN? 907 - BCC WAITKEY 908 - CMP #"[" 909 - BCC PRINT 910 - CMP #"" 911 - BCC WAITKEY 912 - CMP #219 913 - BCS WAITKEY 914 -PRINT JSR LEAVEEDIT ;CRSR AUS 915 - JSR CHROUT ;ZEICHEN AUSGEBEN 916 - INX ;POS. UM 1 ERHOEHEN 917 - STX FIELDPOS 918 - CPX #FIELDLEN ;UEBER RECHTEN RAND? 919 - BNE NEXTKEY 920 - LDA #"" ;DANN CRSR LINKS 921 - JSR CHROUT 922 - DEC FIELDPOS 923 - BNE NEXTKEY 924 -LEAVEEDIT LDY BLINKFLAG ;AUF CRSR WARTEN 925 - BNE LEAVEEDIT 926 - INC BLINK ;CRSR AUS 927 - RTS 928 -; 929 -; DATEINAME SETZEN UND DATEI OEFFNEN 930 -; SEK-ADR. IN Y 931 -; 932 -DISKPREP .IF DECO 933 - LDA #STATCOL 934 - STA COLOR 935 -.EI 936 - LDA #GA 937 - TAX 938 - JSR SETLFS 939 - JSR STATPREP 940 - LDX #DRIVER1 941 - LDY #1 942 - JSR PLOTMEM 943 - LDA #FIELDLEN 944 - LDY SA ;SAVE? 945 - BEQ DPNOSAVE 946 - LDA #"@" ;JA: REPLACE-ZEICHEN 947 - JSR CHROUT ;VOR DATEINAME 948 - LDA #":" 949 - JSR CHROUT 950 - LDA #FIELDLEN+2 951 -DPNOSAVE STA FNAMELEN 952 - JSR EDIT 953 -;ZEICHEN IN DATEINAME KORR.(BS->ASC+INV) 954 - LDY #0 955 -DCHARLOOP LDA (FIELDPTR),Y 956 - AND #127 ;NICHT RVS 957 - CMP #27 ;KLEINBUCHST.? 958 - BCS DCHAROK 959 - ADC #64 ;IN GROSSBUCHST. 960 -DCHAROK STA (FIELDPTR),Y 961 - INY 962 - CPY FNAMELEN 963 - BNE DCHARLOOP 964 - JSR OPEN 965 - LDX #GA 966 - RTS 967 -; 968 -; RENNEN AUSDRUCKEN 969 -; 970 -PRTRACE LDA #PRTGA 971 - TAX 972 - LDY #7 973 - JSR SETLFS 974 - JSR OPEN 975 - BCS PRTEND 976 - LDX #PRTGA 977 - JSR CHKOUT 978 - LDA #0 979 - JSR PRTFIELD 980 - JSR CROUT 981 - JSR CHROUT 982 - LDA #1 983 - STA PRTCNT 984 -PRTRACELOOP JSR PRTFIELD 985 - JSR CROUT 986 - INC PRTCNT 987 - LDA PRTCNT 988 - CMP #RESSIZE+1 989 - BNE PRTRACELOOP 990 - JSR CROUT 991 - LDX #0 992 - STX PRTCNT 993 -PRTTABLOOP LDA TABLE,X 994 - PHA 995 - JSR PRTFIELD 996 - LDA #" " 997 - JSR CHROUT 998 - PLA 999 - JSR STATPOS 1000 - LDA SPACES 1001 - BMI PRTNODRV 1002 - LDY #0 1003 -PRTSTATLOOP LDA (COPYPTR),Y 1004 - JSR BYTEOUT23 1005 - LDA #" " 1006 - JSR CHROUT 1007 - INY 1008 - CPY #STATSIZE 1009 - BNE PRTSTATLOOP 1010 -PRTNODRV JSR CROUT 1011 - INC PRTCNT 1012 - LDX PRTCNT 1013 - CPX #MAXDRIVER 1014 - BNE PRTTABLOOP 1015 -PRTEND JSR CLRCH 1016 - LDA #PRTGA 1017 - JMP CLOSE 1018 -; 1019 -; FELD A AUSGEBEN 1020 -; 1021 -PRTFIELD JSR SETCUR 1022 - LDY #FIELDLEN-1 1023 - STY SPACES 1024 - LDY #0 1025 -PRTFIELDLOOP LDA (FIELDPTR),Y 1026 - AND #127 ;NICHT RVS 1027 - CMP #64 1028 - BCC PNOCAP 1029 - ADC #127 1030 -PNOCAP CMP #27 ;KLEINB.? 1031 - BCS PCHAROK 1032 - ADC #64 ;IN GROSSBUCHST. 1033 -PCHAROK CMP #" " 1034 - BNE PRTNOSPC 1035 - DEC SPACES 1036 -PRTNOSPC JSR CHROUT 1037 - INY 1038 - CPY #FIELDLEN 1039 - BNE PRTFIELDLOOP 1040 - RTS 1041 -; 1042 -; CR AUSGEBEN 1043 -; 1044 -CROUT LDA #13 1045 - JMP CHROUT 1046 -; 1047 -; TABELLE FUER PUNKTEVERTEILUNG 1048 -; 1049 -POINTTYPE .BY 1 1050 -; 1051 -; DATEISTART (UMGEKEHRTE REIHENFOLGE) 1052 -; 1053 -HEADER .BY MAXDRIVER,FIELDLEN,RESSIZE,MAXGP 1054 - .TX "M1F" 1055 -; 1056 -; LEERFELD 1057 -; 1058 -EMPTY .TX ".........." 1059 -; 1060 -; RANDTEXTE (FALLS DECO<>0) 1061 -; 1062 -.IF DECO 1063 -WWW .BY 160,131,130,141,174,143,146,129 1064 - .BY 142,135,133,146,143,129,132,174 1065 - .BY 132,133,160,176+VMAJOR,174,176+VMINOR,160 1066 -.IF VIC=0 1067 - .BY 160,160 1068 -WRITTEN .BY 160,160,160,160,160,168,131,169 1069 - .BY 160,178,176,YEAR10+176,YEAR1+176,160,130,153 1070 - .BY 160,212,136,143,141,129,147,160 1071 - .BY 203,140,133,137,142,160,168,211 1072 - .BY 212,203,169,160,160,160,160 1073 -.EI 1074 -.EI 1075 -; 1076 -; PUNKTE FUER PLAETZE 1-8 1077 -; 1078 -POINTS1 .BY 10,6,4,3,2,1,0,0 1079 -POINTS2 .BY 10,8,6,5,4,3,2,1 1080 -; 1081 -; TABELLE 1082 -; 1083 -TABLE .BY 0 1084 -; 1085 -.EN