/* Copyright Motorola, Inc. 1993, 1994, 1999 ALL RIGHTS RESERVED You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE so long as this entire notice is retained without alteration in any modified and/or redistributed versions, and that such modified versions are clearly identified as such. No licenses are granted by implication, estoppel or otherwise under any patents or trademarks of Motorola, Inc. The SOFTWARE is provided on an "AS IS" basis and without warranty. To the maximum extent permitted by applicable law, MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY ACCOMPANYING WRITTEN MATERIALS. To the maximum extent permitted by applicable law, IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE. Motorola assumes no responsibility for the maintenance and support of the SOFTWARE. */ #include "dink_asm.h" /* One must call set_up_transfer_base immediately upon entering * program startup (main function) in order to use these other functions */ .lcomm tv_base,4,2 /*name,size,alignment for dink_transfer table */ .text .align 2 .global set_up_transfer_base set_up_transfer_base: addis r12,r0,tv_base@h stw r21,tv_base@l(r12) tweqi r21,0 ## Dink did not set up transfer vector blr .global dink_printf dink_printf: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 8(r12) ## printf() mtctr r11 bctr .global dink_loop dink_loop: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 12(r12) ## dink_loop() mtctr r11 bctr .global is_char_in_duart is_char_in_duart: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 16(r12) ## is_char_in_duart() mtctr r11 bctr .global menu menu: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 20(r12) ## menu() mtctr r11 bctr .global par_about par_about: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 24(r12) ## par_about() mtctr r11 bctr .global disassemble disassemble: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 28(r12) ## disassemble() mtctr r11 bctr .global get_KEYBOARD get_KEYBOARD: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 4(r12) ## get_char() lwz r3, 0(r11) ## get_char() blr ## char get_char(unsigned long keyboard); .global get_char get_char: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 32(r12) ## get_char() mtctr r11 bctr .global write_char write_char: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 36(r12) ## write_char() mtctr r11 bctr /* get_memSpeed * input: none * return: memSpeed value * exampel call: speed=get_memSpeed(); */ .global get_memSpeed get_memSpeed: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 40(r12) ## location offset for memSpeed lwz r3,0(r11) ## load value of memSpeed blr /* get_process_type * input: none * return: process_type value * process_type values are defined in config.h * exampel call: speed=get_process_type(); */ .global get_process_type get_process_type: addis r12,r0,tv_base@h lwz r12,tv_base@l(r12) tweqi r12,0 ## Dink did not set up transfer vector lwz r11, 44(r12) ## location offset for process_type lbz r3,0(r11) ## load value of process_type blr