Subversion Repositories pentevo

Rev

Rev 627 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ;LAST UPDATE: 31.12.2016 savelij
  3.  
  4. ;        MAIN   "DOSI*",0XC6
  5. ;        ORG    0X321C
  6. SETERRAD
  7. ;call из 0X246
  8. ;вместо 0X21D
  9.         LD      A,0X0D
  10.         LD      (0X5D20),A
  11.         JP      0X21D
  12. POSIT
  13. ;call из 0X20CC
  14. ;вместо 0X3E44
  15.         PUSH    HL
  16.         PUSH    BC
  17.         PUSH    AF
  18.         PUSH    DE
  19.         LD      A,0XED
  20.         LD      (0X5C86),A
  21.         LD      A,0X0C
  22.         LD      (0X5C8A),A
  23.         LD      A,E
  24.          JR     LL323d
  25. LL3235
  26.         LD      A,(HL)
  27.         CP      0XFF
  28.         RET     Z
  29.         RST     0X10
  30.         INC     HL
  31.         JR      LL3235
  32. LL323d
  33.         LD      B,"0"
  34. LL323f  SUB     10
  35.          JR     C,LL3246
  36.         INC     B
  37.          JR     LL323f
  38. LL3246
  39.         PUSH    AF
  40.         LD      A,B
  41.         RST     0X10
  42.         POP     AF
  43.                 ADD A,0X30+10;        ADD       A,"0"+10
  44.         RST     0X10
  45.         POP     DE
  46.         POP     AF
  47.         POP     BC
  48.         POP     HL
  49.         EI     
  50.         JP      0X3E44 ;позиционирование
  51.  
  52.        ;DS 3,0XFF
  53.  
  54. TFormTS
  55.         DB      "Format track       Side",0
  56.  
  57.        ;DS 3,0XFF
  58.  
  59. TFile
  60.         DB      0X16,0,0
  61.         DB      "File ",34
  62.         DB      0X13,1,0XFF
  63. TExists
  64.         DB      0X13,0
  65.         DB      34,0XD
  66.        ;DB "Exists... Over write?(Y/N)"
  67.         DB      "Exists!Overwrite?(Y/N/Add)"
  68.         DB      0XFF
  69. TComplete
  70.         DB      "Complete"
  71.         DB      0XD
  72.         DB      "Name:",0
  73. TFORMAT
  74.         DB      "FORMAT:   1 - Normal   "
  75.         DB      0XD,0X17,0XA
  76.         DB      " 2 - Turbo"
  77.         DB      0XD,0X17,0XA
  78.         DB      " 3 - Fast turbo"
  79.         DB      0
  80.  
  81.        ;DS 6,0XFF
  82. CHECKON
  83. ;call из 0X20C1
  84. ;вместо XOR A:INC HL:LD (HL),A ;0X5CD8
  85.         INC     HL
  86.         LD      A,(0X5CE8)
  87.         LD      (HL),A
  88.         XOR     A
  89.         RET    
  90. PRHD1
  91. ;call из 0X20DE
  92. ;вместо 0X330F
  93.         PUSH    AF
  94.         LD      A,"1"
  95.         JR      LL32f9
  96. PRHD0
  97. ;call из 0X20D2
  98. ;вместо 0X32DD
  99.         PUSH    AF
  100.         LD      A,"0"
  101. LL32f9
  102.         PUSH    AF
  103.         LD      A,0XF8
  104.         LD      (0X5C86),A
  105.         LD      A,0X17
  106.         LD      (0X5C8A),A
  107.         POP     AF
  108.         RST     0X10
  109.         POP     AF
  110.         JP      0X1FFD ;форматирование дорожки
  111. LL330a
  112. ;кнопка для Overwrite
  113.         CALL    0X1D9F ;очистка низа экрана
  114.         LD      HL,TFile
  115.         CALL    LL3235
  116.         CALL    LL3329
  117.         LD      HL,TExists
  118.         CALL    LL3235
  119.         LD      HL,0X4000
  120. LL331f  DEC     HL
  121.         LD      A,H
  122.         OR      L
  123.         JR      NZ,LL331f
  124.         CALL    0X1052 ;ввод клавиши с ожиданием
  125.         JR      LL3338
  126. LL3329
  127.         LD      A,(0X5CF6)
  128.         ADD     A,"A"
  129.         RST     0X10
  130.         LD      A,":"
  131.         RST     0X10
  132.         LD      HL,0X5CDD ;адрес имени
  133.         JP      0X2938 ;печать имени с расширением
  134. LL3338
  135.         PUSH    AF
  136.         CALL    0X1D9F ;очистка низа экрана
  137.         POP     AF
  138.         CP      "Y"
  139.         RET     Z
  140.         CP      "A";0XD
  141.         RET    
  142. LL3343
  143. ;если при записи есть такой файл
  144. ;из 1AC1, SVNASTRDSK
  145.         CALL    0X165D ;перенос описателя из буфера в память
  146.         LD      HL,0X5CE5
  147.         SET     7,(HL) ;включает overwrite=ON
  148.         RET    
  149. FORMDISK
  150. ;call из 0X1F1B
  151. ;вместо 0X20BD
  152.         CALL    0X1D9F ;очистка низа экрана
  153.         LD      HL,TFormTS
  154.         RST     0X18
  155.         CALL    0X20BD ;форматирование диска
  156.         CALL    0X1D9F ;очистка низа экрана
  157.         LD      HL,TComplete
  158.         RST     0X18
  159.         RET    
  160. TPressR
  161. ;для ASKREPFORM
  162.         DB      "Press R to repeat";,"."+0X80,0
  163.                 DC "."
  164.                 DB 0
  165. SAVEFIL
  166. ;jp из 0X290C
  167. ;еще jr ниже
  168. ;вместо 0X1B53
  169.         CALL    0X1D9F ;очистка низа экрана
  170.         CALL    0X3E11 ;выборка типа дисковода
  171.          RET   
  172. SELFORMAT
  173. ;call из 0X1EDD
  174. ;вместо 0X3200
  175.         CALL    0X1D9F ;очистка низа экрана
  176.         LD      HL,TFORMAT
  177.         RST     0X18
  178. LL337f  CALL    0X1052 ;ввод клавиши с ожиданием
  179.         CP      0X11
  180.         JR      Z,LL3395
  181.          CP     0X12
  182.         JR      Z,LL33a1
  183.          CP     0X13
  184.         JR      Z,LL33a6
  185.          CP     0
  186.         JP      Z,0X01D3 ;п/п завершения
  187.          JR     LL337f
  188. LL3395
  189.         LD      HL,0X1FB9 ;табл.секторов SLOW диска
  190. LL3398  XOR     A
  191. LL3399  LD      (0X5CE8),A
  192.         LD      (0X5CE6),HL
  193.         JR      SAVEFIL
  194. LL33a1
  195.         LD      HL,LL33ad ;табл.сект.FAST
  196.         JR      LL3398
  197. LL33a6
  198.         LD      A,0X01
  199.         LD      HL,LL33ad ;табл.сект.FAST
  200.         JR      LL3399
  201. LL33ad
  202. ;надо 0X325A
  203.         DB      1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1
  204. SUB14
  205.         LD      A,L
  206.         SUB     0X0E
  207.         LD      L,A
  208.         RET     NC
  209.         DEC     H
  210.         RET    
  211.  
  212.        ;DS 9,0XFF
  213.  
  214. PARAMZAG
  215. ;call из 0X18AB
  216. ;вместо a,(0X5CD6)
  217. ;якобы фикс PEEK, но заглючивает Wolfed
  218.         LD      A,(0X5CE5)
  219.         CP      "B"
  220.         JR      Z,LL33e2
  221.         CP      "D"
  222.         JR      Z,LL33e2
  223.         CP      "#"
  224.         JR      Z,LL33e2
  225.         LD      A,"C"
  226.        ;LD (0X5CE5),A ;зачем???
  227. LL33e2  LD      A,(0X5CD6)
  228.         RET    
  229. SVNASTRDSK
  230.         CALL    0X1CF0 ;поиск файла
  231.         CALL    Z,LL3343 ;перенос опис.из буф.в пам.и вкл.Overwr=ON
  232. LL33ec  CALL    0X0405 ;настр.на диск.Меняет перем-ю с типом диск-да
  233.         CALL    0X1AC4 ;проверка =128 файлов
  234.         JP      0X1B53 ;запись файла и инфы о нем
  235. SAVER
  236. ;call из 0X1B53
  237. ;было 0X1B59
  238.         LD      HL,0X5CE5 ;тип файла + "file exist" flag
  239.         BIT     7,(HL)
  240.         RES     7,(HL)
  241.         ;JR NZ,LL33ff
  242.         JP      Z,0X1B59
  243. LL33ff
  244.         CALL    LL330a ;Y/N
  245.         JP      NZ,0X01D3 ;п/п завершения
  246.        CP       "A"
  247.        JP       Z,0X1B59
  248.         LD      DE,(0X5CD9)
  249.        DEC      DE
  250.        INC      D
  251.        ;LD A,E
  252.        ;OR A
  253.        ;JR Z,$+3
  254.        ;INC D
  255.         LD      A,(0X5CEA)
  256.         CP      D
  257.         JR      Z,LL341b
  258.         CALL    0X2926 ;стирание файла
  259.         JR      LL33ec
  260.  
  261. LL341b  LD      B,D
  262.         LD      HL,(0X5C59)
  263.         LD      (HL),0XAA
  264.         INC     HL
  265.         LD      DE,(0X5CD1)
  266.         LD      (HL),E
  267.         INC     HL
  268.         LD      (HL),D
  269.         LD      C,0X06
  270.         LD      HL,(0X5CDB)
  271.         LD      (0X5CE8),HL
  272.         LD      HL,(0X5CD7)
  273.         LD      (0X5CE6),HL
  274.         LD      DE,(0X5CEB)
  275.         CALL    0X1E4D
  276.         LD      BC,(0X5D1E)
  277.         CALL    0X1BBF
  278.          CALL   0X1665
  279.          RET   
  280. OBROSH
  281. ;jp из 0X3D17
  282. ;вместо 0X2F69
  283.         EI     
  284.         JP      0X2F69
  285.  
  286.                 IF 0;       IFN 0
  287. bootkus2
  288. ;       DISP    bootst2
  289.          NOP    ;посл.байт DEC (IX)
  290.          LD     A,(IX+0X00)
  291.         CP      0XFF
  292.         JR      NZ,LL345b
  293.         LD      A,(0XF86F)
  294.          LD     (IX+0X00),A
  295. LL345b  CALL    0XF7FA
  296.         CALL    0XF816
  297.         JP      0XF646
  298.  
  299.         CALL    0XF870
  300.         CALL    0XF826
  301.          INC    (IX+0X00)
  302.         LD      A,(0XF86F)
  303.         INC     A
  304.          CP     (IX+0X00)
  305.          LD     A,(IX+0X00)
  306.         JR      NZ,LL347d
  307.         XOR     A
  308.          LD     (IX+0X00),A
  309. LL347d  CALL    0XF7FA
  310.         CALL    0XF816
  311.         JP      0XF646
  312.  
  313.         CALL    0XF870
  314.         CALL    0XF826
  315.          DEC    (IX+0X00)
  316.          DEC    (IX+0X00)
  317.          DEC    (IX+0X00)
  318.          BIT    7,(IX+0X00)
  319.          LD     A,(IX+0X00)
  320.         JR      Z,LL34b3
  321. LL349e  LD      B,0X03
  322.         ADD     A,B
  323.         LD      B,A
  324.         PUSH    BC
  325.         LD      A,(0XF86F)
  326.         SUB     B
  327.         JR      C,LL34ac
  328.         POP     AF
  329.         JR      LL349e
  330. LL34ac
  331.         POP     AF
  332.          DEC    A
  333.          DEC    A
  334.          DEC    A
  335.         LD      (IX+0X00),A
  336. LL34b3  CALL    0XF7FA
  337.         CALL    0XF816
  338.         JP      0XF646
  339.  
  340.         CALL    0XF870
  341.         CALL    0XF826
  342.          INC    (IX+0X00)
  343.          INC    (IX+0X00)
  344.          INC    (IX+0X00)
  345.         LD      A,(0XF86F)
  346.          SBC    A,(IX+0X00)
  347.          LD     A,(IX+0X00)
  348.         JR      NC,LL34e1
  349.         LD      B,0X03
  350. LL34d8  SUB     B
  351.         JR      NC,LL34d8
  352.          INC    A
  353.          INC    A
  354.          INC    A
  355.         LD      (IX+0X00),A
  356. LL34e1  CALL    0XF7FA
  357.         CALL    0XF816
  358.         JP      0XF646
  359.  
  360.         CALL    0X0D6B
  361.         LD      A,0X03
  362.         CALL    0XF8CB
  363.         JP      0XF556
  364.  
  365.         LD      BC,0XFFFD
  366.         LD      A,0X07
  367.         OUT     (C),A
  368.         LD      B,0XBF
  369.         LD      A,0XFF
  370.         OUT     (C),A ;глушит AY
  371.         CALL    0XF870
  372.         LD      A,0X07
  373.         LD      (0X5C48),A
  374.         LD      (0X5C8D),A
  375.         CPL    
  376.         LD      (0X5D3B),A
  377.         LD      HL,0X3C00
  378.         LD      (0X5C36),HL
  379.         LD      L,(IX+0X00)
  380.          LD     H,0X00
  381.         ADD     HL,HL
  382.         ADD     HL,HL
  383.         ADD     HL,HL
  384.         LD      DE,0XA000
  385.         ADD     HL,DE
  386.         LD      DE,0XF7F0
  387.         LD      BC,0X0008
  388.         LDIR   
  389.         LD      HL,(0XF632)
  390.         LD      (0X5C3D),HL
  391.         LD      HL,0XF7EC
  392.         LD      (0X5C5D),HL
  393.         CALL    0X0D6B
  394.         DI     
  395.         POP     HL
  396.         EXX    
  397.         POP     BC
  398.         POP     DE
  399.         POP     HL
  400.         POP     AF
  401.         CALL    0X3D03
  402.         JP      PE,0XF73A
  403.         LD      (0X6F62),HL
  404.         LD      L,A
  405.         LD      (HL),H
  406.          JR     NZ,LL356e
  407.          JR     NZ,LL3570
  408.          LD     (0XD50D),HL
  409.         INC     A
  410.         LD      HL,0X5802
  411.         LD      DE,0X000A
  412. LL355a  DEC     A
  413.         JR      Z,LL356c
  414.         ADD     HL,DE
  415.         DEC     A
  416.         JR      Z,LL356c
  417.         ADD     HL,DE
  418.         DEC     A
  419.         JR      Z,LL356c
  420.         INC     DE
  421.         INC     DE
  422.         ADD     HL,DE
  423.         DEC     DE
  424.         DEC     DE
  425.         JR      LL355a
  426. LL356c
  427.         POP     DE
  428.         RET    
  429. LL356e
  430.         PUSH    HL
  431.         EXX    
  432. LL3570  POP     HL
  433.         LD      A,0X70
  434.         PUSH    HL
  435.         POP     DE
  436.         INC     DE
  437.         LD      BC,0X0007
  438.         LD      (HL),A
  439.         LDIR   
  440.         EXX    
  441.         RET    
  442.  
  443.         PUSH    HL
  444.         EXX    
  445.         POP     HL
  446.         LD      A,0X42
  447.         PUSH    HL
  448.         POP     DE
  449.         INC     DE
  450.         LD      BC,0X0007
  451.         LD      (HL),A
  452.         LDIR   
  453.         EXX    
  454.         RET    
  455.  
  456.         PUSH    HL
  457.         PUSH    DE
  458.         SBC     HL,DE
  459.         LD      A,(HL)
  460.         LD      B,0X20
  461.         SBC     A,B
  462.         JR      C,LL35c3
  463.         LD      IX,0XF981
  464.         PUSH    HL
  465.         LD      BC,0X0800
  466. LL35a0  LD      A,(HL)
  467.         CP      (IX+0X00)
  468.         JR      NZ,LL35a7
  469.         INC     C
  470. LL35a7  INC     HL
  471.         INC     IX
  472.         DJNZ    LL35a0
  473.         LD      A,C
  474.         CP      0X08
  475.         JR      NZ,LL35b4
  476.         POP     HL
  477.         JR      LL35c3
  478. LL35b4
  479.         EXX    
  480.         POP     HL
  481.         LD      BC,0X0008
  482.         LDIR   
  483.         EXX    
  484.         LD      A,(0XF86E)
  485.         INC     A
  486.         LD      (0XF86E),A
  487. LL35c3  POP     DE
  488.         POP     HL
  489.         RET    
  490.  
  491.         NOP    
  492.         NOP    
  493.  
  494.         PUSH    AF
  495.         PUSH    BC
  496.         LD      B,0XD2
  497. LL35cc  PUSH    BC
  498.         XOR     A
  499.         OUT     (0XFE),A
  500.         RR      B
  501. LL35d2  DJNZ    LL35d2
  502.         SET     4,A
  503.         OUT     (0XFE),A
  504.         POP     BC
  505.         DEC     B
  506.         DJNZ    LL35cc
  507.         POP     BC
  508.         POP     AF
  509.         RET    
  510.  
  511.         XOR     A
  512.         CP      (IY+0X47)
  513.         JP      NZ,0XF556
  514.         CALL    0X0D6E
  515.         LD      A,0X02
  516.         CALL    0X1601
  517.         XOR     A
  518.         CALL    0XF8CB
  519.         LD      A,0X01
  520.         CALL    0X1601
  521.         LD      (IY+0X47),0XFE
  522.         JP      0XF795
  523.  
  524.         XOR     A
  525.         CP      (IY+0X47)
  526.         JP      NZ,0XF556
  527.         CALL    0X0D6E
  528.         LD      A,0X02
  529.         CALL    0X1601
  530.         LD      A,0X01
  531.         CALL    0XF8CB
  532.         LD      A,0X3F
  533.         LD      (0XF86E),A
  534.         LD      BC,0XFFFF
  535. LL361a  NOP    
  536.         DJNZ    LL361a
  537.         DEC     C
  538.         JR      NZ,LL361a
  539.         JP      0XF5B4
  540.  
  541.         LD      DE,0XF8D1
  542.         JP      0X0C0A
  543.  
  544.         DB      0X80
  545.         DB      0X16,0X0A,0X05
  546.         DB      "!!! NO  PROGRAMS !!!"
  547.                 DC " ";        DB       " "+0X80
  548.  
  549.         DB      0X16,0X0A,0X03,0X10,0X04
  550.         DB      "MORE THAN 63 BASIC FILES"
  551. ;than!!!
  552.                 DC " ";        DB       " "+0X80
  553.  
  554.         DB      0X11,0X00,0X10,0X04,0X13,0X01
  555.         DB      "     -=New ROM boot v1.06=-"
  556.         DB      0X06
  557.         DB      "Remix by CompoWellcome 05.02.99"
  558.                 DC ".";        DB       "."+0X80
  559.  
  560.         DB      0X10,0X02,0X13,0X01
  561.         DB      "       INSERT NEW DISK"
  562.         DB      0X06
  563.         DB      "     FOR READING CATALOGUE."
  564. ;catalogue!
  565.                 DC " ";        DB       " "+0X80
  566.  
  567.         DB      "boot    "
  568.  
  569.         LD      HL,0X5AE1
  570.         PUSH    HL
  571.         POP     DE
  572.         DEC     DE
  573.         LD      BC,0X001F
  574.         LDIR   
  575.         LD      HL,0X5AFF
  576.         LD      A,(0XF9BA)
  577.         OR      A
  578.         JR      Z,LL3703
  579.         LD      A,(HL)
  580.         AND     0X07
  581.         INC     A
  582.         CP      0X08
  583.         JR      NZ,LL3710
  584.         XOR     A
  585.         LD      (0XF9BA),A
  586.         LD      A,0X07
  587. LL3703  LD      A,(HL)
  588.         AND     0X07
  589.         DEC     A
  590.         OR      A
  591.         JR      NZ,LL3710
  592.         CPL    
  593.         LD      (0XF9BA),A
  594.         LD      A,0X01
  595. LL3710  LD      (HL),A
  596.         RET    
  597. LL3712
  598.          NOP   
  599.         LD      A,0XC3
  600.         LD      (0X5CC2),A
  601.         LD      HL,0XF9E6
  602.         LD      (0X5CC3),HL
  603.         LD      IX,0X2FC1
  604.         CALL    0XFA20
  605.         LD      A,0X08
  606.         LD      C,0X1F
  607.         LD      IX,0X2A53
  608.         CALL    0XFA20
  609.         LD      (0XF9E7),SP
  610.         LD      DE,0X0000
  611.         LD      IX,0X2740
  612.         CALL    0XFA20
  613.         LD      SP,0X0000
  614.         LD      IX,0X1FF3
  615.         CALL    0XFA20
  616.         LD      IX,0X1FEB
  617.         CALL    0XFA20
  618.         LD      IX,0X2FC1
  619.         CALL    0XFA20
  620.         LD      A,0XC9
  621.         LD      (0X5CC2),A
  622.         LD      A,(0X5CCD)
  623.         AND     0X40
  624.         RET    
  625. LL3761
  626.         LD      A,0X30
  627.         INC     A
  628.         CP      0X33
  629.         LD      (0XFA0A),A
  630.         JP      NZ,0XF6D0
  631.         LD      A,0X30
  632.         LD      (0XFA0A),A
  633.         JR      LL3761
  634.  
  635.         DI     
  636.         LD      IX,0X0000
  637.         PUSH    IX
  638.         JP      0X3D2F
  639.                 DUPL 3,0XFF;        DS  3,0XFF
  640. bootln2 := $-bootst2
  641. ;       ENT    
  642. ;        ORG    ROM
  643. ;       DISP    0
  644. ;        ORG    bootkus2+bootln2
  645.        ENDIF   
  646. POSITPP
  647. ;jp из 0X3E4E
  648.         PUSH    AF
  649.         LD      A,(0X5CCE) ;0=READ,0XFF=WRITE
  650.         OR      A
  651.         JR      Z,POSppRD
  652.         POP     AF
  653.         PUSH    BC
  654.         LD      B,A
  655.         IN      A,(0X3F)
  656.          CP     B ;в 0X3E52 это уже есть!
  657.          POP    BC
  658.         JP      POSITCONT;0X3E54
  659. POSppRD
  660.         POP     AF
  661.         IN      A,(0X1F)
  662.         AND     0X80
  663.          JP     POSITCONT;0X3E54
  664.        ;DB 0XFF
  665.  
  666.                 IF resident=1;       IFN        resident
  667. PPNORESC000
  668. ;если нет резидента 0XC000
  669. ;jp из 0X3C48
  670.     ;проверка резидента 0XFFF0
  671.         LD      HL,0XFFF0
  672.         XOR     A
  673. LL379e  XOR     (HL)
  674.         ADC     A,H
  675.         INC     L
  676.         JR      NZ,LL379e
  677.         CP      0X06 ;"RESIDENTPRESENT!"
  678.                ;идиотизм - опять 8bit!
  679.         JP      Z,0XC000
  680.        IF       atm-3
  681.         JP      9
  682.        ELSE    
  683.         XOR     A
  684.         CALL    MEMDRV_
  685.     ;проверка недокументированного резидента 0X5B00
  686.         LD      B,0X13
  687.         LD      H,0X5B
  688.         XOR     A
  689. LL37b1  XOR     (HL)
  690.         ADC     A,L
  691.         ADC     A,(HL)
  692.         INC     L
  693.         DJNZ    LL37b1
  694.         CP      0X68
  695.                ;идиотизм - опять 8bit!
  696.        ;JP NZ,A7JP9;0X3C4B
  697.        LD       A,7
  698.        JP       NZ,9
  699.         XOR     A
  700.         LD      (0X5B04),A
  701.         LD      (0X5B0D),A
  702.                 IF madrom=1;       IFN  madrom
  703.         LD      HL,0XFE00
  704.        ELSE    
  705.         LD      HL,0X00C7
  706.        ENDIF   
  707.         LD      (0X5B11),HL
  708.         JP      0X5B00
  709.        ENDIF    ;~atm3
  710.        ENDIF    ;resident
  711.  
  712.        ;DB 0XFF
  713.  
  714. USEmovSPD
  715. ;call из 0X3EBF
  716. ;вместо 0X3E44
  717.         PUSH    HL
  718.         PUSH    AF
  719.         CALL    0X3E08 ;взять время перемещ.головки тек.дисковода
  720.         LD      B,A
  721.         POP     AF
  722.         POP     HL
  723.         JP      0X3E44
  724. NEWER
  725. ;вместо 0X1DCD
  726.         LD      HL,(0X5D11)
  727.         INC     HL
  728.         LD      A,(HL)
  729.         CP      0XD
  730.         JR      Z,NEWRel
  731.         CALL    0X1DCD ;NEW new,old
  732.         JP      L53D
  733. NEWRel
  734.         LD      HL,TRel
  735.         RST     0X18
  736.         JP      0X01D3 ;п/п завершения
  737. TRel
  738.        ;DB "Rel: 08.10.99",0XD,0
  739.         DB      "Rel: 10.04.06",0XD,0
  740.  
  741.        ;DS 0X3800-$,0XFF
  742.        ;ORG 0X3800
  743. TCH1
  744. ;1-ая основная точка входа
  745.         LD      A,(0X5CF6)
  746.         CP      0X03
  747.         JR      Z,L1
  748.         LD      A,(0X5CCE)
  749.         CALL    0X1E36 ;загрузка регистра дорожки
  750.         JP      TCH1Q;0X1E70
  751. L1
  752.         PUSH    DE
  753.         CALL    TEST_R
  754.         JP      NZ,0X3EE1;NO DISK
  755.         POP     DE
  756.         POP HL
  757.         POP BC
  758.         XOR     A
  759.         OR      B
  760.         RET     Z
  761. RD_SV
  762.         PUSH    BC
  763.         PUSH HL
  764.         CALL    SECTR
  765.         POP     HL
  766.         INC     H
  767.         PUSH    HL
  768.         LD      HL,0X5CF4
  769.         LD      A,0X10
  770.         INC     (HL)
  771.         CP      (HL)
  772.         JR      NZ,LL3838
  773.         LD      (HL),0X00
  774.         INC     HL
  775.         INC (HL)
  776. LL3838  POP     HL
  777.         POP BC
  778.         DJNZ    RD_SV
  779.         RET    
  780.  
  781. ;Тест наличия Ram-Disk'а
  782. ;точнее, памяти под него
  783. ;для 128K - вроде как дисковод D
  784. TEST_R
  785.         DI     
  786.        IF       atm=0
  787.         LD      HL,0XFF10
  788.         CALL    FPG
  789.         OUT     (C),L
  790.         LD      D,(HL)
  791.         LD      (HL),H
  792.         LD      A,0X90
  793.         OUT     (C),A
  794.         LD      E,(HL)
  795.         LD      (HL),L
  796.         OUT     (C),L
  797.         LD      B,H
  798.         LD      A,B
  799.         CP      (HL)
  800.         JR      NZ,L2
  801.         LD      B,0X7F
  802.         LD      (HL),D
  803.         LD      A,0X90
  804.         OUT     (C),A
  805.         LD      (HL),E
  806.         OUT     (C),L
  807.        ENDIF   
  808.         LD      A,0X08
  809.         LD      B,0X83
  810. L2
  811.         PUSH    AF
  812.         LD      (0X5CFD),A
  813.         LD      A,B
  814.         LD      (0X5CCB),A
  815.         XOR     A
  816.         OUT     (0XFF),A
  817.         LD      A,(0X5CF6)
  818.         ADD     A,0X3C
  819.         LD      (0X5D16),A
  820.         OUT     (0XFF),A
  821.         LD      A,0XD0
  822.         OUT     (0X1F),A
  823.        IF       atm=0
  824.         LD      A,(F_PAGE)
  825.         LD      BC,0X7FFD
  826.         OUT     (C),A
  827.        ENDIF   
  828.         POP     AF
  829.         RET    
  830. SECTR
  831.         LD      DE,(0X5CF4)
  832.         LD      A,H
  833.         CP      0XBF
  834.         JR      C,RED_SAV
  835.         LD      A,0XFF
  836.         CALL    LL38A6
  837.         LD      A,(0X5CCE)
  838.         AND     A
  839.         JR      Z,LL38C0
  840.         LD      DE,0X5D25
  841.         LD BC,0X0100
  842.         LDIR   
  843.         LD      HL,0X5D25
  844.         LD DE,(0X5CF4)
  845.         CALL    RED_SAV
  846. LL38A4  LD      A,0X00
  847. LL38A6          EX AF,AF';  EXA
  848.         LD      A,(0X5CCE)
  849.                 EX AF,AF';        EXA  
  850.         LD      (0X5CCE),A
  851.         PUSH    HL
  852.         PUSH DE
  853.         LD      HL,0X5D25
  854.         LD DE,0X000F
  855.         CALL    RED_SAV
  856.         POP     DE
  857.         POP HL
  858.         EX      AF,AF'
  859.         LD      (0X5CCE),A
  860.         RET    
  861. LL38C0
  862.         PUSH    HL
  863.         LD      HL,0X5D25
  864.         CALL    RED_SAV
  865.         LD      HL,0X5D25
  866.         POP     DE
  867.         LD      BC,0X0100
  868.         LDIR   
  869.         JR      LL38A4
  870.  
  871. ;Собственно чтение-запись из/в RAM-DISK
  872. RED_SAV
  873.         DI     
  874.         CALL    FPG ;ищем тек.страницу на каждом секторе...
  875.                 ;BC=7ffd (для ATM BC=fff7)
  876.         LD      A,D ;лог.дорожка
  877. ;---Если RD расположен в верхних 512К---
  878.                 IF 0;       IFN 0
  879.        CPL      ;растет сверху
  880.         RLCA   
  881.         AND     0XC0
  882.         LD      C,A
  883.         LD      A,D
  884.         RRCA   
  885.         RRCA   
  886.         AND     0X07
  887.         OR      0X30
  888.         OR      C
  889.         LD      C,0XFD
  890.         OUT     (C),A
  891.        ENDIF   
  892. ;----Если RD расположен во всех 896К----
  893.                 IF 1;       IFN 1
  894. ;               IF atm=1;       IFN     atm
  895.        IF       atm=3
  896.         RRCA   
  897.         RRCA   
  898.         AND     0X3F
  899.        ADD      A,RAM_DATARAMD;9 ;Savelij RAMDISK
  900.       ;OR 64 ;ОЗУ, не 7ffd
  901.         OUT     (C),A
  902.         LD      B,0XF7
  903.         OUT     (C),A
  904.        ELSE     ;atm2
  905.         RRCA   
  906.         RRCA   
  907.         AND     0X3F
  908.         OR      64 ;ОЗУ, не 7ffd
  909.         OUT     (C),A
  910.        ENDIF   
  911.        ELSE    
  912.        CPL      ;растет сверху
  913.         RRCA   
  914.         RRCA   
  915.         AND     0X3F
  916.      ;ADD A,8
  917.         PUSH    AF
  918.         AND     0X27
  919.         OR      0X10
  920.         LD      C,A
  921.         POP     AF
  922.         RLCA   
  923.         RLCA   
  924.         RLCA   
  925.         AND     0XC0
  926.         OR      C
  927.         LD      C,0XFD
  928.         OUT     (C),A
  929.        ENDIF   
  930. ;       ENDIF  
  931. ;----Если RD размером 384К (при 512К)---
  932.                 IF 0;       IFN 0
  933.         RRCA   
  934.         RRCA   
  935.         AND     0X3F
  936.         ADD     A,8
  937.         LD      C,A
  938.         OR      0X10
  939.         SLA     C
  940.         SLA     C
  941.         SLA     C
  942.         OR      C
  943.         AND     0XD7
  944.         LD      C,0XFD
  945.         OUT     (C),A
  946.        ENDIF   
  947. ;---------------------------------------
  948.  
  949.         LD      A,D
  950.         RLCA   
  951.         RLCA   
  952.         RLCA   
  953.         RLCA   
  954.         AND     0X30
  955.         ADD     A,E
  956.         OR      0XC0
  957.         LD      D,A
  958.        LD E,0X00
  959.         LD      A,(0X5CCE)
  960.         AND     A
  961.         JR      NZ,LL38F9
  962.         EX      DE,HL
  963. LL38F9  LD      BC,0X0100
  964.         LDIR   
  965. ;               IF atm=1;       IFN     atm
  966.        IF       atm=3
  967. ;адресация по 7FFD (FFF7, F7F7 неизвестно как восстановить)
  968.         LD      A,0XFF ;7ffd used
  969.         LD      BC,0XFFF7
  970.         OUT     (C),A
  971.         LD      A,(F_PAGE)
  972.         LD      BC,0X7FFD
  973.         OUT     (C),A
  974.        ELSE     ;atm2
  975.         LD      A,(F_PAGE)
  976.         AND     0XF
  977.         OR      0X10
  978.         LD      BC,0X7FFD
  979.         OUT     (C),A
  980.         LD      A,(F_PAGE)
  981.         AND     0XE0 ;5,7,6
  982.         LD      C,A
  983.         RRA    
  984.         RRA    
  985.         RRA    
  986.         OR      C
  987.         AND     0X38 ;5,4,3
  988.         CPL     ;7ffd used
  989.         LD      BC,0XFFF7
  990.         OUT     (C),A
  991.        ENDIF   
  992. ;       ELSE   
  993. ;        LD     A,(F_PAGE)
  994. ;        LD     BC,0X7FFD
  995. ;        OUT    (C),A
  996. ;       ENDIF  
  997.         EI     
  998.         RET    
  999.  
  1000.                 IF resident=1;       IFN        resident
  1001. MEMDRV_
  1002. ;Драйвер памяти (используется HONEY резидентом /и не только/)
  1003. ;6.05 %00abcdef
  1004. ;6.11 %bca0?def (7FFD)
  1005.                 IF atm=1;       IFN     atm
  1006.        IF       atm-3
  1007.         XOR     0X7F
  1008.         LD      BC,0XFFF7
  1009.         OUT     (C),A ;7ffd off
  1010. ;а кто будет включать 7ffd обратно?
  1011.        ELSE     ;atm2
  1012.         PUSH    AF
  1013.         AND     0XF
  1014.         OR      0X10
  1015.         LD      BC,0X7FFD
  1016.         OUT     (C),A
  1017.         POP     AF
  1018.         AND     0XE0 ;5,7,6
  1019.         LD      C,A
  1020.         RRA    
  1021.         RRA    
  1022.         RRA    
  1023.         OR      C
  1024.         AND     0X38 ;5,4,3
  1025.         CPL     ;7ffd used
  1026.         LD      BC,0XFFF7
  1027.         OUT     (C),A
  1028.        ENDIF   
  1029.        ELSE    
  1030.       ;AND 0XDF  ;Если памяти полметра.
  1031.         OR      0X10
  1032.         LD      BC,0X7FFD
  1033.         OUT     (C),A
  1034.        ENDIF   
  1035.         RET    
  1036.        ENDIF   
  1037.  
  1038. TCH2
  1039. ;2-ая точка входа - инициализация
  1040.         LD      (0X5CF6),A
  1041.         CP      0X03
  1042.         JP      NZ,TCH2Q;0X3DCE
  1043.         CALL    TEST_R
  1044.         JP      NZ,0X3EE1 ;ошибку игнорировать?etc
  1045.         RET    
  1046.  
  1047. TCH3
  1048. ;3-я точка входа - форматирование
  1049.         CALL    0X1C57 ;установка имени файла
  1050.         LD      A,(0X5CF6)
  1051.         CP      0X03
  1052.         RET     NZ
  1053.         POP     AF
  1054.         CALL    FILL
  1055.         LD      DE,0X0000
  1056.         LD      (0X5CF4),DE
  1057.         LD      BC,0X0010
  1058. FORMT
  1059.         PUSH    BC
  1060.         LD      A,0XFF
  1061.         LD      (0X5CCE),A
  1062.        LD HL,0X5D25
  1063.        LD B,0X01
  1064.         CALL    RD_SV
  1065.         POP     BC
  1066.         DEC     BC
  1067.         LD      A,B
  1068.         OR      C
  1069.         JR      NZ,FORMT
  1070.  ;free=...
  1071.       ;LD HL,0X05F0  ;для 384К
  1072.         LD      HL,0X07F0  ;для 512К
  1073.       ;LD HL,0X0DF0  ;для 896К
  1074.  
  1075.         LD      A,0X16
  1076.         JP      0X1F55 ;продолж.FORMAT после LD HL,2544
  1077. FILL
  1078.         LD      HL,0X5D25
  1079.        LD DE,0X5D26
  1080.         LD      BC,0X00FF
  1081.        LD (HL),B
  1082.         LDIR   
  1083.         RET    
  1084.  
  1085. FPG
  1086. ;Определение текущей PAGE 0-31 памяти
  1087.                 IF 0;       IFN 0
  1088.         PUSH    DE
  1089.        PUSH HL
  1090.         LD      DE,(0XC000)
  1091.         LD      BC,0X7FFD
  1092.         LD      (0XC000),BC
  1093.         LD      A,0XD7
  1094. FPG1    INC     A
  1095.         BIT     3,A
  1096.         JR      Z,$+4
  1097.         ADD     A,0X38
  1098.         OUT     (C),A
  1099.         LD      HL,(0XC000)
  1100.         AND     A
  1101.         SBC     HL,BC
  1102.         JR      NZ,FPG1
  1103.         LD      (0XC000),DE
  1104.         LD      (F_PAGE),A
  1105.         POP     HL
  1106.        POP DE
  1107.         RET    
  1108.        ELSE    
  1109.         PUSH    DE
  1110.        PUSH HL
  1111.         LD      DE,(0XC000)
  1112.         LD      HL,(0XFFFD)
  1113.         PUSH    HL
  1114.                 IF atm=3;       IFN     atm
  1115.         LD      BC,0XFFF7
  1116.        ELSE    
  1117.         LD      BC,0X7FFD
  1118.        ENDIF   
  1119.         LD      (0XC000),BC
  1120.         LD      (0XFFFD),BC
  1121.                 IF atm=3;       IFN     atm
  1122.         LD      A,0X7F+1 ;D6=1 (ОЗУ), D7=0 (no 7ffd)
  1123.        ELSE    
  1124.         XOR     A
  1125.        ENDIF   
  1126. FPG1
  1127.                 IF atm=3;       IFN     atm
  1128.         DEC     A
  1129.         OR      A ;CY=0
  1130.        ELSE    
  1131.         AND     0XC7
  1132.         DEC     A
  1133.         AND     0XC7
  1134.         OR      16
  1135.        ENDIF   
  1136.         OUT     (C),A
  1137.         LD      HL,(0XC000)
  1138.         SBC     HL,BC
  1139.         JR      NZ,FPG1
  1140.         LD      HL,(0XFFFD)
  1141.         SBC     HL,BC
  1142.         JR      NZ,FPG1
  1143.         LD      (0XC000),DE
  1144.         POP     HL
  1145.         LD      (0XFFFD),HL
  1146.                 IF atm=3;       IFN     atm
  1147.       ;%01abcdef (abcdef inverted)
  1148.  ;надо %bca10def
  1149.         CPL     ;7ffd used
  1150.         LD      L,A
  1151.         AND     0X38 ;5,4,3
  1152.         LD      H,A
  1153.         RLA    
  1154.         RLA    
  1155.         RLA    
  1156.         OR      H
  1157.         XOR     L
  1158.         AND     0XE0 ;5,7,6
  1159.         XOR     L
  1160.         AND     0XE7
  1161.         OR      0X10
  1162.        ENDIF   
  1163.         LD      (F_PAGE),A
  1164.         POP     HL
  1165.        POP DE
  1166.         RET    
  1167.        ENDIF   
  1168.  
  1169. TCH4
  1170. ;Установка типов дисководов 80DS (а-ля 5.04)
  1171. ;Убрать,если необходимо автоопределение (а-ля 5.03)
  1172.         LD      HL,0X8383
  1173.         LD      (0X5CC8),HL
  1174.        LD (0X5CCA),HL
  1175.  
  1176. ;Выбор дисковода при сбросе
  1177.         LD      A,0XF7
  1178.         IN      A,(0XFE)
  1179.         LD      B,0
  1180.         RRA    
  1181.         JR      NC,DRV11
  1182.         INC     B
  1183.         RRA    
  1184.         JR      NC,DRV11
  1185.         INC     B
  1186.         RRA    
  1187.         JR      NC,DRV11
  1188.         INC     B
  1189.         RRA    
  1190.         JR      NC,DRV11
  1191.                 IF cmos=1;       IFN    cmos
  1192.         LD      BC,0XEFF7
  1193.      ;IN A,(C) ;если есть чтение из EFF7
  1194.      ;PUSH AF
  1195.         LD      A,0X80
  1196.         OUT     (C),A
  1197.         LD      B,0XDF,A,0X10
  1198.         OUT     (C),A
  1199.         LD      B,0XBF
  1200.         IN      A,(C)
  1201.                 EX AF,AF';        EXA  
  1202.         LD      B,0XEF
  1203.         XOR     A
  1204.       ;POP AF
  1205.         OUT     (C),A
  1206.                 EX AF,AF';        EXA  
  1207.         LD      B,A
  1208.        ELSE    
  1209.         JR      L3
  1210.        ENDIF   
  1211. DRV11
  1212.         LD      A,B
  1213.        LD (0X5CF6),A
  1214.        LD (0X5D19),A
  1215.         OR      0X3C
  1216.         LD      (0X5D16),A
  1217.         OUT     (0XFF),A
  1218. L3      JP      0X106E ;вывод цветных полос для заставки
  1219.                 IF 0;       IFN 0
  1220.                 DUPL 0X3ADB-$,0XFF;        DS   0X3ADB-$,0XFF
  1221. ;        ORG    0X3ADB
  1222. BOOTER
  1223. ;выполнялка ком."8"
  1224. ;вместо 0X29AE
  1225.         LD      BC,0XF4FF
  1226.         RST     0X20
  1227.         DW      0X1EAF ;CLEAR_RUN
  1228.         LD      A,1
  1229.         RST     0X20
  1230.       ;DW 0X229C ;нет такой точки!
  1231.        DW       0X229B ;border и 23624
  1232.         DI     
  1233.         LD      HL,bootkus1;0XE00
  1234.         LD      DE,0XF500
  1235.         LD      BC,bootln1;0X1F5
  1236.         PUSH    DE
  1237.         LDIR   
  1238.         LD      HL,bootkus2;0X344D
  1239.         LD      BC,$;bootln2+1;0X334
  1240.         LDIR   
  1241.         SET     3,(IY+0X01)
  1242.         RET    
  1243.        ENDIF   
  1244. MOVEPP
  1245.         LD      HL,(0X5CE1)
  1246. LL3b03  LD      A,(HL)
  1247.          CP     0X00
  1248.         RET     Z
  1249.          CP     0X01
  1250.          JR     Z,LL3b0e
  1251.          CALL   LL3b14
  1252. LL3b0e  LD      DE,0X0010
  1253.         ADD     HL,DE
  1254.         JR      LL3b03
  1255. LL3b14  PUSH    HL
  1256.         LD      DE,0X000D
  1257.         ADD     HL,DE
  1258.         LD      C,(HL)
  1259.         INC     HL
  1260.         LD      E,(HL)
  1261.         INC     HL
  1262.         LD      D,(HL)
  1263.         LD      HL,(0X5CD7)
  1264.         AND     A
  1265.         SBC     HL,DE
  1266.         ADD     HL,DE
  1267.         JR      Z,LL3b56
  1268.         LD      (0X5CD5),DE
  1269.         LD      A,C
  1270.         LD      (0X5CD3),A
  1271.         CALL    0X17A5 ;перемещение файла
  1272. LL3b32  POP     HL
  1273.         PUSH    HL
  1274.         LD      DE,(0X5CDF)
  1275.         LD      BC,0X0010
  1276.         LDIR   
  1277.         LD      (0X5CDF),DE
  1278.                 EX DE,HL;        EXD   
  1279.         LD      DE,(0X5CDD)
  1280.         DEC     HL
  1281.         LD      (HL),D
  1282.         DEC     HL
  1283.         LD      (HL),E
  1284.         LD      HL,(0X5CD7)
  1285.         LD      (0X5CDD),HL
  1286.         LD      HL,0X5CE3
  1287.         INC     (HL)
  1288.         POP     HL
  1289.         RET    
  1290. LL3b56
  1291.         LD      A,C
  1292.         AND     0X0F
  1293.         ADD     A,E
  1294.         BIT     4,A
  1295.         RES     4,A
  1296.         LD      E,A
  1297.         JR      Z,$+3
  1298.         INC     D
  1299.         LD      A,C
  1300.  
  1301. ;        RRC    A
  1302. ;        RRC    A
  1303. ;        RRC    A
  1304. ;        RRC    A
  1305.                 REPT 4
  1306.                 DB 0XCB
  1307.                 RRCA
  1308.                 ENDM
  1309.  
  1310.         AND     0X0F
  1311.         ADD     A,D
  1312.         LD      D,A
  1313.         LD      (0X5CD7),DE
  1314.         JR      LL3b32
  1315.  
  1316.       ;DS 0X3B80-$,0XFF
  1317. GETCOM
  1318. ;jp из 0X2154
  1319. ;вместо 0X1D90 - зачем???
  1320.         RES     5,(IY+0X01)
  1321.         RST     0X20
  1322.         DW      0X15D4 ;WAIT_KEY
  1323.         CP      7
  1324.         JR      NZ,LL3bad
  1325.         LD      HL,0X00C8
  1326.         LD      D,H
  1327.         LD      E,(IY-0X01)
  1328.         RST     0X20
  1329.         DW      0X3B5 ;beep
  1330.         CALL    0X212A ;восстановление командной строки
  1331.         LD      HL,(0X5C59)
  1332.         LD      A,0X0D
  1333.          LD     BC,0
  1334.         CPIR   
  1335.         DEC     HL
  1336.         LD      (0X5C5B),HL
  1337.         INC     HL
  1338.         INC     HL
  1339.         LD      (HL),0X80
  1340. LL3baa  RST     0X20
  1341.         DW      0X15D4 ;WAIT_KEY
  1342. LL3bad
  1343.         PUSH    AF
  1344.         LD      HL,0X00C8
  1345.         LD      D,H
  1346.         LD      E,(IY-0X01)
  1347.         RST     0X20
  1348.         DW      0X3B5 ;beep
  1349.         POP     AF
  1350.         CP      0X18
  1351.         JR      NC,LL3bca
  1352.         CP      0X07
  1353.         JR      C,LL3bca
  1354.         CP      0X10
  1355.         JR      C,LL3bcf
  1356.         RST     0X20
  1357.         DW      0XF58 ;в ED_LOOP: sym>=16
  1358.         JR      LL3baa
  1359. LL3bca
  1360.         RST     0X20
  1361.         DW      0XF81 ;ADD_CHAR
  1362.         JR      LL3baa
  1363. LL3bcf
  1364.         CP      0X07
  1365.         JR      Z,LL3baa
  1366.         CP      0X0D
  1367.         RET     Z
  1368.         CP      0X0A
  1369.         JR      Z,LL3baa
  1370.         CP      0X0B
  1371.         JR      Z,LL3baa
  1372.         RST     0X20
  1373.         DW      0XF92 ;ED_KEYS
  1374.         JR      LL3baa
  1375.  
  1376.       ;DS 0X3BF0-$,0XFF
  1377. WHOD
  1378. ;вход в TR-DOS
  1379. ;jp из 0X3D35
  1380. ;вместо 0X239
  1381.         CALL    0X1D9F ;очистка низа экрана
  1382.         JP      0X239 ;вход в командный процессор
  1383.  
  1384.       ;DS 0X3C00-$,0XFF
  1385.       ;тут стоят дубли 0X3D00/3D03
  1386.       ;дубля 0X3D13 нет и не было
  1387.       ;ORG 0X3C10
  1388. OUTDE
  1389.         LD      C,D
  1390.         OUT     (C),E
  1391.         RET    
  1392. INED
  1393.         LD      C,D
  1394.         IN      E,(C)
  1395.         RET    
  1396. JPWRITE
  1397.         LD      C,0X7F
  1398.         JP      16314
  1399. JPREAD
  1400.         LD      C,0X7F
  1401.         JP      16341
  1402.