start
        move.l  $180.w, a0
        move.l  72(a0), -(sp)   ;save cur kbrd tbl
        lea     trantbl, a1

        movea.l a1,a2
        move.l  a1,d1
        moveq   #6,d0           ;add address to table
s1      add.l   d1, (a2)+
        dbra    d0, s1

        move.l  a1, 72(a0)      ;put in this one

; read char

        tst.w   -(sp)           ;allocate data space
        move.l  sp, d0
        move.w  #1, -(sp)       ;unit number
        move.l  d0, -(sp)       ;data address
        move.w  #1, -(sp)       ;number of bytes
        clr.l   -(sp)           ;0 for block number and mode

        move.l  8(a0), a0       ;sysvect
        move.l  4(a0), a0       ;unitread
        jsr     (a0)

        tst.w   (sp)+           ;free data space

; restore old table

        move.l  $180.w, a0
        move.l  (sp)+, 72(a0)
        rts

; file makes kbrd generate no chars except 1.
;
;
; TRANSLATION TABLE
;
TRANTBL
            DATA.L     STABLE - TRANTBL          ;POINTER TO SHIFT TABLE
            DATA.L     RTABLE - TRANTBL          ;POINTER TO REGULAR TABLE
            DATA.L     ETABLE - TRANTBL          ;POINTER TO ESCAPE # TABLE
            DATA.L     SMTABLE- TRANTBL          ;PTR TO STANDARD MULT CHAR TABLE
            DATA.L     CQTABLE- TRANTBL          ;POINTER TO CAP/QUALIFIER TABLE
            DATA.L     RLTABLE- TRANTBL          ;POINTER TO RELEASE TABLE
            DATA.L     BKEYCOD- TRANTBL          ;POINTER TO BREAK KEYCODE TABLE


STABLE

  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
;
RTABLE

  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F   ;$00
  DATA.B  $9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$9F,$41,$9F   ;$00
;
CQTABLE
                                                                            ;MSB
  DATA.B  $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00   ;$00
  DATA.B  $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00   ;$10
  DATA.B  $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00   ;$20
  DATA.B  $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00   ;$30
  DATA.B  $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00   ;$40
  DATA.B  $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00   ;$50
; LSB      0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
;
ETABLE
;        KEYCODE FILL   US/UC  SHIFT  COMMAND   C/S
  DATA.B  $FF,    0,    'FE',  'FE',  'FE',    'FE' ;LEFT COMMAND (RELEASE)

SMTABLE

  DATA.B    $FF,    0                               ;NULL KEYCODE - END OF TABLE

RLTABLE
;
  DATA.B    $FF,            $00                     ;NULL KEYCODE - END OF TABLE

BKEYCOD  DATA.B    $FF,0                         ;BREAK CLOSURE KEYCODE,FILLER
;
         END      START