Subversion Repositories NedoOS

Rev

Rev 964 | Rev 1323 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1.         DEVICE ZXSPECTRUM128
  2.         ;device pentagon1024
  3.  
  4.         include "../_sdk/syssets.asm"
  5.        ifdef USETOPDOWNMEM
  6. TOPDOWNMEM=1
  7.        else
  8. TOPDOWNMEM=0;1
  9.        endif
  10.  
  11.                 if atm != 2
  12. memport0000=0x37f7
  13. memport4000=0x77f7
  14. memport8000=0xb7f7
  15. memportc000=0xf7f7
  16. memportrom0000=0x3ff7
  17. memportrom4000=0x7ff7
  18. memportrom8000=0xbff7
  19. memportromc000=0xfff7
  20. pagexor=0xff
  21.         else
  22. memport0000=0x3ff7
  23. memport4000=0x7ff7
  24. memport8000=0xbff7
  25. memportc000=0xfff7
  26. memportrom0000=0x3ff7
  27. memportrom4000=0x7ff7
  28. memportrom8000=0xbff7
  29. memportromc000=0xfff7
  30. pagexor=0x7f
  31.         endif
  32.        
  33.         if NEMOIDE==1
  34. ;схема Nemo:
  35. hddstat=0xF0
  36. hddcmd=0xF0
  37. hddhead=0xD0
  38. hddcylhi=0xB0
  39. hddcyllo=0x90
  40. hddsec=0x70
  41. hddcount=0x50
  42. hdderr=0x30
  43. hdddatlo=0x10
  44. hdddathi=0x11
  45. hddupr=0xC8
  46. hdduprON=0
  47.         else
  48. ;схема ATM:
  49. hddstat=0xFEEF
  50. hddcmd=0xFEEF
  51. hddhead=0xFECF
  52. hddcylhi=0xFEAF
  53. hddcyllo=0xFE8F
  54. hddsec=0xFE6F
  55. hddcount=0xFE4F
  56. hdderr=0xFE2F
  57. hdddatlo=0xFE0F
  58. hdddathi=0xFF0F
  59. hddupr=0xFEBE ;при установленном b7 FFBA
  60. hdduprON=0xFFBA
  61. hddupr1=0xF7
  62. hddupr0=0x77
  63.         endif
  64. memport8000_hi=memport8000/256
  65. memportc000_hi=memportc000/256
  66.  
  67. SYSMINSTACK=0x3b00
  68.  
  69. resident=0x6000;0x6000+8000 (где не затрут при очистке экрана) ;pgtrdosfs
  70. trdos_catbuf=0x6300;0x3200 ;,0x900 ;pgtrdosfs (0x4000)
  71. trdos_sectorbuf=0x6c00
  72. trdos_fcbbuf=0x6d00 ;size=0x200*trdos_MAXFILES
  73. trdos_MAXFILES=8
  74. INTMUZSTACK=0x3e00 ;kernelspace
  75. ;INTSTACK1=0x3f00 ;kernelspace (для входа в обработчик без порчи стека) (не пересекается с возможным стеком задачи!!!)
  76. INTSTACK2=0x5f00;0x6000 ;pgkillable и pgtrdosfs (рабочий стек обработчика прерываний) (>=0x4000, иначе нельзя выключить теневые порты)
  77. TRDOSSTACK=0x5f00-96;0x6000-96 ;чтобы не пересекалось с INTSTACK (в промежутке между преключениями страниц может произойти системное прерывание), но и на экран не попало
  78. BDOSSTACK=0x4000 ;kernelspace
  79. STACK=0x4000 ;userspace
  80. ;при вызове BDOS стек некоторое время такой же, как в юзерспейсе
  81. ;поэтому на входе в BDOS надо иметь в 0x4000...0xffff страницы, которые не жалко
  82. ;предполагается, что юзер не имеет стек ниже 0x3b00, иначе он затрёт систему
  83.  
  84.         include "../_sdk/sys_h.asm"
  85.  
  86.         if TOPDOWNMEM
  87. pgtrdosfs=pagexor-(sys_npages-1)
  88. pgfatfs=pagexor-(sys_npages-2)
  89. pgsys=pagexor-(sys_npages-3)
  90. pgfatfs2=pagexor-(sys_npages-4) ;structs
  91.         else
  92. pgtrdosfs=pagexor-8
  93. pgfatfs=pagexor-9
  94. pgsys=pagexor-10
  95. pgfatfs2=pagexor-11 ;structs
  96.         endif
  97.  
  98. pgkillable=pagexor-4 ;в 128K памяти, т.к. можно портить
  99. ;pgfirstfree=pagexor-11
  100.  
  101. pgscr0_0=pagexor-1
  102. pgscr0_1=pagexor-5
  103. pgscr1_0=pagexor-3
  104. pgscr1_1=pagexor-7
  105.  
  106. fd_system=0x57;%01010111 ;%0x01sx1x ;для неисправленного АТМ2 надо A9=1, а номер страницы в 0x7ffd не будет влиять, если адресация по memportc000
  107. fd_system_getchar=0x56;%01010110 ;%0x01sx1x ;для неисправленного АТМ2 надо A9=1, а номер страницы в 0x7ffd не будет влиять, если адресация по memportc000
  108. fd_user=0x47;%01000111 ;%0x00sx1x ;для неисправленного АТМ2 надо A9=1, а номер страницы в 0x7ffd не будет влиять, если адресация по memportc000
  109.  
  110. ;условные страницы для sjasm
  111. COMPILEPG_INIT=0
  112. COMPILEPG_SYS0=4
  113. COMPILEPG_SYS1=6
  114.  
  115.         SLOT 1
  116.         page COMPILEPG_INIT
  117.         org 0x6000
  118. begin
  119.         di
  120.         xor a
  121.         out (0xfe),a
  122.         ifdef KOE
  123.             display "KOE!!!"
  124.             ld a,0 ;turbo ;0x10 ;noturbo
  125.             ld bc,0xeff7
  126.             out (c),a ;for KOE
  127.             ld a,0x10
  128.             ld bc,0x7ffd
  129.             out (c),a
  130.         endif
  131.                 if atm==2
  132.             ld hl,basvar.tape
  133.             ld de,0x5c00
  134.             ld bc,basvar.endtape - basvar.tape
  135.             ldir
  136.             ld sp,0x5800
  137.             ld a,(0x3CBC)
  138.             cp 0x83
  139.             call z,0x3C9E
  140.             ;call 0x3d21
  141.         endif
  142.         LD (IY+1),0xCC
  143.  
  144.         if 1==0
  145.             ;IF em3d13
  146.             ; LD HL,ONERR
  147.             ; LD (23747),HL
  148.             ;ENDIF
  149.             LD A,(23833)
  150.             ADD A,'A'
  151.             LD (src),A
  152.             LD (dst),A
  153.             XOR A
  154.             LD (23658),A ;0x5c6a
  155.             ;LD L,A,H,L
  156.             ;LD (23802),HL
  157.         endif
  158.         XOR A
  159.         ld (0x5d10),a
  160.        
  161.         ;ld hl,0xc9f1 ;pop af:ret
  162.         ;ld (0x5cc2),hl
  163.        
  164.         ;ld bc,0xfbdf ;x
  165.         ;in l,(c)
  166.         ;ld b,0xff
  167.         ;in h,(c)
  168.         ;ld (init_oldmousecoords),hl
  169.  
  170. ;;;;;;;;;;;;;;;;;;; set gfx mode ;;;;;;;;;;;;;;;;;
  171.                 ei
  172.         halt
  173.         ;LD A,0xaa;%10101010 ;640x200 mode
  174.         ;LD A,0xae;%10101110 ;textmode
  175.                 if atm==1
  176. init_rst_buf=0x4000
  177.             ;проверим версию ers
  178.             ld d,0x00
  179.                         rst 0x08
  180.                         defb 0x4d,0x00
  181.             ld hl,-0x5812    ;ERS_MIN_VERSION 0.58.12
  182.             add hl,de
  183.             ld a,0xff
  184.             jr nc,.err_version
  185.                         ;выясним откуда запустились
  186.                         ld hl,init_rst_buf
  187.                         rst 0x08
  188.                         defb 0x50,0x03
  189.                         rst 0x08        ; в D вернется текущий драйв
  190.                         defb 0x50,0x02
  191.                         ld a,d
  192.                         add a,a
  193.                         add a,a
  194.                         add a,a
  195.                         ld hl,init_rst_buf
  196.                         ld b,0
  197.                         ld c,a
  198.                         add hl,bc
  199.                         ld de,init_rst_buf+512
  200.                         ld bc,8
  201.                         ldir
  202.                         ld a,(init_rst_buf+512)
  203.                         rst 0x08
  204.                         defb 0x50,0x05
  205.                         ld a,(init_rst_buf+512)
  206.                         and 1 ;m/s
  207.                         ld hl,init_rst_buf
  208.                         ld bc,0x0000
  209.                         ld d,b
  210.                         ld e,c
  211.                         ld a,2
  212.                         ex af,af' ;'
  213.                         ld a,1
  214.                         rst 0x08
  215.                         defb 0x50,0x04,0x02
  216.                         ld a,(init_rst_buf+512)
  217.                         ld d,12
  218.                         cp 0x0f
  219.                         jr z,.l3
  220.                         ld d,3
  221.                         cp 4
  222.                         jr z,.init_sysdev_part
  223.                         ld d,7
  224.                         cp 5
  225.                         jp nz,init_sysdev_end
  226. .init_sysdev_part
  227.                         ld hl,init_rst_buf+0x01BE+0x0008-12
  228. .l2
  229.                         inc d
  230.                         push de
  231.                         ld bc,12
  232.                         add hl,bc
  233.                         ld bc,0x0400
  234.                         ld de,init_rst_buf+512+3
  235. .l1                     ld a,(de)
  236.                         xor (hl)
  237.                         or c
  238.                         ld c,a
  239.                         inc de
  240.                         inc hl
  241.                         djnz .l1
  242.                         pop de
  243.                         or a
  244.                         jr nz,.l2
  245. .l3
  246.                         ld a,d
  247. .err_version
  248.                         ld (init_sysdrv_val),a
  249. init_sysdev_end
  250.                         halt
  251.                         ld bc,0xeff7
  252.                         ld a,0x80
  253.                         out (c),a
  254.                         ld a,0x10
  255.                         ld bc,0x7ffd
  256.                         out (c),a
  257.                         ld bc,0x01bf
  258.                         out (c),b
  259.                         LD A,0xa8;%10101000 ;320x200 mode
  260.                         ld bc,0xbd77    ;shadow ports and palette remain on
  261.                         out (c),a
  262.                         xor a
  263.                         out (0xbf),a
  264.                 else
  265.                         LD A,0xa8;%10101000 ;320x200 mode
  266.                         CALL INIT_OUTSHADON
  267.         endif
  268.         call INIT_blackpal
  269.  
  270.         di
  271.                 if atm==1 and PS2KBD
  272.                         ld bc,0xdef7   
  273.                         out (c),c              
  274.                         ld b,0xbe              
  275.                         ld a,2                 
  276.                         out (c),a
  277.                 endif
  278.                
  279.                 if atm==3 or atm==1
  280.                         ld a,0x7f-5
  281.                         ld bc,memportrom4000
  282.                         out (c),a ;отключаем 7ffd
  283.                         ld a,0x7f-2
  284.                         ld bc,memportrom8000
  285.                         out (c),a ;отключаем 7ffd
  286.                         ;ld a,0x7f-2
  287.                         ld bc,memportromc000
  288.                         out (c),a ;отключаем 7ffd
  289.                 endif
  290.        
  291.                 if atm != 1
  292.                         call findpgdos
  293.                 else
  294.                         ld a,0x04
  295.                         in a,(0xbe)
  296.                         and 0xbf;%10111111
  297.                         ;ld a,0x8b
  298.                 endif
  299.         ld lx,a
  300.         ld (sys_pgdos),a ;до установки резидента
  301.  
  302.         ld a,pgsys
  303.         call INIT_setpg_c000
  304.         ld hl,0x8000
  305.         ld de,0xc000
  306.         ld bc,0x4000
  307.         ldir
  308.        
  309.         ld a,pgtrdosfs
  310.         call INIT_setpg_c000
  311.         ld hl,wastrdosfs
  312.         ld de,0xc000+idle;COMMANDLINE;PROGSTART ;idle code
  313.         ld bc,trdosfs_sz
  314.         ldir
  315.         ld a,(init_sysdrv_val)  ;нужно для проверки версии ERS
  316.         ld (0xc000+idle+6),a    ;при неправильном ERS сисдир==0xff
  317.                         ld a,0xc3
  318.                         ld (0x5cc2),a
  319.                         ld hl,ONERR;ddrv
  320.                         ld (0x5cc3),hl
  321.                         ld hl,0x5c00
  322.                         ld de,0xc000+0x1c00
  323.                         ld bc,0x0400;for run hobeta;0x0200;0x5d3b-0x5c00
  324.                         ldir
  325.         ld hl,wasresident
  326.         ld de,resident+0xc000-0x4000
  327.         ld bc,resident_sz
  328.         ldir
  329.                         ld hl,0x5c4b
  330.                         ld de,varbas_stor+0x8000
  331.                         ld bc,32
  332.                         ldir
  333.        
  334.         ld hl,0xc000+trdos_fcbbuf-0x4000
  335.         ld d,h
  336.         ld e,l
  337.         inc de
  338.         ld bc,0x200*trdos_MAXFILES-1
  339.         ld (hl),l;0
  340.         ldir
  341.  
  342.         ;ld a,pgidle
  343.         ;call INIT_setpg_c000
  344.         ;ld hl,wasidle
  345.         ;ld de,0x0100+0xc000
  346.         ;ld bc,idle_sz
  347.         ;ldir
  348.        
  349.         ld a,pgsys
  350.         call INIT_setpg_8000
  351.         ld a,pgfatfs
  352.         call INIT_setpg_c000
  353.        
  354.         ;jr $
  355. ;перебрасываем 16K упакованный блок в 0xb000
  356.         ld hl,wassys+0x4fff
  357.         ld de,0xffff
  358.         ld bc,0x5000
  359.         lddr
  360. ;распаковываем в 0x6400
  361.         ld hl,0xb000;wassys
  362.         ld de,0x6400;0x8000
  363.         call DEC40 ;распаковываем в de (там уже включены системные странички)
  364. ;перебрасываем 32K из 0x6400 в 0x8000
  365.         ld hl,0x6400+0x7fff
  366.         ld de,0x8000+0x7fff
  367.         ld bc,0x8000
  368.         lddr
  369.  
  370. fatfspatchaddr=0xc000
  371.        
  372.         ld hl,devices_init
  373.         ld (0xc000+FFS_DRV.init),hl
  374.         ld hl,disk_status
  375.         ld (0xc000+FFS_DRV.status),hl
  376.         ld hl,devices_read      ;read to userspace
  377.         ld (0xc000+FFS_DRV.rd_to_usp),hl
  378.         ld hl,devices_readnopg  ;read to buffer
  379.         ld (0xc000+FFS_DRV.rd_to_buf),hl
  380.         ld hl,devices_write     ;write from userspace
  381.         ld (0xc000+FFS_DRV.wr_fr_usp),hl
  382.         ld hl,devices_writenopg ;write from buffer
  383.         ld (0xc000+FFS_DRV.wr_fr_buf),hl
  384.         ld hl,get_fattime
  385.         ld (0xc000+FFS_DRV.RTC),hl
  386.         ld hl,strcpy_lib2usp   
  387.         ld (0xc000+FFS_DRV.strcpy_lib2usp),hl
  388.         ld hl,strcpy_usp2lib
  389.         ld (0xc000+FFS_DRV.strcpy_usp2lib),hl
  390.         ld hl,memcpy_lib2usp
  391.         ld (0xc000+FFS_DRV.memcpy_lib2usp),hl
  392.         ld hl,memcpy_usp2lib
  393.         ld (0xc000+FFS_DRV.memcpy_usp2lib),hl
  394.         ld hl,memcpy_buf2usp
  395.         ld (0xc000+FFS_DRV.memcpy_buf2usp),hl
  396.         ld hl,memcpy_usp2buf
  397.         ld (0xc000+FFS_DRV.memcpy_usp2buf),hl
  398.  
  399. ;инициализация менеджера памяти и вход в юзерспейс:
  400. ;HALT (чтобы прерывание не произошло когда не надо)
  401. ;[назначаем страницы системспейса (одна из них должна быть такая же, как в юзерспейсе) - уже есть общая страница 5]
  402. ;в юзерспейсе назначаем нижнюю страницу с керналем (вместо ПЗУ)
  403.         ld a,fd_user
  404.         out (0xfd),a
  405.                 if atm==3 or atm==1
  406.          ld a,0x7f
  407.          ld bc,memportrom0000
  408.          out (c),a ;отключаем ПЗУ
  409.          ld a,0x7f-5
  410.          ld bc,memportrom4000
  411.          out (c),a ;отключаем 7ffd
  412.          ld a,0x7f-2
  413.          ld bc,memportrom8000
  414.          out (c),a ;отключаем 7ffd
  415.          ;ld a,0x7f-2
  416.          ld bc,memportromc000
  417.          out (c),a ;отключаем 7ffd
  418.         endif
  419.         ld a,pgtrdosfs ;idle
  420.         ld bc,memport0000
  421.         out (c),a
  422.        
  423.         ;ld hl,wasuserkernel+0x8000
  424.         ;ld de,0
  425.         ;ld bc,userkernel_sz
  426.         ;ldir
  427.        
  428.         ld a,fd_system
  429.         out (0xfd),a
  430.                 if atm==3 or atm==1
  431.          ld a,0x7f
  432.          ld bc,memportrom0000
  433.          out (c),a ;отключаем ПЗУ
  434.          ;4000,8000,c000 уже отключили 7ffd выше
  435.         endif
  436.         ld a,pgsys
  437.         ld bc,memport0000
  438.         out (c),a
  439. ;в системспейсе:
  440. ;включить fatfs
  441. ;поставить резидент в 7fxx
  442. ;переходим в sys_intq, а оттуда в init_resident
  443.  
  444.         if 1==0
  445.         ld a,lx;(sys_pgdos)
  446.         ld bc,memportrom0000
  447.         out (c),a
  448.         LD A,0xa8;%10101000 ;320x200 mode
  449.         ld bc,0xff77 ;shadow ports off, palette off
  450.         out (c),a
  451.         ld a,1
  452.         ld c,1
  453.         call 0x3d13
  454.         ld c,0x18
  455.         call 0x3d13
  456.         ld hl,0xc000
  457.         ld de,0x0000
  458.         ld bc,0x0805
  459.         call 0x3d13
  460.         jr $
  461.         endif
  462.  
  463.         ld sp,BDOSSTACK
  464.         ;ei
  465.         ;halt ;чтобы прерывание не произошло когда не надо
  466.         ;di
  467.         ;jr $
  468. ;init_oldmousecoords=$+1
  469. ;        ld hl,0
  470. ;        ld (sys_oldmousecoords),hl
  471.          call BDOS_setpgstructs
  472.          ld hl,0xc000
  473.          ld de,0xc001
  474.          ld bc,0x3fff
  475.          ld (hl),l;0
  476.          ldir ;не помогло
  477. init_sysdrv_val=$+1
  478.          ld a,SYSDRV
  479.          ld (SYSDRV_VAL),a
  480.         jp setkernelpages_go ;di!!!
  481.        
  482.                 if atm != 1
  483. INIT_OUTSHADON
  484.         ;LD BC,0xFF77 ;shadow ports remain off
  485.                         LD BC,0xBD77 ;shadow ports and palette remain on
  486.                         LD IX,10835
  487.                         PUSH IX
  488.                         JP 0x3D2F
  489.                 endif
  490.  
  491. INIT_setpg_low
  492.         LD BC,memportrom0000 ;page for 0x0000..0x3fff
  493.         OUT (C),A
  494.         ret
  495.  
  496. INIT_setpg_8000
  497.         LD BC,memport8000 ;page for 0x8000..0xbfff
  498.         OUT (C),A
  499.         ret
  500.  
  501. INIT_setpg_c000
  502.         LD BC,memportc000 ;page for 0xc000..0xffff
  503.         OUT (C),A
  504.         ret
  505.        
  506.                 if atm==2
  507. basvar
  508. .tape
  509.         defb 0xFF, 0x00, 0x00, 0x00, 0x0D, 0x05, 0x10, 0x0D, 0x0D, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
  510.         defb 0x01, 0x00, 0x06, 0x00, 0x0B, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00
  511.         defb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFD, 0x7F, 0x3E, 0x14, 0xED, 0x79, 0xC3, 0x00, 0xC0
  512.         defb 0x18, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x40, 0x00, 0xFF, 0xCC, 0x01, 0xFC, 0x5F, 0x00
  513.         defb 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x02, 0x07, 0x00, 0x00, 0xB4, 0x5D, 0x00, 0x00, 0x26
  514.         defb 0x5D, 0x26, 0x5D, 0x3B, 0x5D, 0xB4, 0x5D, 0x3A, 0x5D, 0xB5, 0x5D, 0xB5, 0x5D, 0xB3, 0x5D, 0x00
  515.         defb 0x00, 0xB7, 0x5D, 0xC3, 0x5D, 0xC3, 0x5D, 0x2D, 0x92, 0x5C, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00
  516.         defb 0x00, 0x00, 0x00, 0x00, 0xB6, 0x1A, 0x92, 0x00, 0x24, 0x01, 0x00, 0x58, 0xFF, 0x00, 0x00, 0x21
  517.         defb 0x00, 0x5B, 0x21, 0x17, 0x00, 0x40, 0xE0, 0x50, 0x21, 0x18, 0x21, 0x17, 0x01, 0x07, 0x00, 0x07
  518.         defb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  519.         defb 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  520.         defb 0x00, 0x00, 0xFF, 0x5F, 0xFF, 0xFF, 0xF4, 0x09, 0xA8, 0x10, 0x4B, 0xF4, 0x09, 0xC4, 0x15, 0x53
  521.         defb 0x81, 0x0F, 0xC9, 0x49, 0x91, 0xF4, 0x09, 0xC4, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x35
  522.         defb 0x36, 0x31, 0x36, 0x0E, 0x00, 0x00, 0x03, 0x6B, 0x5E, 0x95, 0x5E, 0x00, 0x25, 0x73, 0x74, 0x73
  523.         defb 0x35, 0x2E, 0x31, 0x61, 0x20, 0x43, 0x00, 0xDB, 0x00, 0x25, 0x25, 0x03, 0x09, 0x00, 0x00, 0x00
  524.         defb 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x80, 0x08
  525.         defb 0x00, 0xC8, 0xFA, 0x5C, 0xFA, 0x5C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00
  526.         defb 0xFF, 0x89, 0x5D, 0xFC, 0x5F, 0xFF, 0x3C, 0xAA, 0x00, 0x00, 0x01, 0x02, 0xFA, 0x5F, 0x03, 0x00
  527.         defb 0xFE, 0x0D, 0x80, 0x00, 0x00, 0xFF, 0xF4, 0x09, 0xA8, 0x10, 0x4B, 0xF4, 0x09, 0xC4, 0x15, 0x53
  528.         defb 0x81, 0x0F, 0xC4, 0x15, 0x52, 0xF4, 0x09, 0xC4, 0x15, 0x50, 0x80, 0x01, 0x00, 0x23, 0x00, 0xFD
  529.         defb 0xB0, 0x22, 0x36, 0x35, 0x33, 0x36, 0x38, 0x22, 0x3A, 0xF9, 0xC0, 0xB0, 0x22, 0x31, 0x35, 0x36
  530.         defb 0x31, 0x39, 0x22, 0x3A, 0xEA, 0x3A, 0xF7, 0x22, 0x62, 0x6F, 0x6F, 0x74, 0x20, 0x20, 0x20, 0x20
  531.         defb 0x22, 0x0D, 0x80, 0xF4, 0x5C, 0x01, 0x05, 0x2E, 0x21, 0x00, 0x60, 0xE5, 0xC3, 0x13, 0x3D, 0x0D
  532. .endtape
  533.         endif
  534.  
  535.                 if atm != 1
  536. findpgdos
  537. ;если не найти страницу текущего доса, то на старых версиях ПЗУ ZX Evo не будет работать (в странице 0x83 почему-то не дос по умолчанию)
  538.         call crcdos
  539.         ld (doscrchi),de
  540.         ld (doscrclo),bc
  541.         ld lx,0x83
  542. findpgdos0
  543.         ld a,lx
  544.         call INIT_setpg_low
  545.         call crcdos
  546. doscrchi=$+1
  547.         ld hl,0
  548.         or a
  549.         sbc hl,de
  550.         jr nz,doscrcbad
  551. doscrclo=$+1
  552.         ld hl,0
  553.         or a
  554.         sbc hl,bc
  555.         jr nz,doscrcbad
  556.         ld a,lx
  557.         ret
  558. doscrcbad
  559.         ld a,lx
  560.         add a,4
  561.         ld lx,a
  562.         cp 0xc0
  563.         jr c,findpgdos0
  564.         ld a,0x83 ;not found
  565.         ret
  566. crcdos
  567.         ld hl,0x0000
  568.         ld bc,0
  569.         ld de,0
  570. crcdos0
  571.         ld a,d
  572.         add a,a
  573.         rl c
  574.         rl b
  575.         rl e
  576.         rl d
  577.         xor b
  578.         ld b,a
  579.         ld a,(hl)
  580.         xor c
  581.         ld c,a
  582.         inc hl
  583.         bit 6,h
  584.         jr z,crcdos0
  585.         ret
  586.                 endif
  587.  
  588. INIT_blackpal
  589.         LD HL,blackpalend
  590.         ;halt ;halt есть выше - убрано, чтобы не светилось ничего
  591.         LD DE,0xa80f ;0xab=6912 ;palette on, EGA, turbo
  592.         LD BC,0xBD77
  593.         OUT (C),D
  594. INIT_setpal0 LD A,E
  595.         and 7
  596.         BIT 3,E
  597.         OUT (0xFE),A
  598.         JR Z,$+4
  599.         OUT (0xF6),A
  600.         LD A,(HL)
  601.         DEC HL
  602.         ld b,(hl) ;DDp palette low bits
  603.         dec hl
  604.         ld c,0xff
  605.         OUT (c),a;(0xFF),A
  606.         DEC E
  607.         JP P,INIT_setpal0
  608.         ret
  609.  
  610.         ifdef NOPAL
  611.         dw 0xffff,0xfefe,0xfdfd,0xfcfc,0xefef,0xeeee,0xeded,0xecec
  612.         dw 0xffff,0xdede,0xbdbd,0x9c9c,0x6f6f,0x4e4e,0x2d2d,0x0c0c
  613.         else
  614.         ds 32,0xf3
  615.         endif
  616. blackpalend=$-1
  617.  
  618.         include "unmegalz.asm" ;DEC40
  619.  
  620. wasresident
  621.         disp resident
  622.                 if atm != 1
  623. readmouse  ;=$-wasresident+resident
  624. ;sp=0x7fxx
  625. ;e=gfxmode
  626. ;out:
  627. ;a=gfxmode, hl=mousecoords, d=mousebuttons, e=kempstonbuttons
  628.                         call sys_SHADOFF
  629.                        ;ifdef NOMOUSE
  630.                        ; ld hl,0
  631.                        ; ld d,0x0f ;buttons
  632.                        ;else
  633.                         ld bc,0xfadf ;buttons
  634.                         in d,(c)
  635.                         inc b ;ld bc,0xfbdf ;x
  636.                         in l,(c)
  637.                         ld b,0xff ;y
  638.                         in h,(c)
  639.                         ld c,0x1f
  640.                         in e,(c) ;kempstonbuttons
  641.                         inc e
  642.                         jr nz,$+3 ;0xff = kempston joystick absent
  643.                          inc e ;will be 0 after dec
  644.                         dec e
  645.                         jr shadon_pgsys_a
  646.                        ;endif
  647.                 endif
  648. shadon_pgsys  ;=$-wasresident+resident
  649.         LD A,e;0xa8;%10101000 ;320x200 mode
  650. shadon_pgsys_a  ;=$-wasresident+resident
  651.                 if atm != 1
  652.                         CALL sys_SHADON
  653.                 else
  654.                         ld bc,0x01bf
  655.                         out (c),b
  656.                         ld bc,0xbd77    ;shadow ports and palette remain on
  657.                         out (c),a
  658.                         xor a
  659.                         out (0xbf),a
  660.                 endif
  661.                
  662.                 if atm==3 or atm==1
  663.                         ld a,0x7f
  664.                         call sys_setpg_low
  665.                         ld a,pgsys
  666.                         ld bc,memport0000
  667.                         jr sys_outca_jr
  668.          else
  669.                         ld a,0x7f-(pagexor-pgsys)
  670.          endif
  671. sys_setpg_low  ;=$-wasresident+resident
  672.                 ld bc,memportrom0000
  673.                 jr sys_outca_jr
  674. sys_SHADOFF  ;=$-wasresident+resident
  675. sys_pgdos=wasresident+(($+1)-resident) ;для патча
  676.                 ld a,0x83 ;48 basic switchable to DOS
  677.                 call sys_setpg_low
  678.         LD A,e;0xa8;%10101000 ;320x200 mode
  679.                 ld bc,0xff77 ;shadow ports off, palette off
  680. sys_outca_jr
  681.         out (c),a
  682.                 ret
  683.                 if atm != 1
  684. sys_SHADON  ;=$-wasresident+resident
  685.                         LD bc,10835
  686.                         PUSH bc
  687.                         LD BC,0xBD77 ;shadow ports and palette remain on
  688.                         JP 0x3D2F
  689.                 endif
  690.  
  691. ;TODO убрать в pgtrdos
  692. dos3d13_resident  ;=$-wasresident+resident
  693.  
  694. ;сейчас включена pg5
  695. ;iy=23610
  696.         ld (dos3d13_sp_st),sp
  697.         ld sp,trdos_sp ;надо стек в 0x4000+ (не пересекающийся с INTSTACK, т.к. сейчас может произойти системное прерывание), по умолчанию стек был в 0x3fxx
  698.         ;call swap_sysvars
  699.         ex af,af' ;'
  700.         call sys_SHADOFF ;включили ПЗУ
  701.                 ld (em3d13_de_st),de    ;push de ;e=gfxmode
  702.                  
  703.                 ;***************************** 
  704.                 ;call EM3D13PP;0x3d13
  705.                 ;собственно дpайвеp, аналогичный 0x3д13 (и с его использованием)
  706.                 ;на выходе - A pавно 0 - все окей, не 0 - ошибка
  707.                 ;вместо  пpоцедyp DRAW_WINDOWS, PRINT_WINDOWS и REST_WINDOW
  708.                 ;использyй свои.
  709.                 ;Kurleson
  710. ;EM3D13PP
  711.         ld      hl,em3d13pp_ret
  712.         push    hl
  713.         ld      (23613),sp
  714.         xor     a
  715.         ld (23801),a
  716.         ld      (23823),a
  717.         ld      (23824),a
  718.         ld hl,varbas_stor
  719.         ld de,0x5c4b
  720.         ld bc,32
  721.         ldir
  722.         if atm == 1
  723.                 xor a
  724.                 out (0xbf),a
  725.         endif
  726.         exx     ;pop hl,de,bc
  727.         ex af,af' ;'
  728.         jp      0x3D13
  729.  
  730. ONERR
  731.         ex      (sp),hl
  732.         push    af
  733.         ld a,(0x5d0f)
  734.         or a
  735.         jr nz,em3d13pp_ret
  736.         ld      a,h
  737.         cp      0x0d
  738.         jr      z,em3d13_error
  739. ONERR_NO
  740.         pop     af
  741.         ex      (sp),hl
  742.         ret
  743. em3d13_error  
  744.         ld      a,0xff
  745.         ld (0x5d0f),a
  746. em3d13pp_ret
  747.  
  748. em3d13_de_st=$+1
  749.     ld de,0     ;e=gfxmode
  750.         di
  751.     call shadon_pgsys ;выключили ПЗУ (неатомарно - две записи в порт!!!)
  752.         ei
  753.         ;call swap_sysvars
  754. dos3d13_sp_st=$+1       ;-wasresident+resident
  755.         ld sp,0
  756.         ld a,(0x5d0f)   ;возврат ошибки
  757.         ret
  758.  
  759.         if atm != 1
  760. NVRAM_REG=0xdf
  761. NVRAM_VAL=0xbf
  762. minmes  ;=$-wasresident+resident
  763.     ld h,a
  764.     xor a
  765.     srl h
  766.     rra
  767.     srl h
  768.     rra
  769.     srl h
  770.     rra
  771.     ret
  772.  
  773. bcd2bin  ;=$-wasresident+resident
  774.     ld bc,0xf7 + (NVRAM_REG<<8)
  775.     out (c),a
  776.     ld b,NVRAM_VAL
  777.     in a,(c)
  778.     ld b,a
  779.     and 0xf0
  780.     rra ;*8
  781.     ld c,a ;*8
  782.     rra ;*4
  783.     rra ;*2
  784.     add a,c ;*10
  785.     res 7,b
  786.     res 6,b
  787.     res 5,b
  788.     res 4,b
  789.     add a,b
  790.     ret
  791.    
  792. readtime  ;=$-wasresident+resident
  793. ;sp=0x7fxx
  794. ;e=gfxmode
  795. ;out: hl=date, de=time
  796. ;TODO атомарно
  797.         call sys_SHADOFF
  798.         LD A,e;0xa8;%10101000 ;320x200 mode
  799.         push af
  800.         ld bc,0xeff7
  801.         ld a,0x80
  802.         out (c),a
  803.         ;ld bc,0xf7 + (NVRAM_REG<<8)
  804.     ;ld a,0x0b
  805.     ;out (c),a
  806.     ;ld b,NVRAM_VAL
  807.     ;in a,(c)
  808.     ;or 0x04
  809.     ;out (c),a
  810.     xor a               ;sec
  811.     call bcd2bin
  812.     srl a
  813.     ld e,a
  814.    
  815.     ld a,2              ;min
  816.     call bcd2bin
  817.     call minmes
  818.     add a,e
  819.     ld e,a
  820.     ld d,h
  821.    
  822.     ld a,4              ;h
  823.     call bcd2bin
  824.     add a,a
  825.     add a,a
  826.     add a,a
  827.     add a,d
  828.     ld d,a
  829.    
  830.     ld a,7              ;day
  831.     call bcd2bin
  832.     ld l,a
  833.    
  834.     ld a,8              ;month
  835.     call bcd2bin
  836.     call minmes
  837.     add a,l
  838.     ld l,a
  839.    
  840.     ld a,9              ;year
  841.     call bcd2bin
  842.     add a,20
  843.     add a,a
  844.     add a,h
  845.     ld h,a
  846.         ld bc,0xeff7
  847.         xor a
  848.         out (c),a
  849.         pop af
  850.         jp shadon_pgsys_a
  851.                 endif
  852.  
  853.         ;disp $-wasresident+resident
  854.  
  855.                
  856.                 ds 100
  857. trdos_sp
  858. varbas_stor
  859.                 ds 32
  860.         ent
  861. resident_sz=$-wasresident
  862.         display "residentend=",resident+resident_sz,"<=",trdos_catbuf
  863.  
  864. wastrdosfs
  865.         disp COMMANDLINE;PROGSTART
  866. idle
  867.         db "idle",0
  868.         ds PROGSTART-$
  869.         include "idle.asm"
  870. idle_sz=$-idle
  871.         ent
  872.         disp 0x4000+idle+idle_sz
  873.         include "trdosfs.asm"
  874.         include "trdosio.asm"
  875.         include "bdospg2.asm"
  876.         ent
  877. trdosfs_sz=$-wastrdosfs
  878.         display "trdosfs_sz=",/h,trdosfs_sz,"<=0x1c00"
  879.        
  880. end
  881. wassys
  882.  
  883.         SLOT 0
  884.         page COMPILEPG_SYS0
  885.         SLOT 1
  886.         page COMPILEPG_SYS1
  887.         org 0x0000
  888. sysbegin
  889.         include "syskrnl.asm"
  890.        
  891.         display "$ before align=",syskrnl_end
  892.        if 1
  893.        macro SETHANDLER cmd,addr
  894.         org wastbdoscmds+cmd
  895.         db addr&0xff
  896.         org wastbdoscmds+256+cmd
  897.         db addr/256
  898.        endm
  899.  
  900.         ds 0xff&(-syskrnl_end)
  901. tbdoscmds=syskrnl_end+(0xff&(-syskrnl_end))
  902. wastbdoscmds
  903.         ds 256,BDOS_pop2fail&0xff
  904.         ds 256,BDOS_pop2fail/256
  905.        
  906.          SETHANDLER CMD_WRITEHANDLE,BDOS_writehandle
  907.          SETHANDLER CMD_WIZNETREAD,BDOS_wiznetread
  908.          SETHANDLER CMD_YIELDKEEP,BDOS_yieldkeep
  909.          SETHANDLER CMD_YIELD,BDOS_yield
  910.          SETHANDLER CMD_READHANDLE,BDOS_readhandle
  911.           SETHANDLER CMD_GETKEYMATRIX,BDOS_getkeymatrix
  912.           SETHANDLER CMD_GETTIMER,BDOS_gettimer
  913.           SETHANDLER CMD_CHECKPID,BDOS_checkpid
  914.           SETHANDLER CMD_SETSCREEN,BDOS_setscreen
  915.          SETHANDLER CMD_PRATTR,BDOS_prattr
  916.          SETHANDLER CMD_SETXY,BDOS_setxy
  917.          SETHANDLER CMD_SETCOLOR,BDOS_setcolor
  918.          SETHANDLER CMD_PRCHAR,BDOS_prchar
  919.          SETHANDLER CMD_GETATTR,BDOS_getattr
  920.         SETHANDLER CMD_SETDTA,BDOS_setdta;0x1a
  921.         SETHANDLER CMD_FOPEN,BDOS_fopen;0x0f
  922.         SETHANDLER CMD_FREAD,BDOS_fread;0x14
  923.         SETHANDLER CMD_FCLOSE,BDOS_fclose;0x10
  924.         SETHANDLER CMD_FDEL,BDOS_fdel;0x13 ;DEPRECATED!!!!!
  925.         SETHANDLER CMD_FCREATE,BDOS_fcreate;0x16
  926.         SETHANDLER CMD_FWRITE,BDOS_fwrite;0x15
  927.         SETHANDLER CMD_FSEARCHFIRST,BDOS_fsearchfirst;0x11
  928.         SETHANDLER CMD_FSEARCHNEXT,BDOS_fsearchnext;0x12
  929.         SETHANDLER CMD_OPENDIR,BDOS_opendir
  930.         SETHANDLER CMD_READDIR,BDOS_readdir
  931.         SETHANDLER CMD_SETDRV,BDOS_setdrv
  932.         SETHANDLER CMD_PARSEFNAME,BDOS_parse_filename;0x5c
  933.         SETHANDLER CMD_CHDIR,BDOS_chdir
  934.         SETHANDLER CMD_GETPATH,BDOS_getpath
  935.         SETHANDLER CMD_RUNAPP,BDOS_runapp
  936.         SETHANDLER CMD_NEWAPP,BDOS_newapp
  937.         SETHANDLER CMD_CLS,BDOS_cls
  938.         SETHANDLER CMD_SETGFX,BDOS_setgfx
  939.         SETHANDLER CMD_SETPAL,BDOS_setpal
  940.         SETHANDLER CMD_GETMAINPAGES,BDOS_getmainpages
  941.         SETHANDLER CMD_NEWPAGE,BDOS_newpage
  942.         SETHANDLER CMD_DELPAGE,BDOS_delpage
  943.         SETHANDLER CMD_MOUNT,BDOS_mount
  944.         SETHANDLER CMD_FREEZEAPP,BDOS_freezeapp
  945.         SETHANDLER CMD_MKDIR,BDOS_mkdir
  946.         SETHANDLER CMD_RENAME,BDOS_rename
  947.         SETHANDLER CMD_SETSYSDRV,BDOS_setsysdrv
  948.         ;SETHANDLER CMD_FWRITE_NBYTES,BDOS_fwrite_nbytes
  949.         SETHANDLER CMD_SCROLLUP,BDOS_scrollup
  950.         SETHANDLER CMD_SCROLLDOWN,BDOS_scrolldown
  951.         SETHANDLER CMD_OPENHANDLE,BDOS_openhandle
  952.         SETHANDLER CMD_CREATEHANDLE,BDOS_createhandle
  953.         SETHANDLER CMD_CLOSEHANDLE,BDOS_closehandle
  954.         SETHANDLER CMD_SEEKHANDLE,BDOS_seekhandle
  955.         SETHANDLER CMD_TELLHANDLE,BDOS_tellhandle
  956.         SETHANDLER CMD_SETFILETIME,BDOS_setfiletime
  957.         SETHANDLER CMD_GETFILETIME,BDOS_getfiletime
  958.         SETHANDLER CMD_GETTIME,BDOS_gettime
  959.         SETHANDLER CMD_GETXY,BDOS_getxy
  960.         SETHANDLER CMD_GETAPPMAINPAGES,BDOS_getappmainpages
  961.         SETHANDLER CMD_DROPAPP,BDOS_dropapp
  962.         SETHANDLER CMD_WIZNETOPEN,BDOS_wiznetopen
  963.         SETHANDLER CMD_WIZNETCLOSE,BDOS_wiznetclose
  964.         SETHANDLER CMD_WIZNETWRITE,BDOS_wiznetwrite
  965.         SETHANDLER CMD_GETFILESIZE,BDOS_getfilesize
  966.         SETHANDLER CMD_DELETE,BDOS_delete
  967.         SETHANDLER CMD_GETCHILDRESULT,BDOS_getchildresult
  968.         SETHANDLER CMD_SETWAITING,BDOS_setwaiting
  969.         SETHANDLER CMD_SETBORDER,BDOS_setborder
  970.         SETHANDLER CMD_READSECTORS,BDOS_readsectors
  971.         SETHANDLER CMD_WRITESECTORS,BDOS_writesectors
  972.         SETHANDLER CMD_SETMAINPAGE,BDOS_setmainpage
  973.         SETHANDLER CMD_SETMUSIC,BDOS_setmusic
  974.         SETHANDLER CMD_PLAYCOVOX,BDOS_playcovox
  975.         SETHANDLER CMD_GETSTDINOUT,BDOS_getstdinout
  976.         SETHANDLER CMD_SETSTDINOUT,BDOS_setstdinout
  977.         SETHANDLER CMD_HIDEFROMPARENT,BDOS_hidefromparent
  978.         SETHANDLER CMD_RNDRD,BDOS_rndrd
  979.         SETHANDLER CMD_RNDWR,BDOS_rndwr
  980.         SETHANDLER CMD_GETFILINFO,BDOS_getfilinfo
  981.         SETHANDLER CMD_RESERV_1,BDOS_reserv_1
  982.         SETHANDLER CMD_GETCONFIG,BDOS_get_config
  983.          
  984.          org wastbdoscmds+512
  985. trecode=tbdoscmds+512
  986.          
  987.        else
  988.  
  989. tbdoscmds=syskrnl_end
  990. wastbdoscmds
  991.          db CMD_WRITEHANDLE
  992.          db CMD_WIZNETREAD
  993.          db CMD_YIELDKEEP
  994.          db CMD_YIELD
  995.          db CMD_READHANDLE
  996.           db CMD_GETKEYMATRIX
  997.           db CMD_GETTIMER
  998.           db CMD_CHECKPID
  999.           db CMD_SETSCREEN
  1000.          db CMD_PRATTR
  1001.          db CMD_SETXY
  1002.          db CMD_SETCOLOR
  1003.          db CMD_PRCHAR
  1004.          db CMD_GETATTR
  1005.         db CMD_SETDTA;0x1a
  1006.         db CMD_FOPEN;0x0f
  1007.         db CMD_FREAD;0x14
  1008.         db CMD_FCLOSE;0x10
  1009.         db CMD_FDEL;0x13 ;DEPRECATED!!!!!
  1010.         db CMD_FCREATE;0x16
  1011.         db CMD_FWRITE;0x15
  1012.         db CMD_FSEARCHFIRST;0x11
  1013.         db CMD_FSEARCHNEXT;0x12
  1014.         db CMD_OPENDIR
  1015.         db CMD_READDIR
  1016.         db CMD_SETDRV
  1017.         db CMD_PARSEFNAME;0x5c
  1018.         db CMD_CHDIR
  1019.         db CMD_GETPATH
  1020.         db CMD_RUNAPP
  1021.         db CMD_NEWAPP
  1022.         db CMD_CLS
  1023.         db CMD_SETGFX
  1024.         db CMD_SETPAL
  1025.         db CMD_GETMAINPAGES
  1026.         db CMD_NEWPAGE
  1027.         db CMD_DELPAGE
  1028.         db CMD_MOUNT
  1029.         db CMD_FREEZEAPP
  1030.         db CMD_MKDIR
  1031.         db CMD_RENAME
  1032.         db CMD_SETSYSDRV
  1033.         ;db CMD_FWRITE_NBYTES
  1034.         db CMD_SCROLLUP
  1035.         db CMD_SCROLLDOWN
  1036.         db CMD_OPENHANDLE
  1037.         db CMD_CREATEHANDLE
  1038.         db CMD_CLOSEHANDLE
  1039.         db CMD_SEEKHANDLE
  1040.         db CMD_TELLHANDLE
  1041.         db CMD_SETFILETIME
  1042.         db CMD_GETFILETIME
  1043.         db CMD_GETTIME
  1044.         db CMD_GETXY
  1045.         db CMD_GETAPPMAINPAGES
  1046.         db CMD_DROPAPP
  1047.         db CMD_WIZNETOPEN
  1048.         db CMD_WIZNETCLOSE
  1049.         db CMD_WIZNETWRITE
  1050.         db CMD_GETFILESIZE
  1051.         db CMD_DELETE
  1052.         db CMD_GETCHILDRESULT
  1053.         db CMD_SETWAITING
  1054.         db CMD_SETBORDER
  1055.         db CMD_READSECTORS
  1056.         db CMD_WRITESECTORS
  1057.         db CMD_SETMAINPAGE
  1058.         db CMD_SETMUSIC
  1059.         db CMD_PLAYCOVOX
  1060.         db CMD_GETSTDINOUT
  1061.         db CMD_SETSTDINOUT
  1062.         db CMD_HIDEFROMPARENT
  1063.         db CMD_RNDRD
  1064.         db CMD_RNDWR
  1065.         db CMD_GETFILINFO
  1066.         db CMD_RESERV_1
  1067.         db CMD_GETCONFIG
  1068. nbdoscmds=$-wastbdoscmds
  1069.         dw BDOS_get_config
  1070.         dw BDOS_reserv_1
  1071.         dw BDOS_getfilinfo
  1072.         dw BDOS_rndwr
  1073.         dw BDOS_rndrd
  1074.         dw BDOS_hidefromparent
  1075.         dw BDOS_setstdinout
  1076.         dw BDOS_getstdinout
  1077.         dw BDOS_playcovox
  1078.         dw BDOS_setmusic
  1079.         dw BDOS_setmainpage
  1080.         dw BDOS_writesectors
  1081.         dw BDOS_readsectors
  1082.         dw BDOS_setborder
  1083.         dw BDOS_setwaiting
  1084.         dw BDOS_getchildresult
  1085.         dw BDOS_delete
  1086.         dw BDOS_getfilesize
  1087.         dw BDOS_wiznetwrite
  1088.         dw BDOS_wiznetclose
  1089.         dw BDOS_wiznetopen
  1090.         dw BDOS_dropapp
  1091.         dw BDOS_getappmainpages
  1092.         dw BDOS_getxy
  1093.         dw BDOS_gettime
  1094.         dw BDOS_getfiletime
  1095.         dw BDOS_setfiletime
  1096.         dw BDOS_tellhandle
  1097.         dw BDOS_seekhandle
  1098.         dw BDOS_closehandle
  1099.         dw BDOS_createhandle
  1100.         dw BDOS_openhandle
  1101.         dw BDOS_scrolldown
  1102.         dw BDOS_scrollup
  1103.         ;dw BDOS_fwrite_nbytes
  1104.         dw BDOS_setsysdrv
  1105.         dw BDOS_rename
  1106.         dw BDOS_mkdir
  1107.         dw BDOS_freezeapp
  1108.         dw BDOS_mount
  1109.         dw BDOS_delpage
  1110.         dw BDOS_newpage
  1111.         dw BDOS_getmainpages
  1112.         dw BDOS_setpal
  1113.         dw BDOS_setgfx
  1114.         dw BDOS_cls
  1115.         dw BDOS_newapp
  1116.         dw BDOS_runapp
  1117.         dw BDOS_getpath
  1118.         dw BDOS_chdir
  1119.         dw BDOS_parse_filename
  1120.         dw BDOS_setdrv
  1121.         dw BDOS_readdir
  1122.         dw BDOS_opendir
  1123.         dw BDOS_fsearchnext
  1124.         dw BDOS_fsearchfirst
  1125.         dw BDOS_fwrite
  1126.         dw BDOS_fcreate
  1127.         dw BDOS_fdel ;DEPRECATED!!!!!
  1128.         dw BDOS_fclose
  1129.         dw BDOS_fread
  1130.         dw BDOS_fopen
  1131.         dw BDOS_setdta
  1132.          dw BDOS_getattr
  1133.          dw BDOS_prchar
  1134.          dw BDOS_setcolor
  1135.          dw BDOS_setxy
  1136.          dw BDOS_prattr
  1137.           dw BDOS_setscreen
  1138.           dw BDOS_checkpid
  1139.           dw BDOS_gettimer
  1140.           dw BDOS_getkeymatrix
  1141.          dw BDOS_readhandle
  1142.          dw BDOS_yield
  1143.          dw BDOS_yieldkeep
  1144.          dw BDOS_wiznetread
  1145.          dw BDOS_writehandle
  1146. trecode=tbdoscmds+$-wastbdoscmds
  1147.        endif
  1148.  
  1149. ;TODO хранить прямо в текстовом экране? а если затрут, то восстанавливать? по какому событию?
  1150.         incbin "../_sdk/codepage/866toatm"
  1151.  
  1152. syscodesz=trecode+256-wassyscode
  1153.         display "syscodesz=",/h,syscodesz," < minstack=",/h,SYSMINSTACK
  1154.  
  1155. wasuserkernel
  1156.         disp 0x0000
  1157.         include "userkrnl.asm"
  1158.         ent
  1159. userkernel_sz=$-wasuserkernel
  1160.         ;display "wasuserkernel=",/d,wasuserkernel
  1161.         ;display "wasuserkernel_end=",/d,$
  1162.         ;display "userkernel_sz=",/d,userkernel_sz
  1163. ;wastjump
  1164. ;        include "tjump.asm"
  1165. ;tjump_sz=$-wastjump
  1166.         ds 0x4000-$
  1167.         incbin "../fatfs4os/fatfs.raw"
  1168. sysend
  1169.  
  1170.         ;display "begin=",/d,begin
  1171.         ;display "end=",/d,end
  1172.        
  1173.         ;display "sysbegin=",/d,sysbegin
  1174.         ;display "sysend=",/d,sysend
  1175.  
  1176.         SLOT 1
  1177.         page COMPILEPG_INIT
  1178.         savebin "initcode.c",begin,end-begin
  1179.        
  1180.         SLOT 0
  1181.         page COMPILEPG_SYS0
  1182.         SLOT 1
  1183.         page COMPILEPG_SYS1
  1184.         savebin "syscode.c",sysbegin,sysend-sysbegin
  1185.        
  1186.         LABELSLIST "..\..\us\user.l"
  1187.