Login

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed



one_ops:        ;1OP: 0     1      2      3     4         5     6       7
        defw     z_jz,   z_os,  z_oc,  z_op, prplen, incvar, decvar, praddr
        defw     call1s, rmobj, probj, z_rv, z_jmp,  printp, loadv,  call1n

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
z_jz:
        ld      hl,(v_arg1)
        ld      a,h
        or      l
        jp      z,branch
        jp      nbranch
;
z_jmp:  ld      hl,(v_arg1)
        jp      pbranch
;
z_ld:   ld      a,(v_arg1)
        call    get_var
        jp      ret_hl
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Return a value
;
z_rv:   ld      hl,(v_arg1)
        jp      z_ret
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;1OP calls
;
call1s: ld      a,1
        ld      (v_argc),a
        xor     a
        jp      call_gen
;
call1n: ld      a,(zver)
        cp      5
        jp      c,znot
        ld      a,1
        ld      (v_argc),a
        jp      call_gen
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Printing calls
;
praddr: ld      hl,(v_arg1)
        ld      e,0             ;<< v0.03 >> This is a 24-bit address
        jr      printp1
;
printp:
        ld      hl,(v_arg1)
        call    upack_addr
printp1:
        call    ZXPKWI
        call    printwrd
        bit     7,b
        jr      z,printp1
        call    rshift
        scf
        ret
;
probj:  ld      de,(v_arg1)     ;Based on jzip print_object()
        ld      a,d
        or      e
        scf                     ;NULL object
        ret     z
        call    objadd          ;Get address of object into HL
        ld      bc,7
        ld      a,(zver)
        cp      4
        jr      c,probj3
        ld      c,12
probj3: add     hl,bc
        ld      e,0
        call    ZXPKWI          ;BC = address
        inc     bc              ;skip count byte
        ld      h,b
        ld      l,c
        jp      printp1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Increment & decrement
;
incvar: ld      a,(v_arg1)
        push    af
        call    get_var
        inc     hl
        pop     af
        call    put_var
        scf
        ret
;
decvar: ld      a,(v_arg1)
        push    af
        call    get_var
        dec     hl
        pop     af
        call    put_var
        scf
        ret
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Getting related objects
;
z_op:   ld      de,(v_arg1)     ;Parent
        ld      a,d             ;<< v1.01 Object 0 errors
        or      e
        jp      z,pret0         ;>> v1.01
        call    objadd
        call    read_parent
        ex      de,hl
        scf
        jp      ret_hl
;
z_oc:   ld      de,(v_arg1)     ;Child
        ld      a,d             ;<< v1.01 Object 0 errors
        or      e
        jr      z,condobj       ;>> v1.01
        call    objadd
        call    read_child
        jr      condobj
;
z_os:   ld      de,(v_arg1)     ;Sibling
        ld      a,d             ;<< v1.01 Object 0 errors
        or      e
        jr      z,condobj       ;<< v1.01
        call    objadd
        call    read_sibling
condobj:
        ex      de,hl
        push    hl
        call    ret_hl
        pop     hl
        ld      a,h
        or      l
        jp      nz,branch
        jp      nbranch
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;Remove object
;
rmobj:  ld      de,(v_arg1)
        ld      a,d             ;<< v1.01 Object 0 errors
        or      e
        scf
        ret     z               ;>> v1.01
        call    obj_remove
        scf
        ret
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
loadv:  ld      a,(v_arg1)
        call    get_var ;HL = value of referenced variable
        scf
        jp      ret_hl
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
prplen: ld      hl,(v_arg1)     ;Property address
        call    gplen
        scf
        jp      ret_hl
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;