
 org $0c00*------------------------------** hERE WE wedge INTO THE chrget** ROUTINE BY INSERTING A jmp   ** TO THE NEW ROUTINE AT $038d  **------------------------------*chrget = $0380 ;chArACTER get ROUTINE lda ($7a),yqnum = $0390 ;chArACTER got ROUTINE lda ($7a),y NOT INCREMENT txtptrindtxt = $03c9 ;indIRECT LOAD FROM tExt POINTER ($7a)pkybuf = $1000 ;pROGRAMMABLE kEy bufFERpkydef = $100a ;pROGRAMABLE kEy defINITIONS ldy #>wedge ;gET THE msb AND lda #<wedge ;THE lsb OF THE ADDRESS OF THE NEW ROUTINE ldx #$4c ;oPCODE FOR jmp stx $038d ;sAVE THE jUmp sta $038e ;TO THE NEW ROUTINE sty $038f ;IN chrget rts  ;aND EXIT TO ACTIVATE IT*------------------------------** tHIS SECTION CHECKS IF THE   ** COMMAND keyon OR keyoff      ** WAS USED                     **------------------------------*wedge cmp #$f9 ;iS IT THE TOKEN FOR 'key' ? bne notkey ;iF NOT THEN EXIT ldy #$00 ;iF IT IS THEN SETUP AN INDEX TO THE NEXT CHARACTERspace iny  ;iNCREMENT THE INDEX REGISTER jsr indtxt ;gET THE NEXT CHARACTER AFTER THE TOKEN FOR 'key' cmp #$91 ;iS THE NEXT CHARACTER THE TOKEN FOR 'on' ? beq keyon ;yES, TURN THE FUNCTION KEY DEFINITIONS ON cmp #$fe ;iF NOT ,IS IT THE VALUE FOR A DUAL TOKEN ? beq chkdual ;iF IT'S THE FIRST TOKEN FOR off CHECK NEXT TOKEN cmp #$20 ;iS THEIR A SPACE BETWEEN key AND on OR off beq space ;iF SO SKIP IT AND GET THE NEXT CHARACTER*------------------------------**  aT THIS POINT THE token FOR ** key WAS FOUND BUT THE NEXT   ** CHARACTER AFTER IT WAS NOT   ** THE token(s) FOR OUR NEW     ** COMMANDS SO JUMP TO EXECUIT  ** THE OLD key COMMAND.         **                              **------------------------------* jmp oldkey*------------------------------**    check for the dual token  **                              ** tHIS SECTION OF CODE WILL    ** CHECK IF THE TOKEN AFTER $fe ** IS $24. aND IF IT IS IT'S OUR** NEW COMMAND key off.         **                              **------------------------------*chkdual iny  ;mOVE TO THE CHARACTER AFTER THE DUAL TOKEN jsr indtxt ;gET IT cmp #$24 ;iS IT THE TOKEN FOR 'off' ? beq keyoff ;yES ,TURN THE FUNCTION KEY DEFINITIONS OFFoldkey lda #$f9 ;gET THE TOKEN FOR 'key'notkey sta $ff03 ;eNABLE bank 14 FOR chrget jmp qnum ;aND RETURN TO THE NORMAL ROUTINE*------------------------------**     keyoff ENTRY POINT       **------------------------------*keyoff jsr chrget ;uPDATE txtptr*------------------------------** tHIS SECTION CHANGES ALL OF  ** THE fUNCTION kEY DEFINITIONS ** TO THE VALUES THAT WERE USED ** ON THE c-64 .                **                              ** f1=chr$(133)  f2=chr$(137)   ** f3=chr$(134)  f4=chr$(138)   ** f5=chr$(135)  f6=chr$(139)   ** f7=chr$(136)  f8=chr$(140)   **------------------------------* ldy #$09 ;sETUP AN INDEX TO THE NUMBER OF DEFINITIONSnextkey lda $c6dd,y ;gET THE 64 KEY CONFIGURATION sta pkydef,y ;pLACE IT IN THE KEYDEFINIATION TABLE dey  ;mOVE TO THE NEXT DEFINITION bpl nextkey ;cONTINUE UNTIL ALL 10 KEYS ARE DONE*------------------------------** hERE WE RESET THE DEFINITION ** LENGTHS OF THE KEYS TO 1     **------------------------------* ldy #$09 ;iNDEX TO NUMBER OF KEYS - 1 lda #$01 ;lENGTH OF KEY DEFINITIONnextkey1 sta pkybuf,y ;sET THE KEY DEFINITION LENGTH TO 1 dey  ;mOVE TO THE NEXT KEY bpl nextkey1 ;cONTINUE UNTIL ALL 8 KEYS ARE DONE jmp exit ;aND EXIT*------------------------------**         keyon                **                              **  tHIS ROUTINE WILL RESTORE   ** THE FUNCTION KEYS TO THEIR   ** ORIGINAL DEFINITIONS         **                              **------------------------------*keyon ldy #$76 ;sETUP AN INDEX TO THE DEFAULT KEY DEFINITIONSnextkey2 lda $cea8,y ;gET A CHRACTER FROM THE ORIGIANL DEFINITIONS sta pkybuf,y ;sAVE THEM dey  mOVE TO THE NEXT CHARACTER bpl nextkey2 ;cONTINUE UNTIL ALL HAVE BEEN RESTOREDexit jsr chrget ;uPDATE txtptr jmp chrget ;aND EXIT TO THE NORMAL ROUTINE 