Subversion Repositories NedoOS

Rev

Rev 2267 | Blame | Compare with Previous | Last modification | View Log | Download

  1. ; NedoOS wrapper for Z80 test by Patrik Rak
  2. ;
  3. ; Copyright (C) 2025 lvd^mhm
  4. ;
  5. ; This source code is released under the MIT license, see included license.txt.
  6.  
  7.         DEVICE ZXSPECTRUM128
  8.         include "../_sdk/sys_h.asm"
  9.  
  10. DST_ADDR=0x8000
  11. STK_ADDR=0xFFFD
  12.                 ld      sp,STK_ADDR
  13.                 call    initstdio
  14.  
  15.                 ; move code to its place
  16.                 ld      hl,code_end-1
  17.                 ld      de,DST_ADDR+code_end-code_beg-1
  18.                 ld      bc,code_end-code_beg
  19.                 lddr
  20.  
  21.                 ;clear memory
  22.                 ld      hl,code_beg
  23.                 ld      de,code_beg+1
  24.                 ld      bc,DST_ADDR-code_beg-1
  25.                 ld      (hl),0
  26.                 ldir
  27.  
  28.                 ld      hl,DST_ADDR+code_end-code_beg
  29.                 ld      de,DST_ADDR+code_end-code_beg+1
  30.                 ld      bc,0xFFFF-(DST_ADDR+code_end-code_beg)
  31.                 ld      (hl),0
  32.                 ldir
  33.  
  34.                 ;jump to code
  35.                 jp      DST_ADDR
  36.                
  37. EMU_CHAN_OPEN: 
  38.                 ret
  39.  
  40. EMU_QUIT:
  41.                 QUIT
  42.  
  43. EMU_RST_10:     ;iy,de,bc are already pushed
  44.                 exx
  45.                 exa
  46.                 push    af
  47.                 push    bc
  48.                 push    de
  49.                 push    hl
  50.                 exx
  51.                 exa
  52.  
  53.                 push    hl
  54.                 push    ix
  55.                 push    af ; here is char to print
  56.                 ei
  57.  
  58. .skip=$+1
  59.                 ld      a,0
  60.                 or      a
  61.                 jr      z,.skipe
  62.                 dec     a
  63.                 ld      (.skip),a
  64.                 jr      .skipdo
  65.  
  66. .skipe
  67.                 pop     af
  68.                 push    af
  69.  
  70.                 cp      23
  71.                 jr      nz,.noat
  72.                
  73.                 ld      a,2
  74.                 ld      (.skip),a
  75.                 ld      a,32
  76. .noat
  77.                 cp      13
  78.                 jr      nz,.normal_print
  79.                 PRCHAR_
  80.                 ld      a,10
  81. .normal_print
  82.                 PRCHAR_
  83.  
  84.  
  85. .skipdo
  86.                 di
  87.                 pop     af
  88.                 pop     ix
  89.                 pop     hl
  90.  
  91.                 exx
  92.                 exa
  93.                 pop     hl
  94.                 pop     de
  95.                 pop     bc
  96.                 pop     af
  97.                 exx
  98.                 exa
  99.                 ret
  100.  
  101.         include "../_sdk/stdio.asm"
  102.  
  103.