1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-02 00:41:42 +00:00
kickc/src/test/kc/call-banked-phi-case-2-close-0.c

42 lines
1.1 KiB
C

/**
* @file call-banked-phi-case-2-close-0.c
* @author Sven Van de Velde (sven.van.de.velde@telenet.be),
* @author Jesper Gravgaard
* @brief Test a procedure with calling convention PHI - case #2.
* Implementation using the __bank() directive.
* @version 0.1
* @date 2023-04-11
*
* @copyright Copyright (c) 2023
*
* The following cases exist in banked calling implementations:
*
* - case #1 - unbanked to unbanked and no banking areas
* - case #2 - unbanked to banked to any bank area
* - case #3 - banked to unbanked from any bank area
* - case #4 - banked to same bank in same bank area
* - case #5 - banked to different bank in same bank area
* - case #6 - banked to any bank between different bank areas
*
* This brings us to the call types:
*
* - near = case #1, #3, #4
* - close = case #2, #6
* - far = case #5
*
*/
#pragma link("call-banked-phi.ld")
char* const SCREEN = (char*)0x0400;
#pragma code_seg(Code)
void main(void) {
SCREEN[0] = plus('0', 7); // close call
SCREEN[1] = plus('1', 6); // close call
}
#pragma code_seg(RAM_Bank1)
__bank(cx16_ram,1) char plus(char a, char b) {
return a+b;
}