?login_element?

Subversion Repositories NedoOS

Rev

Rev 1475 | Rev 1665 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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