#if ATARI_8 const byte KEY_ENTER = 155 #else const byte KEY_ENTER = 13 #endif #if CBM_64 noinline asm byte readkey() { LDA #0 STA $C6 __read_key__start: LDA $C6 BEQ __read_key__start JMP $E5B4 } #define OK = 1 #endif #if CBM_128 noinline asm byte readkey() { LDA #0 STA $D0 __read_key__start: LDA $D0 BEQ __read_key__start LDX #0 JMP $C244 } #define OK = 1 #endif #if CBM_264 noinline asm byte readkey() { LDA #0 STA $EF __read_key__start: LDA $EF BEQ __read_key__start LDX #0 JMP $D8D5 } #define OK = 1 #endif #if CBM_VIC noinline asm byte readkey() { LDA #0 STA $C6 __read_key__start: LDA $C6 BEQ __read_key__start JMP $E5CF } #define OK = 1 #endif #if CBM_PET #if not(PET2001_SUPPORT) && not(PET3000_SUPPORT) && not(PET4000_SUPPORT) #error At least one of PET2000_SUPPORT, PET3000_SUPPORT, PET4000_SUPPORT has to be defined #endif noinline asm byte readkey() { #if PET2001_SUPPORT && (PET3000_SUPPORT || PET4000_SUPPORT) JSR is_pet2000 BNE __read_key__start_new #endif #if PET2001_SUPPORT // ROM 1.0: LDA #0 STA $20D __read_key__start1: LDA $20D BEQ __read_key__start1 LDA $20F RTS #endif #if PET3000_SUPPORT || PET4000_SUPPORT // ROM 2.0 and above: __read_key__start_new: LDA #0 STA $9E __read_key__start2: LDA $9E BEQ __read_key__start2 LDA $026F RTS #endif } #define OK = 1 #endif #if ATARI_8 noinline asm byte readkey() { lda #$C sta $2A lda $E425 pha lda $E424 pha rts } #define OK = 1 #endif #if APPLE_2 asm byte readkey() @$FD0C extern #define OK = 1 #endif #if NEC_PC_88 asm byte readkey() @$3583 extern #define OK = 1 #endif #if AMSTRAD_CPC asm byte readkey() @$BB06 extern #define OK = 1 #endif #if ZX_SPECTRUM #pragma zilog_syntax asm byte readkey() { ld hl,23560 ld (hl),0 __readkey__start: ld a,(hl) or a jr z,__readkey__start ? ret } #define OK = 1 #endif #if COCO import coco/keyboard #define OK = 1 #endif #if not(OK) #if KEYBOARD #warn keyboard module is not yet supported #else #warn keyboard module is not supported on targets without keyboard #endif #endif