home *** CD-ROM | disk | FTP | other *** search
- ; ***********************************************
- ; RET_HL C-to-Machine interface.
- ; Call from C as:
- ;
- ; ret_hl( addr, a, bc, de, hl )
- ; unsigned addr, bc, de, hl;
- ; char a;
- ;
- ; Returns value in HL after machine call.
- .Z80
- CSEG
- RET?HL::
- ADD HL,SP ; required for C
- PUSH HL ; required for C
-
- LD HL,4 ; access parameters,
- ADD HL,SP ; starting w/ addr
- LD DE,EXIT1 ; Setup return addr
- PUSH DE
- ; ADDR
- LD E,(HL)
- INC HL
- LD D,(HL)
- INC HL
- PUSH DE
- ; A
- LD D,(HL)
- INC HL
- INC HL
- PUSH DE
- ; BC
- LD E,(HL)
- INC HL
- LD D,(HL)
- INC HL
- PUSH DE
- ; DE
- LD E,(HL)
- INC HL
- LD D,(HL)
- INC HL
- PUSH DE
- ; HL
- LD E,(HL)
- INC HL
- LD D,(HL)
- EX DE,HL
- ;
- POP DE ; Load DE
- POP BC ; Load BC
- POP AF ; Load AF
- ;
- RET ; Jump to ADDR
- EXIT1:
- JP $RTNI## ; Returns value in HL
- ;
- ; ***********************************************
- ; RET_A C-to-Machine interface.
- ; Call from C as:
- ;
- ; ret_A( addr, a, bc, de, hl )
- ; unsigned addr, bc, de, hl;
- ; char a;
- ;
- ; Returns value in A after machine call.
- .Z80
- CSEG
- RET?A::
- ADD HL,SP ; required for C
- PUSH HL ; required for C
-
- LD HL,4 ; access parameters,
- ADD HL,SP ; starting w/ addr
- LD DE,EXIT2 ; Setup return addr
- PUSH DE
- ; ADDR
- LD E,(HL)
- INC HL
- LD D,(HL)
- INC HL
- PUSH DE
- ; A
- LD D,(HL)
- INC HL
- INC HL
- PUSH DE
- ; BC
- LD E,(HL)
- INC HL
- LD D,(HL)
- INC HL
- PUSH DE
- ; DE
- LD E,(HL)
- INC HL
- LD D,(HL)
- INC HL
- PUSH DE
- ; HL
- LD E,(HL)
- INC HL
- LD D,(HL)
- EX DE,HL
- ;
- POP DE ; Load DE
- POP BC ; Load BC
- POP AF ; Load AF
- ;
- RET ; Jump to ADDR
- EXIT2:
- LD L,A ; transer
- LD H,0
- JP $RTNI## ; Returns value in HL
- END
- POP AF ; Load AF
- ;
- RET ; Jump to ADDR
- EXIT2:
- LD L,A ; transer
- LD H,0
- JP $RTNI## ;