Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ; LAST UPDATE: 26.07.2023 savelij
  3.  
  4. ; возвращаемые ошибки
  5. ; 0 - OK
  6. ; 1 - ошибка HDD TIMEOUT
  7. ; 6 - ошибка выполнения команды
  8. ; 7 - обнаружен CD/DVD
  9.  
  10.         switch (HDDTYPE)
  11.         case HDD_NEMO
  12. .NEMO
  13.         case HDD_SMUC
  14. .SMUC
  15.         case HDD_PROFI
  16. .PROFI
  17.         case HDD_TURBO2
  18. .TURBO2
  19.         case HDD_DIVIDE
  20. .DIVIDE
  21.         endcase
  22.  
  23.                 DW .DRIVER_READ_ID
  24.                 DW .DRIVER_READ_SECTORS
  25.                 DW .DRIVER_WRITE_SECTORS
  26.                 DW .DRIVER_CHECK_DEVICE
  27.  
  28. ; Входные параметры общие:
  29. ; HL-адрес загрузки в память
  30. ; BCDE-32-х битный номер сектора
  31. ; A-количество блоков (блок=512 байт)
  32. ; только для многоблочной записи/чтении
  33.  
  34. ; установка регистров HDD
  35. ; на входе:
  36. ;               IYH = команда для HDD
  37. ;               BCDE = LBA номер сектора
  38. ;               A = количество секторов
  39. ;               A' = номер устройства (бит 0 = 0/1 - master/slave)
  40. .SEND_CMD       LD IYL,A
  41.                 PUSH HL
  42.                 PUSH DE
  43.                 LD E,C
  44.                 LD A,B
  45.                 AND 0x0F
  46.                 LD D,A
  47.                 EX AF,AF'
  48.                 OR %10100000
  49.                 OR D
  50.                 LD D,A
  51.  
  52.         switch (HDDTYPE)
  53.  
  54.         case HDD_NEMO
  55.                 LD BC,0xFF << 8 + PN_3F6
  56.                 LD A,%00001010
  57.                 OUT (C),A
  58.                 LD C,PN_1F6
  59.                 LD A,D
  60.                 AND 0xF0
  61.                 OUT (C),A
  62.                 LD C,PN_1F7
  63.  
  64.         case HDD_SMUC
  65.                 LD BC,PS_1F6
  66.                 AND 0xF0
  67.                 CALL .SMUC_WR_PORT
  68.                 LD B,HIGH (PS_1F7)
  69.  
  70.         case HDD_PROFI
  71.                 LD BC,PP_3F6
  72.                 LD A,%00001010
  73.                 OUT (C),A
  74.                 LD BC,PP_1F6W
  75.                 LD A,D
  76.                 AND 0xF0
  77.                 OUT (C),A
  78.                 LD BC,PP_1F7R
  79.  
  80.         case HDD_TURBO2
  81.                 LD BC,PA_1F6
  82.                 AND 0xF0
  83.                 OUT (C),A
  84.                 LD C,LOW (PA_1F7)
  85.  
  86.         case HDD_DIVIDE
  87.                 LD BC,0xFF << 8 + PV_3F6
  88.                 LD A,%00001010
  89.                 OUT (C),A
  90.                 LD C,PV_1F6
  91.                 LD A,D
  92.                 AND 0xF0
  93.                 OUT (C),A
  94.                 LD C,PV_1F7
  95.         endcase
  96.  
  97.                 LD HL,HDD_TIME_OUT
  98. .SEND_WAIT      DEC HL
  99.                 LD A,H
  100.                 OR L
  101.                 JR Z,.SEND_ERROR1
  102.  
  103.         switch (HDDTYPE)
  104.  
  105.         case HDD_NEMO
  106.                 IN A,(C)
  107.  
  108.         case HDD_SMUC
  109.                 CALL .SMUC_RD_PORT
  110.  
  111.         case HDD_PROFI
  112.                 IN A,(C)
  113.  
  114.         case HDD_TURBO2
  115.                 IN A,(C)
  116.  
  117.         case HDD_DIVIDE
  118.                 IN A,(C)
  119.         endcase
  120.                 AND A
  121.                 JR Z,.SEND_ERROR7
  122.                 BIT 7,A
  123.                 JR NZ,.SEND_WAIT
  124.                 BIT 6,A
  125.                 JR Z,.SEND_WAIT
  126.  
  127.         switch (HDDTYPE)
  128.  
  129.         case HDD_NEMO
  130.                 LD C,PN_1F6
  131.                 OUT (C),D
  132.                 LD C,PN_1F5
  133.                 OUT (C),E
  134.                 POP DE
  135.                 LD C,PN_1F4
  136.                 OUT (C),D
  137.                 LD C,PN_1F3
  138.                 OUT (C),E
  139.                 LD C,PN_1F2
  140.                 LD A,IYL
  141.                 OUT (C),A
  142.                 LD C,PN_1F1
  143.                 XOR A
  144.                 OUT (C),A
  145.                 LD C,PN_1F7
  146.                 LD A,IYH
  147.                 OUT (C),A
  148.  
  149.         case HDD_SMUC
  150.                 LD B,HIGH (PS_1F6)
  151.                 LD A,D
  152.                 CALL .SMUC_WR_PORT
  153.                 LD B,HIGH (PS_1F5)
  154.                 LD A,E
  155.                 CALL .SMUC_WR_PORT
  156.                 POP DE
  157.                 LD B,HIGH (PS_1F4)
  158.                 LD A,D
  159.                 CALL .SMUC_WR_PORT
  160.                 LD B,HIGH (PS_1F3)
  161.                 LD A,E
  162.                 CALL .SMUC_WR_PORT
  163.                 LD B,HIGH (PS_1F2)
  164.                 LD A,IYL
  165.                 CALL .SMUC_WR_PORT
  166.                 LD B,HIGH (PS_1F1)
  167.                 XOR A
  168.                 CALL .SMUC_WR_PORT
  169.                 LD B,HIGH (PS_1F7)
  170.                 LD A,IYH
  171.                 CALL .SMUC_WR_PORT
  172.  
  173.         case HDD_PROFI
  174.                 LD BC,PP_1F6W
  175.                 OUT (C),D
  176.                 LD BC,PP_1F5W
  177.                 OUT (C),E
  178.                 POP DE
  179.                 LD BC,PP_1F4W
  180.                 OUT (C),D
  181.                 LD BC,PP_1F3W
  182.                 OUT (C),E
  183.                 LD BC,PP_1F2W
  184.                 LD A,IYL
  185.                 OUT (C),A
  186.                 LD BC,PP_1F1W
  187.                 XOR A
  188.                 OUT (C),A
  189.                 LD BC,PP_1F7W
  190.                 LD A,IYH
  191.                 OUT (C),A
  192.  
  193.         case HDD_TURBO2
  194.                 LD C,LOW (PA_1F6)
  195.                 OUT (C),D
  196.                 LD C,LOW (PA_1F5)
  197.                 OUT (C),E
  198.                 POP DE
  199.                 LD C,LOW (PA_1F4)
  200.                 OUT (C),D
  201.                 LD C,LOW (PA_1F3)
  202.                 OUT (C),E
  203.                 LD C,LOW (PA_1F2)
  204.                 LD A,IYL
  205.                 OUT (C),A
  206.                 LD C,LOW (PA_1F1)
  207.                 XOR A
  208.                 OUT (C),A
  209.                 LD C,LOW (PA_1F7)
  210.                 LD A,IYH
  211.                 OUT (C),A
  212.  
  213.         case HDD_DIVIDE
  214.                 LD C,PV_1F6
  215.                 OUT (C),D
  216.                 LD C,PV_1F5
  217.                 OUT (C),E
  218.                 POP DE
  219.                 LD C,PV_1F4
  220.                 OUT (C),D
  221.                 LD C,PV_1F3
  222.                 OUT (C),E
  223.                 LD C,PV_1F2
  224.                 LD A,IYL
  225.                 OUT (C),A
  226.                 LD C,PV_1F1
  227.                 XOR A
  228.                 OUT (C),A
  229.                 LD C,PV_1F7
  230.                 LD A,IYH
  231.                 OUT (C),A
  232.         endcase
  233.                 POP HL
  234. .DRIVER_CHECK_DEVICE
  235.                 XOR A
  236.                 RET
  237.  
  238. .SEND_ERROR7    LD A,7          ;обнаружен CD/DVD
  239.                 JR .SEND_ERROR
  240.  
  241. .SEND_ERROR1    LD A,1          ;ошибка HDD TIMEOUT
  242. .SEND_ERROR     POP HL
  243.                 POP HL
  244.                 RET
  245.  
  246. ; чтение сектора идентификации винта
  247. ; на входе:
  248. ;               HL = адрес буфера для чтения
  249. ;               A' = номер устройства ( бит 4 = 0/1 - master/slave)
  250. ;                                       бит 6 = 0/1 - CHS/LBA
  251. .DRIVER_READ_ID
  252.         switch (HDDTYPE)
  253.  
  254.         case HDD_NEMO
  255.         case HDD_SMUC
  256.                 CALL .FIND_SMUC
  257.  
  258.         case HDD_PROFI
  259.                 CALL .PROFI_CONF_SET
  260.  
  261.         case HDD_TURBO2
  262.                 CALL .ATM_CPM_ON
  263.  
  264.         case HDD_DIVIDE
  265.         endcase
  266.                 PUSH IY
  267.                 PUSH HL
  268.                 PUSH DE
  269.                 PUSH BC
  270.                 LD IYH,0xEC
  271.                 CALL .SEND_CMD
  272.                 AND A
  273.                 JR NZ,.READID_ERROR
  274.                 LD DE,HDD_TIME_OUT
  275. .READID_WAIT    DEC DE
  276.                 LD A,D
  277.                 OR E
  278.                 JR Z,.READID_ERROR1
  279.  
  280.         switch (HDDTYPE)
  281.  
  282.         case HDD_NEMO
  283.                 LD BC,0xFF << 8 + PN_1F7
  284.                 IN A,(C)
  285.  
  286.         case HDD_SMUC
  287.                 LD BC,PS_1F7
  288.                 CALL .SMUC_RD_PORT
  289.  
  290.         case HDD_PROFI
  291.                 LD BC,PP_1F7R
  292.                 IN A,(C)
  293.  
  294.         case HDD_TURBO2
  295.                 LD BC,PA_1F7
  296.                 IN A,(C)
  297.  
  298.         case HDD_DIVIDE
  299.                 LD BC,0xFF << 8 + PV_1F7
  300.                 IN A,(C)
  301.         endcase
  302.                 BIT 7,A
  303.                 JR NZ,.READID_WAIT
  304.                 BIT 1,A
  305.                 JR NZ,.READID_ERROR6
  306.                 BIT 3,A
  307.                 JR Z,.READID_WAIT
  308.                 CALL .READSEC
  309.                 XOR A
  310.                 JR .READID_ERROR
  311.  
  312. .READID_ERROR6  LD A,6                          ; ошибка выполнения команды
  313.                 JR .READID_ERROR
  314.  
  315. .READID_ERROR1  LD A,1
  316. .READID_ERROR   POP BC
  317.                 POP DE
  318.                 POP HL
  319.                 POP IY
  320.  
  321.         switch (HDDTYPE)
  322.  
  323.         case HDD_NEMO
  324.                 RET
  325.  
  326.         case HDD_SMUC
  327.                 RET
  328.  
  329.         case HDD_PROFI
  330. .PROFI_CONF_RES PUSH BC
  331.                 PUSH AF
  332.                 LD BC,0xDFFD
  333.                 XOR A
  334.                 OUT (C),A
  335.                 POP AF
  336.                 POP BC
  337.                 RET
  338.  
  339.         case HDD_TURBO2
  340. .ATM_CPM_OFF    PUSH BC
  341.                 PUSH AF
  342.                 LD BC,.ATMCPMOFF1
  343.                 PUSH BC
  344.                 LD BC,0x2A53
  345.                 PUSH BC
  346.                 LD BC,0xFF77
  347.                 LD A,%10101011
  348.                 JP 0x3D2F
  349.  
  350.         case HDD_DIVIDE
  351.                 RET
  352.         endcase
  353.  
  354. ; чтение секторов HDD
  355. ; на входе:
  356. ;               HL = адрес чтения
  357. ;               BCDE = номер сектора
  358. ;               A = количество секторов
  359. ;               A' = номер устройства (бит 0 = 0/1 - master/slave)
  360. .DRIVER_READ_SECTORS
  361.         switch (HDDTYPE)
  362.         case HDD_NEMO
  363.         case HDD_SMUC
  364.  
  365.         case HDD_PROFI
  366.                 CALL .PROFI_CONF_SET
  367.  
  368.         case HDD_TURBO2
  369.                 CALL .ATM_CPM_ON
  370.  
  371.         case HDD_DIVIDE
  372.         endcase
  373.                 PUSH IY
  374.                 PUSH HL
  375.                 PUSH DE
  376.                 PUSH BC
  377.                 LD IYL,A
  378.                 LD IYH,0x20
  379.                 CALL .SEND_CMD
  380.                 AND A
  381.                 JR NZ,.READID_ERROR
  382. .READ_WAIT1     LD DE,HDD_TIME_OUT
  383. .READ_WAIT      DEC DE
  384.                 LD A,D
  385.                 OR E
  386.                 JR Z,.READID_ERROR1
  387.  
  388.         switch (HDDTYPE)
  389.  
  390.         case HDD_NEMO
  391.                 LD BC,0xFF << 8 + PN_1F7
  392.                 IN A,(C)
  393.  
  394.         case HDD_SMUC
  395.                 LD BC,PS_1F7
  396.                 CALL .SMUC_RD_PORT
  397.  
  398.         case HDD_PROFI
  399.                 LD BC,PP_1F7R
  400.                 IN A,(C)
  401.  
  402.         case HDD_TURBO2
  403.                 LD BC,PA_1F7
  404.                 IN A,(C)
  405.  
  406.         case HDD_DIVIDE
  407.                 LD BC,0xFF << 8 + PV_1F7
  408.                 IN A,(C)
  409.         endcase
  410.                 BIT 7,A
  411.                 JR NZ,.READ_WAIT
  412.                 BIT 1,A
  413.                 JR NZ,.READID_ERROR6
  414.                 BIT 3,A
  415.                 JR Z,.READ_WAIT
  416.                 CALL .READSEC
  417.                 DEC IYL
  418.                 JR NZ,.READ_WAIT1
  419.                 XOR A
  420.                 JR .READID_ERROR
  421.  
  422. ; запись секторов HDD
  423. ; на входе:
  424. ;               HL = адрес записи
  425. ;               BCDE = номер сектора
  426. ;               A = количество секторов
  427. ;               A' = номер устройства (бит 0 = 0/1 - master/slave)
  428. .DRIVER_WRITE_SECTORS
  429.         switch (HDDTYPE)
  430.         case HDD_NEMO
  431.         case HDD_SMUC
  432.         case HDD_PROFI
  433.                 CALL .PROFI_CONF_SET
  434.  
  435.         case HDD_TURBO2
  436.                 CALL .ATM_CPM_ON
  437.  
  438.         case HDD_DIVIDE
  439.         endcase
  440.                 PUSH IY
  441.                 PUSH HL
  442.                 PUSH DE
  443.                 PUSH BC
  444.                 LD IYL,A
  445.                 LD IYH,0x30
  446.                 CALL .SEND_CMD
  447.                 AND A
  448.                 JR NZ,.READID_ERROR
  449. .WRITE_WAIT1    LD DE,HDD_TIME_OUT
  450. .WRITE_WAIT     DEC DE
  451.                 LD A,D
  452.                 OR E
  453.                 JR Z,.READID_ERROR1
  454.  
  455.         switch (HDDTYPE)
  456.  
  457.         case HDD_NEMO
  458.                 LD BC,0xFF << 8 + PN_1F7
  459.                 IN A,(C)
  460.  
  461.         case HDD_SMUC
  462.                 LD BC,PS_1F7
  463.                 CALL .SMUC_RD_PORT
  464.  
  465.         case HDD_PROFI
  466.                 LD BC,PP_1F7R
  467.                 IN A,(C)
  468.  
  469.         case HDD_TURBO2
  470.                 LD BC,PA_1F7
  471.                 IN A,(C)
  472.  
  473.         case HDD_DIVIDE
  474.                 LD BC,0xFF << 8 + PV_1F7
  475.                 IN A,(C)
  476.         endcase
  477.                 BIT 7,A
  478.                 JR NZ,.WRITE_WAIT
  479.                 BIT 1,A
  480.                 JR NZ,.READID_ERROR6
  481.                 BIT 3,A
  482.                 JR Z,.WRITE_WAIT
  483.                 CALL .WRITSEC
  484.                 DEC IYL
  485.                 JR NZ,.WRITE_WAIT1
  486.                 XOR A
  487.                 JP .READID_ERROR
  488.  
  489. ; read sector (512 bytes)
  490.         switch (HDDTYPE)
  491.  
  492.         case HDD_NEMO
  493. .READSEC        LD A,0x40
  494.                 LD C,PN_1F0
  495. .READSC1
  496.         REPT 4
  497.                 IN E,(C)
  498.                 INC C
  499.                 IN D,(C)
  500.                 DEC C
  501.                 LD (HL),E
  502.                 INC HL
  503.                 LD (HL),D
  504.                 INC HL
  505.         ENDM
  506.                 DEC A
  507.                 JR NZ,.READSC1
  508.                 RET
  509.  
  510.         case HDD_SMUC
  511. .READSEC        LD A,0x40
  512.                 LD DE,PS_PORT_RW
  513. .READSC1        EX AF,AF'
  514.         REPT 4
  515.                 LD B,D
  516.                 CALL .SMUC_RD_PORT
  517.                 LD (HL),A
  518.                 INC HL
  519.                 LD B,E
  520.                 CALL .SMUC_RD_PORT
  521.                 LD (HL),A
  522.                 INC HL
  523.         ENDM
  524.                 EX AF,AF'
  525.                 DEC A
  526.                 JR NZ,.READSC1
  527.                 RET
  528.  
  529.         case HDD_PROFI
  530. .READSEC        LD A,0x40
  531. .READSC1
  532.         REPT 4
  533.                 LD BC,PP_1F0R
  534.                 IN E,(C)
  535.                 LD BC,PP_HIR
  536.                 IN D,(C)
  537.                 LD (HL),E
  538.                 INC HL
  539.                 LD (HL),D
  540.                 INC HL
  541.         ENDM
  542.                 DEC A
  543.                 JR NZ,.READSC1
  544.                 RET
  545.  
  546.         case HDD_TURBO2
  547. .READSEC        LD BC,PA_1F0
  548.                 INC B
  549.                 INIR
  550.                 INIR
  551.                 RET
  552.  
  553.         case HDD_DIVIDE
  554. .READSEC        LD A,0x40
  555.                 LD C,PV_1F0
  556. .READSC1
  557.         REPT 8
  558.                 INI
  559.                 INC B
  560.         ENDM
  561.                 DEC A
  562.                 JR NZ,.READSC1
  563.                 RET
  564.         endcase
  565.  
  566. ; save sector (512 bytes)
  567.         switch (HDDTYPE)
  568.  
  569.         case HDD_NEMO
  570. .WRITSEC        EXX
  571.                 PUSH HL
  572.                 LD HL,0
  573.                 ADD HL,SP
  574.                 EXX
  575.                 LD SP,HL
  576.                 LD A,0x40
  577.                 LD HL,PRTN_RW
  578. .WR_SEC1
  579.         REPT 4
  580.                 POP DE
  581.                 LD C,L
  582.                 OUT (C),D
  583.                 LD C,H
  584.                 OUT (C),E
  585.         ENDM
  586.                 DEC A
  587.                 JR NZ,.WR_SEC1
  588.                 LD HL,0
  589.                 ADD HL,SP
  590.                 EXX
  591.                 LD SP,HL
  592.                 POP HL
  593.                 EXX
  594.                 RET
  595.  
  596.         case HDD_SMUC
  597. .WRITSEC        LD DE,PS_PORT_RW
  598.                 LD A,0x40
  599. .WR_SEC1        PUSH AF
  600.         REPT 4
  601.                 LD A,(HL)
  602.                 INC HL
  603.                 EX AF,AF'
  604.                 LD A,(HL)
  605.                 INC HL
  606.                 LD B,E
  607.                 CALL .SMUC_WR_PORT
  608.                 EX AF,AF'
  609.                 LD B,D
  610.                 CALL .SMUC_WR_PORT
  611.         ENDM
  612.                 POP AF
  613.                 DEC A
  614.                 JR NZ,.WR_SEC1
  615.                 RET
  616.  
  617.         case HDD_PROFI
  618. .WRITSEC        EXX
  619.                 PUSH HL
  620.                 LD HL,0
  621.                 ADD HL,SP
  622.                 EXX
  623.                 LD SP,HL
  624.                 LD A,0x40
  625. .WR_SEC1
  626.         REPT 4
  627.                 POP DE
  628.                 LD BC,PP_HIW
  629.                 OUT (C),D
  630.                 LD BC,PP_1F0W
  631.                 OUT (C),E
  632.         ENDM
  633.                 DEC A
  634.                 JR NZ,.WR_SEC1
  635.                 LD HL,0
  636.                 ADD HL,SP
  637.                 EXX
  638.                 LD SP,HL
  639.                 POP HL
  640.                 EXX
  641.                 RET
  642.  
  643.         case HDD_TURBO2
  644. .WRITSEC        EXX
  645.                 PUSH HL
  646.                 LD HL,0
  647.                 ADD HL,SP
  648.                 EXX
  649.                 LD SP,HL
  650.                 LD A,0x40
  651.                 LD BC,PA_1F0
  652. .WR_SEC1
  653.         REPT 4
  654.                 POP DE
  655.                 OUT (C),D
  656.                 DEC B
  657.                 OUT (C),E
  658.                 INC B
  659.         ENDM
  660.                 DEC A
  661.                 JR NZ,.WR_SEC1
  662.                 LD HL,0
  663.                 ADD HL,SP
  664.                 EXX
  665.                 LD SP,HL
  666.                 POP HL
  667.                 EXX
  668.                 RET
  669.  
  670.         case HDD_DIVIDE
  671. .WRITSEC        LD A,0x40
  672.                 LD C,PV_1F0
  673. .WR_SEC1
  674.         REPT 8
  675.                 OUTI
  676.                 INC B
  677.         ENDM
  678.                 DEC A
  679.                 JR NZ,.WR_SEC1
  680.                 RET
  681.         endcase
  682.  
  683.         switch (HDDTYPE)
  684.         case HDD_NEMO
  685.         case HDD_SMUC
  686. .SMUC_RD_PORT   PUSH HL
  687.                 LD HL,0x3FF3
  688.                 EX (SP),HL
  689.                 JP 0x3D2F
  690.  
  691. .LDIRRET        PUSH HL
  692.                 LD HL,0x180D
  693.                 EX (SP),HL
  694.                 JP 0x3D2F
  695.  
  696. .CPOUTIN        OUT (C),A
  697.                 RET
  698.                 IN A,(C)
  699.                 RET
  700.  
  701. .FIND_SMUC      PUSH HL
  702.                 EX DE,HL
  703.                 LD HL,0x3FF0
  704.                 LD BC,6
  705.                 CALL .LDIRRET
  706.                 POP HL
  707.                 LD B,6
  708.                 LD DE,.CPOUTIN
  709. .FINDSMUC1      LD A,(DE)
  710.                 CP (HL)
  711.                 INC HL
  712.                 INC DE
  713.                 JR NZ,.FINDSMUC2
  714.                 DJNZ .FINDSMUC1
  715.                 LD BC,0x5FBA;SMUCVER
  716.                 DEC SP
  717.                 DEC SP
  718.                 POP HL
  719.                 CALL .SMUC_RD_PORT
  720.                 INC A
  721.                 JR NZ,.FINDSMUC3
  722. .FINDSMUC2      POP HL
  723.                 LD A,8          ;SMUC не найден
  724.                 RET
  725.  
  726. .FINDSMUC3      LD BC,0xFFBA;SMUCSYS
  727.                 LD A,0x77
  728.  
  729. .SMUC_WR_PORT   PUSH HL
  730.                 LD HL,0x3FF0
  731.                 EX (SP),HL
  732.                 JP 0x3D2F
  733.  
  734.         case HDD_PROFI
  735. .PROFI_CONF_SET PUSH BC
  736.                 PUSH AF
  737.                 LD BC,0xDFFD
  738.                 LD A,0x20
  739.                 OUT (C),A
  740.                 POP AF
  741.                 POP BC
  742.                 RET
  743.  
  744.         case HDD_TURBO2
  745. .ATMCPMOFF1     POP AF
  746.                 POP BC
  747.                 RET
  748.  
  749. .ATM_CPM_ON     PUSH BC
  750.                 PUSH AF
  751.                 LD BC,.ATMCPMOFF1
  752.                 PUSH BC
  753.                 LD BC,0x2A53
  754.                 PUSH BC
  755.                 LD BC,0x4177
  756.                 LD A,%10101011
  757.                 JP 0x3D2F
  758.  
  759.         case HDD_DIVIDE
  760.         endcase
  761.  
  762. .END_DRV
  763.