0000 ;***************************************************************************** 0000 ; 0000 ; erzeuge eine Tonleiter mit Rechecktönen 0000 ; 0000 ; Zielfrequenzen 0000 ; f = 261.63 293.66 329.63 349.23 392.00 440.00 493.88 523.25 0000 ; 0000 ; Hardware: 6502, fcpu=1MHz, Junior Lerncomputer 0000 ; 0000 ;***************************************************************************** 0000 ; MOS6532 PIA Adressen 0000 PAD: = $1A80 0000 PADD: = $1A81 0000 PBD: = $1A82 0000 PBDD: = $1A83 0000 ; Zero page für alle schnellen Variablen 0000 .ORG 0 0000 00 NOTE: DB 0 0001 ; Programmstart 0300 .ORG $300 0300 A9 01 LDA #$1 0302 8D 83 1A STA PBDD ; set PB0 to output 0305 MAINLOOP: 0305 A9 C8 LDA #200 ; C 0307 85 00 STA note 0309 20 40 03 JSR playnote 030C A9 9E LDA #158 ; D 030E 85 00 STA note 0310 20 40 03 JSR playnote 0313 A9 79 LDA #121 ; E 0315 85 00 STA note 0317 20 40 03 JSR playnote 031A A9 68 LDA #104 ; F 031C 85 00 STA note 031E 20 40 03 JSR playnote 0321 A9 49 LDA #73 ; G 0323 85 00 STA note 0325 20 40 03 JSR playnote 0328 A9 2D LDA #45 ; H 032A 85 00 STA note 032C 20 40 03 JSR playnote 032F A9 14 LDA #20 ; A 0331 85 00 STA note 0333 20 40 03 JSR playnote 0336 A9 09 LDA #9 ; C 0338 85 00 STA note 033A 20 40 03 JSR playnote 033D 4C 05 03 JMP mainloop 0340 PLAYNOTE: 0340 A0 32 LDY #50 ; Tondauer 0342 LOOP: 0342 ; Standardverzögerung 0342 A2 B4 LDX #180 ; 5us×179+5us=900us 0344 20 58 03 JSR shortdelay ; 6 Takte 0347 ; Zusatzverzögerung 0347 A6 00 LDX note 0349 20 58 03 JSR shortdelay 034C AD 82 1A LDA PBD ; port B lesen 034F 49 01 EOR #$01 ; Bit 0 umschalten 0351 8D 82 1A STA PBD ; zurückschreiben 0354 88 DEY 0355 D0 EB BNE loop 0357 60 RTS 0358 ; Gesamtzeit = 5N+5 us 0358 SHORTDELAY: 0358 CA DEX ; 2 Takte 0359 D0 FD BNE shortdelay ; 3 Takte jmp , 2 no jmp 035B 60 RTS ; 6 Takte PAD: 1A80 DEFINED AT LINE 13 PADD: 1A81 DEFINED AT LINE 14 PBD: 1A82 DEFINED AT LINE 15 > USED AT LINE 72 > USED AT LINE 74 PBDD: 1A83 DEFINED AT LINE 16 > USED AT LINE 25 NOTE: 0000 DEFINED AT LINE 20 > USED AT LINE 29 > USED AT LINE 33 > USED AT LINE 37 > USED AT LINE 41 > USED AT LINE 45 > USED AT LINE 49 > USED AT LINE 53 > USED AT LINE 57 > USED AT LINE 70 MAINLOOP: 0305 DEFINED AT LINE 27 > USED AT LINE 60 PLAYNOTE: 0340 DEFINED AT LINE 62 > USED AT LINE 30 > USED AT LINE 34 > USED AT LINE 38 > USED AT LINE 42 > USED AT LINE 46 > USED AT LINE 50 > USED AT LINE 54 > USED AT LINE 58 LOOP: 0342 DEFINED AT LINE 65 > USED AT LINE 76 SHORTDELAY: 0358 DEFINED AT LINE 80 > USED AT LINE 68 > USED AT LINE 71 > USED AT LINE 82