Subversion Repositories NedoOS

Rev

Rev 95 | Rev 115 | 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. TOPDOWNMEM=1
  6.  
  7.         if atm==3
  8. memport0000=#37f7
  9. memport4000=#77f7
  10. memport8000=#b7f7
  11. memportc000=#f7f7
  12. memportrom0000=#3ff7
  13. memportrom4000=#7ff7
  14. memportrom8000=#bff7
  15. memportromc000=#fff7
  16. pagexor=#ff
  17.         else
  18. memport0000=#3ff7
  19. memport4000=#7ff7
  20. memport8000=#bff7
  21. memportc000=#fff7
  22. memportrom0000=#3ff7
  23. memportrom4000=#7ff7
  24. memportrom8000=#bff7
  25. memportromc000=#fff7
  26. pagexor=#7f
  27.         endif
  28.        
  29.         if NEMOIDE==1
  30. ;ёїхьр Nemo:
  31. hddstat=#F0
  32. hddcmd=#F0
  33. hddhead=#D0
  34. hddcylhi=#B0
  35. hddcyllo=#90
  36. hddsec=#70
  37. hddcount=#50
  38. hdderr=#30
  39. hdddatlo=#10
  40. hdddathi=#11
  41. hddupr=#C8
  42. hdduprON=0
  43.         else
  44. ;ёїхьр ATM:
  45. hddstat=#FEEF
  46. hddcmd=#FEEF
  47. hddhead=#FECF
  48. hddcylhi=#FEAF
  49. hddcyllo=#FE8F
  50. hddsec=#FE6F
  51. hddcount=#FE4F
  52. hdderr=#FE2F
  53. hdddatlo=#FE0F
  54. hdddathi=#FF0F
  55. hddupr=#FEBE ;яЁш єёЄрэютыхээюь b7 FFBA
  56. hdduprON=#FFBA
  57. hddupr1=#F7
  58. hddupr0=#77
  59.         endif
  60. memport8000_hi=memport8000/256
  61. memportc000_hi=memportc000/256
  62.  
  63. SYSMINSTACK=0x3b00
  64.  
  65. resident=0x6000;#6000+8000 (уфх эх чрЄЁєЄ яЁш юўшёЄъх ¤ъЁрэр) ;pgtrdosfs
  66. trdos_catbuf=0x6300;#3200 ;,#900 ;pgtrdosfs (#4000)
  67. trdos_sectorbuf=0x6c00
  68. trdos_fcbbuf=0x6d00 ;size=0x200*trdos_MAXFILES
  69. trdos_MAXFILES=8
  70. INTSTACK1=0x3f00 ;kernelspace (фы  тїюфр т юсЁрсюЄўшъ схч яюЁўш ёЄхър)
  71. INTSTACK2=0x5f00;#6000 ;pgkillable ш pgtrdosfs (Ёрсюўшщ ёЄхъ юсЁрсюЄўшър яЁхЁ√трэшщ) (>=#4000, шэрўх эхы№ч  т√ъы■ўшЄ№ Єхэхт√х яюЁЄ√)
  72. TRDOSSTACK=0x5f00-96;#6000-96 ;ўЄюс√ эх яхЁхёхърыюё№ ё INTSTACK (т яЁюьхцєЄъх ьхцфє яЁхъы■ўхэш ьш ёЄЁрэшЎ ьюцхЄ яЁюшчющЄш ёшёЄхьэюх яЁхЁ√трэшх), эю ш эр ¤ъЁрэ эх яюярыю
  73. BDOSSTACK=0x4000 ;kernelspace
  74. STACK=0x4000 ;userspace
  75. ;яЁш т√чютх BDOS ёЄхъ эхъюЄюЁюх тЁхь  Єръющ цх, ъръ т ■чхЁёяхщёх
  76. ;яю¤Єюьє эр тїюфх т BDOS эрфю шьхЄ№ т #4000...#ffff ёЄЁрэшЎ√, ъюЄюЁ√х эх црыъю
  77. ;яЁхфяюырурхЄё , ўЄю ■чхЁ эх шьххЄ ёЄхъ эшцх #3b00, шэрўх юэ чрЄЁ╕Є ёшёЄхьє
  78.  
  79.         include "../_sdk/sys_h.asm"
  80.  
  81.         if TOPDOWNMEM
  82. pgtrdosfs=pagexor-(sys_npages-1)
  83. pgfatfs=pagexor-(sys_npages-2)
  84. pgsys=pagexor-(sys_npages-3)
  85.         else
  86. pgtrdosfs=pagexor-8
  87. pgfatfs=pagexor-9
  88. pgsys=pagexor-10
  89.         endif
  90.  
  91. pgkillable=pagexor-4 ;т 128K ярь Єш, Є.ъ. ьюцэю яюЁЄшЄ№
  92. ;pgfirstfree=pagexor-11
  93.  
  94. pgscr0_0=pagexor-1
  95. pgscr0_1=pagexor-5
  96. pgscr1_0=pagexor-3
  97. pgscr1_1=pagexor-7
  98.  
  99. fd_system=%01010111 ;%0x01sx1x ;фы  эхшёяЁртыхээюую └╥╠2 эрфю A9=1, р эюьхЁ ёЄЁрэшЎ√ т #7ffd эх сєфхЄ тыш Є№, хёыш рфЁхёрЎш  яю memportc000
  100. fd_system_getchar=%01010110 ;%0x01sx1x ;фы  эхшёяЁртыхээюую └╥╠2 эрфю A9=1, р эюьхЁ ёЄЁрэшЎ√ т #7ffd эх сєфхЄ тыш Є№, хёыш рфЁхёрЎш  яю memportc000
  101. fd_user=%01000111 ;%0x00sx1x ;фы  эхшёяЁртыхээюую └╥╠2 эрфю A9=1, р эюьхЁ ёЄЁрэшЎ√ т #7ffd эх сєфхЄ тыш Є№, хёыш рфЁхёрЎш  яю memportc000
  102.  
  103. ;єёыютэ√х ёЄЁрэшЎ√ фы  sjasm
  104. COMPILEPG_INIT=0
  105. COMPILEPG_SYS0=4;10
  106. COMPILEPG_SYS1=6;11
  107.  
  108.         SLOT 1
  109.         page COMPILEPG_INIT
  110.         org #6000
  111. begin
  112.         xor a
  113.         out (#fe),a
  114.  
  115.         LD (IY+1),#CC
  116.  
  117.         if 1==0
  118.        ;IFN em3d13
  119.        ; LD HL,ONERR
  120.        ; LD (23747),HL
  121.        ;ENDIF
  122.        LD A,(23833)
  123.        ADD A,"A
  124.       LD (src),A
  125.       LD (dst),A
  126.       XOR A
  127.       LD (23658),A ;#5c6a
  128.      ;LD L,A,H,L
  129.      ;LD (23802),HL
  130.        endif
  131.       XOR A
  132.         ld (#5d10),a
  133.        
  134.        ;ld hl,#c9f1 ;pop af:ret
  135.        ;ld (#5cc2),hl
  136.        
  137.        ld bc,#fbdf ;x
  138.        in l,(c)
  139.        ld b,#ff
  140.        in h,(c)
  141.        ld (init_oldmousecoords),hl
  142.  
  143. ;;;;;;;;;;;;;;;;;;; set gfx mode ;;;;;;;;;;;;;;;;;
  144.        halt
  145.        LD A,%10101000 ;320x200 mode
  146.        ;LD A,%10101010 ;640x200 mode
  147.        ;LD A,%10101110 ;textmode
  148.        CALL INIT_OUTSHADON
  149.        
  150.        call INIT_blackpal
  151.  
  152.        di
  153.  
  154.        if atm==3
  155.         ld a,#7f-5
  156.         ld bc,memportrom4000
  157.         out (c),a ;юЄъы■ўрхь 7ffd
  158.         ld a,#7f-2
  159.         ld bc,memportrom8000
  160.         out (c),a ;юЄъы■ўрхь 7ffd
  161.         ;ld a,#7f-2
  162.         ld bc,memportromc000
  163.         out (c),a ;юЄъы■ўрхь 7ffd
  164.        endif
  165.  
  166.        call findpgdos
  167.         ld lx,a
  168.        ld (sys_pgdos),a ;фю єёЄрэютъш ЁхчшфхэЄр
  169.  
  170.        ld a,pgsys
  171.        call INIT_setpg_c000
  172.        ld hl,#8000
  173.        ld de,#c000
  174.        ld bc,#4000
  175.        ldir
  176.        
  177.        ld a,pgtrdosfs
  178.        call INIT_setpg_c000
  179.        ld hl,wastrdosfs
  180.        ld de,#c000+idle;COMMANDLINE;PROGSTART ;idle code
  181.        ld bc,trdosfs_sz
  182.        ldir
  183.        ld hl,#5c00
  184.        ld de,#c000+#1c00
  185.        ld bc,#0400;#5d3b-#5c00
  186.        ldir
  187.        ld hl,wasresident
  188.        ld de,resident+#c000-#4000
  189.        ld bc,resident_sz
  190.        ldir
  191.        
  192.        ld hl,#c000+trdos_fcbbuf-#4000
  193.        ld d,h
  194.        ld e,l
  195.        inc de
  196.        ld bc,0x200*trdos_MAXFILES-1
  197.        ld (hl),l;0
  198.        ldir
  199.  
  200.        ;ld a,pgidle
  201.        ;call INIT_setpg_c000
  202.        ;ld hl,wasidle
  203.        ;ld de,#0100+#c000
  204.        ;ld bc,idle_sz
  205.        ;ldir
  206.        
  207.        ld a,pgsys
  208.        call INIT_setpg_8000
  209.        ld a,pgfatfs
  210.        call INIT_setpg_c000
  211.        
  212. ;яхЁхсЁрё√трхь 16K єяръютрээ√щ сыюъ т #c000
  213.        ld hl,wassys+#3fff
  214.        ld de,#ffff
  215.        ld bc,#4000
  216.        lddr
  217. ;Ёрёяръют√трхь т #6400
  218.        ld hl,#c000;wassys
  219.        ld de,#6400;#8000
  220.        call DEC40 ;Ёрёяръют√трхь т #8000 (Єрь єцх тъы■ўхэ√ ёшёЄхьэ√х ёЄЁрэшўъш)
  221. ;яхЁхсЁрё√трхь 32K шч #6400 т #8000
  222.        ld hl,#6400+#7fff
  223.        ld de,#8000+#7fff
  224.        ld bc,#8000
  225.        lddr
  226.  
  227. fatfspatchaddr=#c000
  228.        
  229.        ld hl,devices_init
  230.        ld (0xc000+0),hl
  231.        ld hl,devices_read
  232.        ld (0xc000+2),hl
  233.        ld hl,devices_write
  234.        ld (0xc000+4),hl
  235.        ld hl,disk_status
  236.        ld (0xc000+6),hl
  237.        ld hl,get_fattime
  238.        ld (0xc000+8),hl
  239.  
  240. ;шэшЎшрышчрЎш  ьхэхфцхЁр ярь Єш ш тїюф т ■чхЁёяхщё:
  241. ;HALT (ўЄюс√ яЁхЁ√трэшх эх яЁюшчю°ыю ъюуфр эх эрфю)
  242. ;[эрчэрўрхь ёЄЁрэшЎ√ ёшёЄхьёяхщёр (юфэр шч эшї фюыцэр с√Є№ Єрър  цх, ъръ т ■чхЁёяхщёх) - єцх хёЄ№ юс∙р  ёЄЁрэшЎр 5]
  243. ;т ■чхЁёяхщёх эрчэрўрхь эшцэ■■ ёЄЁрэшЎє ё ъхЁэрыхь (тьхёЄю ╧╟╙)
  244.        ld a,fd_user
  245.        out (#fd),a
  246.        if atm==3
  247.         ld a,#7f
  248.         ld bc,memportrom0000
  249.         out (c),a ;юЄъы■ўрхь ╧╟╙
  250.         ld a,#7f-5
  251.         ld bc,memportrom4000
  252.         out (c),a ;юЄъы■ўрхь 7ffd
  253.         ld a,#7f-2
  254.         ld bc,memportrom8000
  255.         out (c),a ;юЄъы■ўрхь 7ffd
  256.         ;ld a,#7f-2
  257.         ld bc,memportromc000
  258.         out (c),a ;юЄъы■ўрхь 7ffd
  259.        endif
  260.        ld a,pgtrdosfs ;idle
  261.        ld bc,memport0000
  262.        out (c),a
  263.        
  264.        ;ld hl,wasuserkernel+#8000
  265.        ;ld de,0
  266.        ;ld bc,userkernel_sz
  267.        ;ldir
  268.        
  269.        ld a,fd_system
  270.        out (#fd),a
  271.        if atm==3
  272.         ld a,#7f
  273.         ld bc,memportrom0000
  274.         out (c),a ;юЄъы■ўрхь ╧╟╙
  275.         ;4000,8000,c000 єцх юЄъы■ўшыш 7ffd т√°х
  276.        endif
  277.        ld a,pgsys
  278.        ld bc,memport0000
  279.        out (c),a
  280. ;т ёшёЄхьёяхщёх:
  281. ;тъы■ўшЄ№ fatfs
  282. ;яюёЄртшЄ№ ЁхчшфхэЄ т 7fxx
  283. ;яхЁхїюфшь т sys_intq, р юЄЄєфр т init_resident
  284.  
  285.        if 1==0
  286.        ld a,lx;(sys_pgdos)
  287.        ld bc,memportrom0000
  288.        out (c),a
  289.        LD A,%10101000 ;320x200 mode
  290.         ld bc,#ff77 ;shadow ports off, palette off
  291.        out (c),a
  292.        ld a,1
  293.        ld c,1
  294.        call #3d13
  295.        ld c,#18
  296.        call #3d13
  297.        ld hl,#c000
  298.        ld de,#0000
  299.        ld bc,#0805
  300.        call #3d13
  301.        jr $
  302.        endif
  303.  
  304.        ld sp,BDOSSTACK
  305.        ;ei
  306.        ;halt ;ўЄюс√ яЁхЁ√трэшх эх яЁюшчю°ыю ъюуфр эх эрфю
  307.        ;di
  308.        ;jr $
  309. init_oldmousecoords=$+1
  310.        ld hl,0
  311.        ld (sys_oldmousecoords),hl
  312.        jp setkernelpages_go
  313.  
  314.        
  315. INIT_OUTSHADON
  316.        ;LD BC,#FF77 ;shadow ports remain off
  317.        LD BC,#BD77 ;shadow ports and palette remain on
  318.        LD IX,10835
  319.        PUSH IX
  320.        JP #3D2F
  321.  
  322. INIT_setpg_low
  323.        LD BC,memportrom0000 ;page for #0000..#3fff
  324.        OUT (C),A
  325.        ret
  326.  
  327. INIT_setpg_8000
  328.        LD BC,memport8000 ;page for #8000..#bfff
  329.        OUT (C),A
  330.        ret
  331.  
  332. INIT_setpg_c000
  333.        LD BC,memportc000 ;page for #c000..#ffff
  334.        OUT (C),A
  335.        ret
  336.  
  337. findpgdos
  338. ;хёыш эх эрщЄш ёЄЁрэшЎє Єхъє∙хую фюёр, Єю эр ёЄрЁ√ї тхЁёш ї ╧╟╙ ZX Evo эх сєфхЄ ЁрсюЄрЄ№ (т ёЄЁрэшЎх #83 яюўхьє-Єю эх фюё яю єьюыўрэш■)
  339.        call crcdos
  340.        ld (doscrchi),de
  341.        ld (doscrclo),bc
  342.        ld lx,#83
  343. findpgdos0
  344.        ld a,lx
  345.        call INIT_setpg_low
  346.        call crcdos
  347. doscrchi=$+1
  348.        ld hl,0
  349.        or a
  350.        sbc hl,de
  351.        jr nz,doscrcbad
  352. doscrclo=$+1
  353.        ld hl,0
  354.        or a
  355.        sbc hl,bc
  356.        jr nz,doscrcbad
  357.        ld a,lx
  358.        ret
  359. doscrcbad
  360.        ld a,lx
  361.        add a,4
  362.        ld lx,a
  363.        cp #c0
  364.        jr c,findpgdos0
  365.        ld a,#83 ;not found
  366.        ret
  367. crcdos
  368.        ld hl,#0000
  369.        ld bc,0
  370.        ld de,0
  371. crcdos0
  372.        ld a,d
  373.        add a,a
  374.        rl c
  375.        rl b
  376.        rl e
  377.        rl d
  378.        xor b
  379.        ld b,a
  380.        ld a,(hl)
  381.        xor c
  382.        ld c,a
  383.        inc hl
  384.        bit 6,h
  385.        jr z,crcdos0
  386.        ret
  387.  
  388. INIT_blackpal
  389.        LD HL,blackpalend
  390.        ;halt ;halt хёЄ№ т√°х - єсЁрэю, ўЄюс√ эх ётхЄшыюё№ эшўхую
  391.        LD DE,#a80f ;#ab=6912 ;palette on, EGA, turbo
  392.        LD BC,#BD77
  393.        OUT (C),D
  394. INIT_setpal0 LD A,E
  395.         and 7
  396.        BIT 3,E
  397.        OUT (#FE),A
  398.        JR Z,$+4
  399.        OUT (#F6),A
  400.        LD A,(HL)
  401.        DEC HL
  402.        ld b,(hl) ;DDp palette low bits
  403.        dec hl
  404.        ld c,#ff
  405.        OUT (c),a;(#FF),A
  406.        DEC E
  407.        JP P,INIT_setpal0
  408.        ret
  409.  
  410.        ds 32,#f3
  411. blackpalend=$-1
  412.  
  413.        include "unmegalz.asm" ;DEC40
  414.  
  415. wasresident
  416.        ;disp resident
  417. readmouse=$-wasresident+resident
  418. ;sp=#7fxx
  419. ;e=gfxmode
  420. ;out: hl=mousecoords, d=mousebuttons
  421.        call sys_SHADOFF
  422.        ld bc,#fadf ;buttons
  423.        in d,(c)
  424.        inc b ;ld bc,#fbdf ;x
  425.        in l,(c)
  426.        ld b,#ff ;y
  427.        in h,(c)
  428. shadon_pgsys=$-wasresident+resident
  429.        LD A,e;%10101000 ;320x200 mode
  430. shadon_pgsys_a=$-wasresident+resident
  431.        CALL sys_SHADON
  432.         if atm==3
  433.        ld a,#7f
  434.        call sys_setpg_low
  435.        ld a,pgsys
  436.         ld bc,memport0000
  437.        jr sys_outca_jr
  438.         else
  439.        ld a,#7f-(pagexor-pgsys)
  440.         endif
  441. sys_setpg_low=$-wasresident+resident
  442.         ld bc,memportrom0000
  443.        jr sys_outca_jr
  444. sys_SHADOFF=$-wasresident+resident
  445. sys_pgdos=$+1 ;фы  ярЄўр
  446.         ld a,#83 ;48 basic switchable to DOS
  447.         call sys_setpg_low
  448.        LD A,e;%10101000 ;320x200 mode
  449.         ld bc,#ff77 ;shadow ports off, palette off
  450. sys_outca_jr
  451.        out (c),a
  452.         ret
  453. sys_SHADON=$-wasresident+resident
  454.        LD bc,10835
  455.        PUSH bc
  456.        LD BC,#BD77 ;shadow ports and palette remain on
  457.        JP #3D2F
  458.  
  459. ;TODO єсЁрЄ№ т pgtrdos
  460. dos3d13_resident=$-wasresident+resident
  461. ;ёхщўрё тъы■ўхэр pg5
  462. ;iy=23610
  463.        ld (dos_sp),sp
  464.        ld sp,TRDOSSTACK ;эрфю ёЄхъ т #4000+ (эх яхЁхёхър■∙шщё  ё INTSTACK, Є.ъ. ёхщўрё ьюцхЄ яЁюшчющЄш ёшёЄхьэюх яЁхЁ√трэшх), яю єьюыўрэш■ ёЄхъ с√ы т #3fxx
  465.        ;call swap_sysvars
  466.        ex af,af'
  467.        call sys_SHADOFF ;тъы■ўшыш ╧╟╙
  468.        ex af,af'
  469.         push de ;e=gfxmode
  470.        exx
  471.         call EM3D13PP;0x3d13
  472.         pop de ;e=gfxmode
  473.        call shadon_pgsys ;т√ъы■ўшыш ╧╟╙
  474.        ;call swap_sysvars
  475. dos_sp=$+1-wasresident+resident
  476.        ld sp,0
  477.        ret
  478.  
  479. minmes=$-wasresident+resident
  480.    ld h,a
  481.    xor a
  482.    srl h
  483.    rra
  484.    srl h
  485.    rra
  486.    srl h
  487.    rra
  488.    ret
  489.  
  490. bcd2bin=$-wasresident+resident
  491.    ld b,0xdf
  492.    out (c),a
  493.    ld b,0xbf
  494.    in a,(c)
  495.    ret
  496.    
  497. readtime=$-wasresident+resident
  498. ;sp=#7fxx
  499. ;e=gfxmode
  500. ;out: hl=date, de=time
  501. ;TODO рЄюьрЁэю
  502.        call sys_SHADOFF
  503.        LD A,e;%10101000 ;320x200 mode
  504.        push af
  505.      ld bc,0xeff7
  506.      ld a,0x80
  507.      out (c),a
  508.    ld a,0x0b
  509.    ld bc,0xdff7
  510.    out (c),a
  511.    ld b,0xbf
  512.    in a,(c)
  513.    or 0x04
  514.    out (c),a
  515.     xor a               ;sec
  516.    call bcd2bin
  517.    srl a
  518.    ld e,a
  519.    
  520.     ld a,2              ;min
  521.    call bcd2bin
  522.    call minmes
  523.    add a,e
  524.    ld e,a
  525.    ld d,h
  526.    
  527.     ld a,4              ;h
  528.    call bcd2bin
  529.    add a,a
  530.    add a,a
  531.    add a,a
  532.    add a,d
  533.    ld d,a
  534.    
  535.     ld a,7              ;day
  536.    call bcd2bin
  537.    ld l,a
  538.    
  539.     ld a,8              ;mes
  540.    call bcd2bin
  541.    call minmes
  542.    add a,l
  543.    ld l,a
  544.    
  545.     ld a,9              ;god
  546.    call bcd2bin
  547.    add a,20
  548.    add a,a
  549.    add a,h
  550.    ld h,a
  551.      ld bc,0xeff7
  552.      xor a
  553.      out (c),a
  554.  
  555.        pop af
  556.        jp shadon_pgsys_a
  557.  
  558.         disp $-wasresident+resident
  559. ;ёюсёЄтхээю фpрщтхp, рэрыюушўэ√щ #3ф13 (ш ё хую шёяюы№чютрэшхь)
  560. ;эр т√їюфх - A pртэю 0 - тёх юъхщ, эх 0 - ю°шсър
  561. ;тьхёЄю  яpюЎхфyp DRAW_WINDOWS, PRINT_WINDOWS ш REST_WINDOW
  562. ;шёяюы№чyщ ётюш.
  563. ;Kurleson
  564. EM3D13PP
  565.        PUSH    HL
  566.        LD      HL,(23613)
  567.        LD      (eRR),HL
  568.       LD      HL,ONERR;DDRV
  569.       LD      (#5CC3),HL
  570.        LD      HL,ERR
  571.        EX      (SP),HL
  572.        LD      (23613),SP
  573.        EX      AF,AF'
  574. ;AC3=$+1
  575.        LD      A,#C3
  576.        LD      (#5CC2),A
  577.        XOR     A
  578.        LD      (23823),A
  579.        LD      (23824),A
  580.        LD      (eRR2),A
  581.        EX      AF,AF'
  582.        PUSH BC,DE,HL
  583.        LD HL,0x5e00;5f00
  584.        LD DE,SYSBUF
  585.        LD BC,256
  586.        LDIR
  587.        POP HL,DE,BC
  588. EMCALL  JP      #3D13
  589. ERR
  590. eRR=$+1
  591.        LD      HL,#0000
  592.        LD      (23613),HL ;??? eRR цх эх ьхэ хЄё  ???
  593.        LD      A,#C9
  594.        LD      (#5CC2),A
  595.        LD DE,0x5e00;5f00
  596.        LD HL,SYSBUF
  597.        LD BC,256
  598.        LDIR
  599. eRR2=$+1
  600.        LD      A,#00
  601.        OR      A
  602.        RET     NZ
  603.        LD      A,(23823)
  604.        AND     A
  605.        RET     Z
  606.        PUSH    AF
  607.       LD A,2
  608.       OUT (-2),A
  609.       ;PUSH    IX
  610.  
  611.       ;LD      IX,DISKERROR_TBL ;чфхё№ y ьхэ  pшёyхЄё  юъэю
  612.       ;CALL    DRAW_WINDOWS     ;ё эрфяшё№■ DISK ERROR
  613.       ;CALL    PRINT_WINDOWS
  614.        XOR     A
  615.        IN      A,(#FE)
  616.        CPL
  617.        AND     #1F
  618.        JR      Z,$-6             ;эрцрЄр ыш ъэюяър
  619.       ;CALL    REST_WINDOW       ;тюёЄрэютшыш Єю, ўЄю с√ыю яюф
  620.       ;POP     IX                ;юъэюь
  621.       XOR A
  622.       OUT (-2),A
  623.       ;CALL OLDRV
  624.        POP     AF
  625.        RET
  626. ONERR
  627.        EX      (SP),HL
  628.        PUSH    AF
  629.        LD      A,H
  630.        CP      #0D
  631.        JR      Z,ERROR
  632.        POP     AF
  633.        EX      (SP),HL
  634.        RET
  635. ERROR   POP     HL
  636.        POP     HL     ;┼╤╦╚ L=#D8, ╥╬        READ ONLY
  637.                       ;╚H└╫┼ DISK ERROR
  638.        POP     HL
  639.        POP     HL
  640.        POP     HL
  641.       LD A,2
  642.       OUT (-2),A
  643.       ;PUSH    IX
  644.       ;LD      IX,SAVELOADERROR_TBL ;чфхё№ юъэю
  645.       ;CALL    DRAW_WINDOWS      ;LOAD/SAVE ERROR
  646.       ;CALL    PRINT_WINDOWS     ;ABORT/RETRY/IGNORE
  647.                                  ;шэЇy ю Єpхъх/ёхъЄюpх ьюцэю
  648.                                  ;тч Є№ шч (#5CF4)
  649.  
  650. ERROR0  LD      A,#FB        ;яpютхp хь эрцрЄшх ъыртш° R,A,I
  651.        IN      A,(#FE)
  652.        LD      C,"R"
  653.        BIT     3,A
  654.        JR      Z,ERROR1
  655.        LD      C,"A"
  656.        LD      A,#FD
  657.        IN      A,(#FE)
  658.        RRA
  659.        JR      NC,ERROR1
  660.        LD      C,"I"
  661.        LD      A,#DF
  662.        IN      A,(#FE)
  663.        BIT     2,A
  664.        JR      NZ,ERROR0
  665. ERROR1  LD      A,C
  666.        CP      "A"
  667.        JR      NZ,$+7
  668.        LD      A,#FF
  669.        LD      (eRR2),A
  670.       ;PUSH    AF
  671.       ;CALL    REST_WINDOW     ;тюёЄрэртыштрхь Єю, ўЄю с√ыю
  672.                                ;яюф LOAD/SAVE ERROR юъэюь
  673.       XOR A
  674.       OUT (-2),A
  675.       ;POP     AF
  676.       ;POP     IX
  677.        LD      HL,#3F7E
  678.        EX      (SP),HL
  679.        JP       #3D2F
  680. SYSBUF
  681.         ds 256
  682.  
  683.        ent
  684. resident_sz=$-wasresident
  685.        display "residentend=",resident+resident_sz,"<=",trdos_catbuf
  686.  
  687. wastrdosfs
  688.        disp COMMANDLINE;PROGSTART
  689. idle
  690.        db "idle",0
  691.        ds PROGSTART-$
  692.        include "idle.asm"
  693. idle_sz=$-idle
  694.        ent
  695.        disp #4000+idle+idle_sz
  696.        include "trdosfs.asm"
  697.        include "trdosio.asm"
  698.        include "bdospg2.asm"
  699.        ent
  700. trdosfs_sz=$-wastrdosfs
  701.        display "trdosfs_sz=",/h,trdosfs_sz,"<=#1c00"
  702.        
  703. end
  704. wassys
  705.  
  706.        SLOT 0
  707.        page COMPILEPG_SYS0
  708.        SLOT 1
  709.        page COMPILEPG_SYS1
  710.        org #0000
  711. sysbegin
  712.        include "syskrnl.asm"
  713. wasuserkernel
  714.        disp #0000
  715.        include "userkrnl.asm"
  716.        ent
  717. userkernel_sz=$-wasuserkernel
  718.         ;display "wasuserkernel=",/d,wasuserkernel
  719.         ;display "wasuserkernel_end=",/d,$
  720.         ;display "userkernel_sz=",/d,userkernel_sz
  721.        ds #4000-$
  722.        incbin "../fatfs4os/fatfs.raw"
  723. sysend
  724.  
  725.         ;display "begin=",/d,begin
  726.         ;display "end=",/d,end
  727.        
  728.         ;display "sysbegin=",/d,sysbegin
  729.         ;display "sysend=",/d,sysend
  730.        
  731.        SLOT 1
  732.        page COMPILEPG_INIT
  733.         savebin "initcode.c",begin,end-begin
  734.        
  735.        SLOT 0
  736.        page COMPILEPG_SYS0
  737.        SLOT 1
  738.        page COMPILEPG_SYS1
  739.         savebin "syscode.c",sysbegin,sysend-sysbegin
  740.        
  741.         LABELSLIST "user.l"
  742.