A large commit.
[pdp8.git] / sw / rescue / muenchen2013 / files / krause_soft / fdfrmt.pa
1
2 /------------------------------------------------------
3 /FORMAT ALL OR PART OF A FLOPPY DISC
4 /------------------------------------------------------
5
6 FRMT, STA /INITIALIZE PORT
7 DRCO
8 NEW, JMS XSRA /INITIALIZE DRIVE
9 CSR
10 TAD (FDFI /ABORT COMMAND
11 JMS XLR
12 JMS XGR
13 TAD (FDRS /RESTORE DRIVE
14 JMS XLR
15 JMS XGR
16
17 INVTN, JMS TYPE /ASK FOR FIRST TRACK #
18 MSG1
19 JMS ACCEPT
20 DCA FTN /SAVE IT
21 TAD FTN /VALIDITY CHECK
22 TAD (-63
23 SPA CLA
24 JMP INVTN
25
26 JMS TYPE /ASK FOR # OF TRACKS TO FORMAT
27 MSG2
28 JMS ACCEPT
29 CIA /NEGATE
30 DCA TCNT /SAVE IT
31
32 JMS TYPE /TYPE WARNING
33 MSG3
34 JMS ACCEPT
35 TAD (-1 /OK?
36 SZA
37 JMP ABORT /NO - ABORT
38
39 NEXT, TAD TCNT /CHECK TRACK COUNT
40 SNA CLA
41 JMP EXIT /EXIT IF ZERO
42
43 JMS XSRA /SEEK TO TRACK
44 DATA
45 TAD FTN
46 JMS XLR
47 JMS XGR
48
49 TAD (-SPT /SETUP SECTORS PER TRACK
50 DCA SCNT
51 TAD (STAB /SETUP ADDRESS OF SEKTOR TABLE
52 DCA SNUM
53 TAD I SNUM /SET FIRST SECTOR #
54 DCA SECTOR
55 ISZ SNUM
56 NOP
57 TAD (FSTRT-FEND /SETUP FULL TABLE LENGTH
58 DCA PNT
59 TAD (FSTRT /SETUP START ADDRESS
60 DCA ADDR
61
62 JMS XSRA /ISSUE WRITE TRACK COMMAND
63 CSR
64 TAD FDWT
65 JMS XLR
66 JMS XSRA /SWITCH TO DATA REGISTER
67 DATA
68
69 WDT, TAD I ADDR /WRITE DATA
70 JMS XLR
71 WLP, DBRI /WAIT FOR INTRQ OR DRQ
72 RAL
73 SMA
74 JMP NEXT
75 SZL
76 JMP WLP
77 ISZ PNT /INCREMENT BYTE COUNT
78 JMP WDT
79
80 TAD (FNORM-FEND /RESET BYTE COUNT
81 DCA PNT
82 TAD (FNORM /RESET ADDRESS
83 DCA ADDR
84 TAD I SNUM /GET NEXT SECTOR #
85 DCA SECTOR
86 ISZ SNUM
87 JMP WDT
88
89 TRKEND, JMS XWCC /WAIT FOR END OF COMMAND
90 JMS XSRA /GET STATUS
91 CSR
92 JMS XGR
93 MQL /DISPLAY IN MQ REGISTER
94 JMP NEW /REENTER