maincode
;тючтЁрЄ т ёшёЄхьє
user_fdvalue1=$+1
ld a,fd_system
out (0xfd),a
;Єхъє∙шщ фшёъютюф (TODO?)
db 0
ds 0x0005-$ ;0 b
;т√чют ЇєэъЎшш ёшёЄхь√
user_fdvalue2=$+1
ld a,fd_system
out (0xfd),a
;getchar=0x0009 (ьюцэю rst 0x08)
user_fdvalue3=$+1
ld a,fd_system
out (0xfd),a
kernel_setpg
out (c),a
ret
ds 0x0010-$ ;0 b
;putchar=0x0010
ld e,a
user_fdvalue4=$+1
ld a,fd_system
out (0xfd),a
display "kernel_result_a=",$
kernel_result_a
ex af,af'
ret ;ьюцэю яхЁхэхёЄш т 0x0015
ds 0x0018-$ ;1 b
;setpg4000=0x0018
ld bc,memport4000
ld (curpg16k),a
jr kernel_setpg
ds 0x0020-$ ;0 b
;setpg8000=0x0020
ld bc,memport8000
ld (curpg32klow),a
jr kernel_setpg
ds 0x0028-$ ;0 b
;setpgc000=0x0028
ld bc,memportc000
ld (curpg32khigh),a
jr kernel_setpg
ds 0x0030-$ ;0 b
;farcall=0x0030
user_fdvalue5=$+1
ld a,fd_system
out (0xfd),a
ds 2
INTMICROSTACK ;2 срщЄр фю (ёЄхъ) ш 2 срщЄр яюёых (bc)
ds 2
;int=5112t (шч эшї 905t єёЄрэютър ярышЄЁ√, 2875t ўЄхэшх ъыртшрЄєЁ√)
ds 0x0038-$ ;0 b
ex de,hl ;de="hl", hl="de"
ex (sp),hl ;hl=рфЁхё т√їюфр, de="hl", т ёЄхъх "de"
;ld (intsp),sp ;ьюцэю єсЁрЄ№ ¤Єє юяхЁрЎш■ т kernelspace
ld (intjp),hl ;TODO яшёрЄ№ эх яЁ ью т intjp, р т яЁюьхцєЄюўэє■ ыюърЎш■ (шэрўх їтюёЄ юсЁрсюЄўшър эхы№ч ё ei - юэ ёрь эх ьюцхЄ ёьхэшЄ№ Ёхцшь юсЁрсюЄъш яЁхЁ√трэш яюёых jp)
ld l,a
user_fdvalue6=$+1
ld a,fd_system
out (0xfd),a ;14 b
;---------
;ld sp,INTSTACK
;(keep bc in MICROSTACK)
;...
;ld sp,INTMICROSTACK
;ld a,%0101s111;%0x01sx1x ;фы эхшёяЁртыхээюую └╥╠2 эрфю A9=1, р эюьхЁ ёЄЁрэшЎ√ т 0x7ffd эх сєфхЄ тыш Є№, хёыш рфЁхёрЎш яю memportc000
;out (0xfd),a
;---------
;ёхщўрё ёЄхъ INTSTACK (шэрўх эхы№ч т√чтрЄ№ rst)
init_resident
;sp=INTMICROSTACK
;bc=memport0000
;d=pgmain
;e=чэрўхэшх фы ръъєьєы ЄюЁр
;di
out (c),d
curpg16k=$+1
ld a,0;pgmain4000
SETPG16K ;rst ;ўЄюс√ шэырщэшЄ№, эрфю 9 срщЄ ыш°эшї, р є эрё Єюы№ъю 5 (6?)
curpg32klow=$+1
ld a,0;pgmain8000
SETPG32KLOW ;rst
curpg32khigh=$+1
ld a,0;pgmainc000
SETPG32KHIGH ;rst
pop bc
intsp=$+1
ld sp,0xfffe;STACK-2 ;Єрь de ;эхы№ч т kernelspace, Є.ъ. тыюцхээюх яЁхЁ√трэшх чряюЁЄшЄ ёЄхъ! ш de єцх фюыцэю с√Є№ яЁшётюхэю
ld a,e
pop de ;TODO ld de, яЁшў╕ь яхЁхф ld sp, шэрўх тыюцхээюх яЁхЁ√трэшх чряюЁЄшЄ ёЄхъ!
ei ;TODO т kernelspace (ўЄюс√ фхырЄ№ yield ё тъы■ўхээ√ьш яЁхЁ√трэш ьш), ъюуфр ЄєЄ сєфхЄ ёюїЁрэхэшх intsp, intjp ўхЁхч яЁюьхцєЄюўэє■ ыюърЎш■, р т kernelspace сєфхЄ ь№■Єхъё
intjp=$+1
jp 0x0100 ;main_go ;18+2 b
display "end of user kernel=",$