From 98cab31fc3659e33aef260efca55bf9f1753164c Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 11 Feb 2019 11:49:19 +0100 Subject: Add source files from Michael --- system/shard-z80-ruc-64180/1.5/src/TRACK.INC | 167 +++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 system/shard-z80-ruc-64180/1.5/src/TRACK.INC (limited to 'system/shard-z80-ruc-64180/1.5/src/TRACK.INC') diff --git a/system/shard-z80-ruc-64180/1.5/src/TRACK.INC b/system/shard-z80-ruc-64180/1.5/src/TRACK.INC new file mode 100644 index 0000000..2bd2d0c --- /dev/null +++ b/system/shard-z80-ruc-64180/1.5/src/TRACK.INC @@ -0,0 +1,167 @@ + +; TRACK.INC for RUC180 CP/M 3.0 +; +; Version 13.09.85 +; Stand: 13.01.87, Retries fuer EUMEL entschaerft (ca. 1/8 der alten Zeit) + + .printx 'TRACK.INC' + +track_RW + ldy #1 ; 13.01.87, Michael + sty recal_cnt + ldy #02 ; 13.01.87 + sty tktry_cnt + ldx iob_old_S + cpx slot10z + beq sameSLt +track0 + JSR moving + BNE track0 + LDX slot10z + STX iob_old_S +sameSlt + JSR moving + PHP + LDA mtron,X + ldy iob_drv + cpy iob_old_D + BEQ sameDrv + sty iob_old_D + PLP + lda #0 + PHP +sameDrv + CMP drive0,Y + LDA #0EF + STA wait_cnt + LDA #0D8 + STA wait_cnt+1 + PLP + PHP + BNE track2 + LDY #8 +track1 JSR wait + DEY + BNE track1 + + LDX slot10z +track2 JSR seekT ; Step to Track + + PLP + BNE rotating +; bit param ; wg. bescheuerten Philips-Drives +; bmi no_wait ; branch if read + +track3 LDY #12 +track4 DEY + BNE track4 + INC wait_cnt + BNE track3 + INC wait_cnt+1 + BNE track3 +;no_wait + JSR moving + BEQ drive_err +rotating + LDA #0FF + STA iob_sec +search_hdr + LDY #10 ; 13.01.87 + STY hdtry_cnt +nxt_sec + cli + dec hdtry_cnt + BMI no_sec + + LDX slot10z + JSR read_hdr + BCS nxt_sec + LDA trk_in_hdr + CMP iob_trk + BEQ found_trk + cli + jsr trk_to_ph ; Translate Track to Phase + LDY disk_no + STA head_table,Y ; Store it in Table + DEC tktry_cnt + BNE try_seek +no_sec + DEC recal_cnt + BEQ drive_err + LDA #02 ; 13.01.87 + STA tktry_cnt + lda #56 + bit def_byte + bmi no_sec2 ; Ehring-Controller ? + + asl a ; Ehring: *2 +no_sec2: LDY disk_no + STA head_table,Y + LDA #0 + JSR seekL ; Step von hinten bis 0 +try_seek + JSR seekT + JMP search_hdr +drive_err + LDA #1 + JMP track_fail + +found_trk + bit param + bmi found2 + LDA sec_in_hdr + CMP iob_sec + BEQ write_it + CLC ; next sector for write! + ADC #01 + AND #0F + CMP iob_sec + BEQ nxt_sec + STA sec_in_hdr +found2 + LDY sec_in_hdr ; if sec_in_hdr>=10 then crash... + LDA sec_tble,Y + bne nxt_sec +;need_sec + TYA ; physical sector # + ASL A ; + TAY + lda DMA,y + sta user_data + lda DMA+1,y + STA user_data+1 ; pointer to user's buffer + bit param + bmi read_it + JSR make_nibl + LDX slot10z + LDA sec_in_hdr + STA iob_sec +j_nxt_sec + JMP nxt_sec +read_it + JSR read_data + BCS j_nxt_sec +mark_sec + LDY sec_in_hdr + LDA #0FF + STA sec_tble,Y + STA iob_sec + DEC sec_cnt + BNE j_nxt_sec +;track_ok + lda #0 +track_fail + sta iob_err + lda mtroff,X + cli + rts +write_it + JSR write_data + BCC mark_sec + LDA #2 ; write protected ! + BCS track_fail ; bra + + .printx 'Ende' + +; Ende von NIBLE.INC + \ No newline at end of file -- cgit v1.2.3