Login

Subversion Repositories NedoOS

Rev

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

        DEVICE ZXSPECTRUM128
        include "../_sdk/sys_h.asm"

        org PROGSTART
cmd_begin
        ld sp,0x4000
       
        ld e,3 ;6912
        OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
        YIELD ;set palette

        ;OS_GETSCREENPAGES
;de=pages of screen 0 (d=higher page), hl=pages of screen 1 (h=higher page)
        ld a,(user_scr0_low) ;ok
        ld (cmdpgscreen0_0),a

hobetarunner=0x4100
        ld a,(cmdpgscreen0_0)
        sub 4-1 ;ld a,0xff-4 ;pgkillable
        SETPG16K

        ld hl,washobetarunner
        ld de,hobetarunner
        ld bc,hobetarunner_sz
        ldir
cmdpgscreen0_0=$+1
        ld a,0xff-1
        SETPG32KLOW
        inc a ;ld a,0xff-0
        SETPG32KHIGH

        ;call loadhobeta
        ;ret nz ;error
        ;ld hl,0x6000
        ;ld bc,(0x6000-17+11) ;len
        ;add hl,bc
        ;dec hl ;hl=load end
        ;ex de,hl
        ;ld hl,(0x6000-17+9) ;start
        ;ld (hobetarunner_jp),hl
        ;add hl,bc
        ;dec hl
        ;ex de,hl ;de=destination end
        ;lddr
        jp hobetarunner

washobetarunner
;pgsys=pagexor-10
;pgfatfs=pagexor-9
;pgtrdosfs=pagexor-8
;pgkillable=pagexor-4 ;в 128K памяти, т.к. можно портить
        disp hobetarunner ;in pgkillable
;$c loaded in pages 4,1,0
;only ATM2 ports here!
        di
        ld a,0x7f-5
        ld bc,0xbff7
        out (c),a
        ld a,0x7f-4
        ld bc,0xfff7
        out (c),a
        ld hl,0xc000
        ld de,0x8000
        ld bc,0x4000
        ldir ;pg4 -> pg5
        ld a,0x7f-8;pgtrdosfs
        ld bc,0xfff7
        out (c),a
        ld hl,0x1c00+0xc000
        ld de,0x1c00+0x8000
        ld bc,0x400
        ldir ;restore sysvars
        ld a,0x7f-2
        ld bc,0xbff7
        out (c),a
        ld a,0x7f-1
        ld bc,0xfff7
        out (c),a
        ld hl,0xc000
        ld de,0x8000
        ld bc,0x4000
        ldir ;pg1 -> pg2
        ld a,0x7f-0+0x80
        ld bc,0xfff7
        out (c),a
        ld a,0x00
        ld bc,0x7ffd
        out (c),a
        ld a,0x01 ;128 basic (with 7ffd)
        ld bc,0x3ff7
        out (c),a
        ld a,0x7f-5
        ld bc,0x7ff7
        out (c),a
;128: pages 128/DOS,5,2,0(7ffd)
        ld a,0x10
        ld bc,0x7ffd
        out (c),a
;48: pages 2,4,4,4
        ld a,0x7f-5
        ld bc,0x7ff7
        out (c),a
        ld a,0x7f-2
        ld bc,0xbff7
        out (c),a
        ld a,0x7f-0+0x80
        ld bc,0xfff7
        out (c),a
        ld a,0x83 ;48 basic switchable to DOS
        ld bc,0x3ff7
        out (c),a
;48: pages 48/DOS,5,2,0(7ffd)
       
        LD A,%10101011 ;6912
        ld bc,0xff77 ;shadow ports off, palette off
        out (c),a
        ld sp,0x6000
   
   
    ld a,0x10
    ld bc,0x7ffd
    out (c),a ;for 128 basic (проверено, работает, 48 тоже работает)
    ld a,(0x3CBC)
    cp 0x87
    call z,0x3C9E   ;переключить в vtrdos
    ld bc,0x0001    ;хотресет втрдоса, на всякий случай, может и ненадо
    call 0x3D42
    ld bc,0x0001    ;хотресет втрдоса, на всякий случай, может и ненадо
    call 0x3D42
   
   
         ld a,0
         ld bc,0x7ffd
         out (c),a ;for 128 basic (проверено, работает, 48 тоже работает)
        ei
hobetarunner_jp=$+1
        jp 0;0x6000
        ent
hobetarunner_sz=$-washobetarunner

cmd_end

        display "Size ",/d,cmd_end-cmd_begin," bytes"

        savebin "reset.com",cmd_begin,cmd_end-cmd_begin
       
        ;LABELSLIST "../us/user.l"