Main Index Routine Index Memory Index
Previous Page Next Page


Routine $06B2:   Step motor movement to other (Half-)Track, set Bit rate (~set Job #4) & Track Key.

If call to $06B2: Set Job #4 to execute $0700 (Track 36 handler), move head to higher Track (Track number +1), set Bit rate & Track Key. If call to $06B6: Move head to higher Track (Track number +1), set Bit rate & Track Key. If call to $06B9: Move head to custom Track (Track number in X), set Bit rate & Track Key. If call to $06BA: Move head to custom Track (Track number in A), set Bit rate & Track Key. If call to $06C2: Move head custom number of Halftracks (+/- Y), set Bit rate & Track Key. If call to $06E8: Set Bit rate & Track Key.

JSR from $0564: 06B2: A9 D0 LDA #$D0 06B4: 85 04 STA $04 ; set Job #4 to execute $0700 (Track 36 handler) JSR from $055B: 06B6: A6 22 LDX $22 ; X:= current Track location 06B8: E8 INX ; set target Track location (increase Track number) JSR from $059B: 06B9: 8A TXA ; X=A is target Track JSR from $07DA 06BA: AA TAX ; A=X is target Track 06BB: 38 SEC 06BC: E5 22 SBC $22 ; Number of Tracks in difference to current 06BE: 86 22 STX $22 ; [$22]:= target Track 06C0: 0A ASL A ; Number of Halftrack steps for the step motor (2 per Track in difference) 06C1: A8 TAY JSR from $0610, Jump from $06DA: 06C2: AE 00 1C LDX $1C00 ; get current step motor position (lowest 2 bits) 06C5: 98 TYA ; Number of Halftrack steps to target Track (>0 to increase Track number) 06C6: F0 15 BEQ $06DD 06C8: 30 03 BMI $06CD ; branch into the middle of below "dummy" BIT instruction if Y<0 06CA: 88 DEY ; decrease (positive) Number of Halftrack steps still left 06CB: E8 INX ; move step motor inwards (to higher Track numbers) ///////////////////////// 06CC: 2C C8 CA BIT $CAC8 ; dummy/nop operation if Y>=0 ///////////////////////// 06CD: C8 INY ; increase (negative) Number of Halftrack steps still left 06CE: CA DEX ; move step motor outwards (to lower Track numbers) 06CF: 8A TXA ///////////////////////// 06CF: 8A TXA 06D0: 09 6C ORA #$6C ; #$6C=01101100b: Bit rate 11 = 307692 Bit/s, LED on, Motor on) 06D2: 8D 00 1C STA $1C00 ; set new head movement direction (inwards/outwards) 06D5: A6 13 LDX $13 ; hi-Timer for wait loop (higher value = longer wait) 06D7: 20 F3 06 JSR $06F3 ; wait loop to give the drive mechanics time 06DA: 4C C2 06 JMP $06C2 Jump from $06C6: 06DD: A4 22 LDY $22 ; current track for drive 0 06DF: AD 00 1C LDA $1C00 ; get current drive config (i.e. Bit rate) 06E2: C0 13 CPY #$13 ; compare Track number with 19 06E4: 90 02 BCC $06E8 ; branch if Track number <19 06E6: 29 DF AND #$DF ; #$DF=11011111b: Bit rate "10 = 285714 Bit/s" for Tracks >=19. JSR from $056C, $070D, Jump from $0622, $06E4: 06E8: 8D 00 1C STA $1C00 ; sets the Bit rate (no change for Tracks <19) 06EB: A2 06 LDX #$06 ; hi-Timer for wait loop (higher value = longer wait) 06ED: 20 F3 06 JSR $06F3 ; wait loop to give the drive mechanics time 06F0: 4C 69 07 JMP $0769 ; get Key for current Track and return to calling routine. Previous Page / Next Page