
 1000  *SAVE S.INIT DOS & PRODOS
 1010  *--------------------------------
 1020  DOS.LOW.TRACK .EQ $12    DOS $12...$22
 1030  DOS.VOLUME    .EQ 1
 1040  SLOT          .EQ 6
 1050  DRIVE         .EQ 1
 1060  *--------------------------------
 1070  PRODOS.MAX.BLOCKS .EQ DOS.LOW.TRACK*8
 1080  *--------------------------------
 1090  ACTUAL.DOS.SECTORS   .EQ DOS.LOW.TRACK>$11+34-DOS.LOW.TRACK*16
 1100  ACTUAL.PRODOS.BLOCKS .EQ DOS.LOW.TRACK<$12+DOS.LOW.TRACK-2*8+1
 1110  *--------------------------------
 1120  DOS.WARM.START .EQ $03D0
 1130  RWTS       .EQ $03D9
 1140  GETIOB     .EQ $03E3
 1150  *--------------------------------
 1160  R.PARMS    .EQ $B7E8
 1170  R.SLOT16   .EQ $B7E9
 1180  R.DRIVE    .EQ $B7EA
 1190  R.VOLUME   .EQ $B7EB
 1200  R.TRACK    .EQ $B7EC
 1210  R.SECTOR   .EQ $B7ED
 1220  R.BUFFER   .EQ $B7F0,B7F1
 1230  R.OPCODE   .EQ $B7F4
 1240  R.ERROR    .EQ $B7F5
 1250  *--------------------------------
 1260  MON.CROUT  .EQ $FD8E
 1270  MON.PRBYTE .EQ $FDDA
 1280  MON.COUT   .EQ $FDED
 1290  *--------------------------------
 1300         .OR $803
 1310  *--------------------------------
 1320  DOUBLE.INIT
 1330         JSR FORMAT.35.TRACKS
 1340         LDA #INIT.BUFFER
 1350         STA R.BUFFER
 1360         LDA /INIT.BUFFER
 1370         STA R.BUFFER+1
 1380         JSR BUILD.DOS.CATALOG
 1390         JSR BUILD.PRODOS.CATALOG
 1400  *---WRITE BOOT PROGRAM-----------
 1410         LDA #BOOTER
 1420         STA R.BUFFER
 1430         LDA /BOOTER
 1440         STA R.BUFFER+1
 1450         JSR CLEAR.INIT.BUFFER
 1460         LDA #0
 1470         STA R.TRACK
 1480         STA R.SECTOR
 1490         JMP CALL.RWTS
 1500  *--------------------------------
 1510  FORMAT.35.TRACKS
 1520         LDA #SLOT*16
 1530         STA R.SLOT16
 1540         LDA #DRIVE
 1550         STA R.DRIVE
 1560         LDA #DOS.VOLUME
 1570         STA R.VOLUME
 1580         STA V.VOLUME
 1590         LDA #$04     INIT OPCODE FOR RWTS
 1600  CALL.RWTS.OP.IN.A
 1610         STA R.OPCODE
 1620  CALL.RWTS
 1630         JSR GETIOB
 1640         JSR RWTS
 1650         BCS .1       ERROR
 1660         RTS
 1670  .1     LDY #0       PRINT "ERROR"
 1680  .2     LDA ERMSG,Y
 1690         BEQ .3
 1700         JSR MON.COUT
 1710         INY
 1720         BNE .2       ...ALWAYS
 1730  .3     LDA R.ERROR  GET ERROR CODE
 1740         JSR MON.PRBYTE
 1750         JSR MON.CROUT
 1760         JMP DOS.WARM.START
 1770  *--------------------------------
 1780  ERMSG  .HS 8D87
 1790         .AS -/RWTS ERROR /
 1800         .HS 00
 1810  *--------------------------------
 1820  BUILD.DOS.CATALOG
 1830         JSR CLEAR.INIT.BUFFER
 1840         LDA #17
 1850         STA R.TRACK
 1860         LDA #0
 1870         STA R.SECTOR
 1880  *---BUILD GENERIC VTOC-----------
 1890         LDY #VTOC.SZ-1
 1900  .0     LDA VTOC,Y
 1910         STA INIT.BUFFER,Y
 1920         DEY
 1930         BPL .0
 1940         LDA #DOS.VOLUME
 1950         STA V.VOLUME
 1960  *---PREPARE BITMAP---------------
 1970         LDY #4*34
 1980         LDA #$FF
 1990  .1     CPY #4*17    ARE WE ON CATALOG TRACK?
 2000         BEQ .2
 2010         CPY #4*DOS.LOW.TRACK
 2020         BCC .3            IN PRODOS ARENA
 2030         STA V.BITMAP+1,Y
 2040         STA V.BITMAP,Y
 2050  .2     DEY
 2060         DEY
 2070         DEY
 2080         DEY
 2090         BNE .1
 2100  *---WRITE VTOC ON NEW DISK-------
 2110  .3     LDA #2            RWTS WRITE OPCODE
 2120         JSR CALL.RWTS.OP.IN.A
 2130  *---WRITE CATALOG CHAIN----------
 2140         JSR CLEAR.INIT.BUFFER
 2150         LDA #17      TRACK 17
 2160         LDY #15      START IN SECTOR 15
 2170         STA C.TRACK
 2180  .4     STY R.SECTOR
 2190         DEY
 2200         STY C.SECTOR
 2202         BNE .5
 2203         STY C.TRACK  TERMINATE THE CHAIN
 2210  .5     JSR CALL.RWTS
 2220         LDY C.SECTOR
 2230         BNE .4
 2240         RTS
 2250  *--------------------------------
 2260  VTOC   .HS 04.11.0F.03.00.00.01
 2270         .AS "COMBINATION DOS/PRODOS DATA DISK"
 2280         .HS 7A
 2290         .AS /07-25-85/
 2300         .HS 11.01.00.00.23.10.00.01
 2310  VTOC.SZ .EQ *-VTOC
 2320  *--------------------------------
 2330  BUILD.PRODOS.CATALOG
 2340         LDA #0
 2350         STA R.TRACK
 2360         JSR CLEAR.INIT.BUFFER
 2370  *--------------------------------
 2380         LDA #5            SECTOR 5 = BLOCK 5
 2390         STA R.SECTOR      BACK LINK = 0004
 2400         LDA #4             FWD LINK = 0000
 2410         STA INIT.BUFFER
 2420         JSR CALL.RWTS
 2430  *--------------------------------
 2440         LDA #7            SECTOR 7 = BLOCK 4
 2450         STA R.SECTOR      BACK LINK = 0003
 2460         DEC INIT.BUFFER    FWD LINK = 0005
 2470         LDA #5
 2480         STA INIT.BUFFER+2
 2490         JSR CALL.RWTS
 2500  *--------------------------------
 2510         LDA #9            SECTOR 9 = BLOCK 3
 2520         STA R.SECTOR      BACK LINK = 0002
 2530         DEC INIT.BUFFER    FWD LINK = 0004
 2540         DEC INIT.BUFFER+2
 2550         JSR CALL.RWTS
 2560  *--------------------------------
 2570         LDA #11           SECTOR 11 = BLOCK 2
 2580         STA R.SECTOR      BACK LINK = 0000
 2590         LDY #HDR.SZ-1      FWD LINK = 0003
 2600  .1     LDA HEADER,Y
 2610         STA INIT.BUFFER,Y GET VOLUME HEADER
 2620         DEY
 2630         BPL .1
 2640         LDA #PRODOS.MAX.BLOCKS
 2650         STA INIT.BUFFER+$29
 2660         LDA /PRODOS.MAX.BLOCKS
 2670         STA INIT.BUFFER+$2A
 2680         JSR CALL.RWTS
 2690  *--------------------------------
 2700         LDA #3
 2710         STA R.SECTOR
 2720         JSR CLEAR.INIT.BUFFER
 2730         LDA #$FF
 2740         LDY #DOS.LOW.TRACK-1
 2750  .2     CPY #17      SKIP OVER DOS CATALOG TRACK
 2760         BEQ .3
 2770         STA INIT.BUFFER,Y
 2780  .3     DEY
 2790         BPL .2
 2800         LDA #1       MAKE ONLY BLOCK 7 AVAILABLE
 2810         STA INIT.BUFFER   IN TRACK 0
 2820         JMP CALL.RWTS
 2830  *--------------------------------
 2840  HEADER .DA 0,3,#$F0+VNSZ
 2850  VN     .AS /DATA/
 2860  VNSZ   .EQ *-VN
 2870         .BS 15-VNSZ
 2880         .HS 00.00.00.00.00.00.00.00.00.00.00.00
 2890         .HS 00.00.C3.27.0D.00.00.06.00.08.00
 2900  HDR.SZ .EQ *-HEADER
 2910  *--------------------------------
 2920  CLEAR.INIT.BUFFER
 2930         LDY #0
 2940         TYA
 2950  .1     STA INIT.BUFFER,Y
 2960         INY
 2970         BNE .1
 2980         RTS
 2990  *--------------------------------
 3000  BOOTER
 3010         .PH $800
 3020  BOOTER.PHASE
 3030         .HS 01
 3040         LDA $C088,X  MOTOR OFF
 3050         LDY #0
 3060  .1     LDA MESSAGE,Y
 3070         BEQ .2
 3080         JSR $FDF0
 3090         INY
 3100         BNE .1
 3110  .2     JMP $FF59
 3120  *--------------------------------
 3130  MESSAGE
 3140         .HS 8D8D8787
 3150         .AS -"COMBINATION DOS/PRODOS DATA DISK"
 3160         .HS 8D8D8787
 3170         .AS -/NO DOS IMAGE ON THIS DISK/
 3180         .HS 8D8D00
 3190         .EP
 3200  *--------------------------------
 3210  INIT.BUFFER .BS 256
 3220  *--------------------------------
 3230  V.VOLUME   .EQ INIT.BUFFER-$BB+$C1
 3240  V.BITMAP   .EQ INIT.BUFFER-$BB+$F3
 3250  *--------------------------------
 3260  C.TRACK        .EQ INIT.BUFFER+1
 3270  C.SECTOR       .EQ INIT.BUFFER+2
 3280  *--------------------------------

