home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 25 / CD_ASCQ_25_1095.iso / dos / prg / cpe50 / misc.asm < prev    next >
Assembly Source File  |  1995-09-05  |  17KB  |  580 lines

  1.  ; miscellaneaous routines
  2.  
  3.     IDEAL
  4.     INCLUDE "cpe2\macros.inc"
  5.  
  6. ; *** externals for menu
  7. EXTRN FixPrefs:PROC
  8. EXTRN RestoreScreen:PROC,PutChar:PROC,OpenTextScr:PROC
  9. EXTRN MenuVars:WORD,MenuItems:WORD,MenuScr:BYTE
  10.  
  11. ; *** externals for LoadROMs, PatchLROM
  12. EXTRN cleanup:PROC
  13. EXTRN quietcas:WORD,cpctype:WORD
  14. EXTRN amsdos:BYTE,basic:BYTE,rom7:BYTE
  15. EXTRN CAScont:WORD,CASInH:WORD
  16.  
  17. ; *** externals for keyboard
  18. EXTRN germkey:WORD,intflag:WORD
  19.  
  20. ; *** exports
  21. PUBLIC LoadROMs,Menu,ClearKeyMap,Video,MyKeyInt,SetLEDs
  22.  
  23. PUBLIC KeyMatrix,keycode
  24. PUBLIC ColorTab,ColorTabA
  25.  
  26. P386
  27.  
  28. GROUP   DGROUP _stack,_data
  29.  
  30. SEGMENT _text PAGE PUBLIC 'CODE'
  31. ASSUME CS:_text
  32. ASSUME DS:DGROUP
  33.  
  34. LoadROMs:
  35.     MOV     DX,OFFSET mvr464        ; load lower ROM
  36.     CMP     [cpctype],1
  37.     JE      LMVR_Ok
  38.     MOV     DX,OFFSET mvr664
  39.     CMP     [cpctype],2
  40.     JE      LMVR_Ok
  41.     MOV     DX,OFFSET mvr6128
  42. LMVR_Ok:
  43.     MOV     AX,3d00h
  44.     INT     21h
  45.     JC      cleanup
  46.     MOV     BX,AX
  47.     MOV     AH,3Fh
  48.     MOV     DX,SEG amsdos
  49.     MOV     DS,DX
  50.     MOV     DX,OFFSET amsdos
  51.     MOV     CX,4000h
  52.     INT     21h
  53.     MOV     DX,DGROUP
  54.     MOV     DS,DX
  55.     JC      cleanup
  56.     MOV     AH,3Fh
  57.     MOV     DX,SEG basic
  58.     MOV     DS,DX
  59.     MOV     DX,OFFSET basic
  60.     MOV     CX,4000h
  61.     INT     21h
  62.     MOV     DX,DGROUP
  63.     MOV     DS,DX
  64.     JC      cleanup
  65.     MOV     AH,3Eh
  66.     INT     21h
  67.  
  68.     MOV     DX,OFFSET mvr7        ; load floppy ROM
  69.     MOV     AX,3d00h
  70.     INT     21h
  71.     JC      cleanup
  72.     MOV     BX,AX
  73.     MOV     AH,3Fh
  74.     MOV     DX,SEG rom7
  75.     MOV     DS,DX
  76.     MOV     DX,OFFSET rom7
  77.     MOV     CX,4000h
  78.     INT     21h
  79.     MOV     DX,DGROUP
  80.     MOV     DS,DX
  81.     JC      cleanup
  82.     MOV     AH,3Eh
  83.     INT     21h
  84.  
  85.     Call    PatchLROM
  86.         RET
  87.  
  88. PatchLROM:
  89.     PUSH    ES
  90.     PUSH    DX
  91.     MOV     DX,SEG amsdos
  92.     MOV     ES,DX
  93.     CMP     [WORD PTR ES:682h],'1v'
  94.     JE      PLRO_464
  95.     CMP     [WORD PTR ES:683h],'2v'
  96.     JE      PLRO_664
  97.     CMP     [WORD PTR ES:69Eh],'3v'
  98.     JE      PLRO_6128
  99. PLRO_end:
  100.     POP     DX
  101.     POP     ES
  102.     RET
  103. PLRO_464:
  104.     MOV     [WORD PTR ES:2836h],0feedh
  105.  ;       MOV     [WORD PTR ES:283fh],0fdedh
  106.  ;       MOV     [WORD PTR ES:2851h],0fcedh
  107.     MOV     [WORD PTR ES:2399h],0fbedh
  108.     MOV     [WORD PTR ES:2a51h+17h],01h
  109.     MOV     [CAScont],02a72h
  110.     MOV     [CASInH],0b807h
  111.         CMP     [quietcas],0
  112.         JE      PLRO_end
  113.         MOV     [BYTE PTR ES:2765h],0C9h
  114.         MOV     [WORD PTR ES:2560h],0530h
  115.         MOV     [WORD PTR ES:2562h],0
  116.     POP     DX
  117.     POP     ES
  118.     RET
  119. PLRO_664:
  120.     MOV     [WORD PTR ES:29A6h],0feedh
  121.  ;       MOV     [WORD PTR ES:29AFh],0fdedh
  122.  ;       MOV     [WORD PTR ES:29C1h],0fcedh
  123.     MOV     [WORD PTR ES:2bc1h+17h],01h
  124.     MOV     [WORD PTR ES:24ech],0fbedh
  125.     MOV     [CAScont],02be2h
  126.     MOV     [CASInH],0b11fh
  127.         CMP     [quietcas],0
  128.         JE      PLRO_end
  129.         MOV     [BYTE PTR ES:28D7h],0C9h
  130.         MOV     [WORD PTR ES:26d4h],0328h
  131.     POP     DX
  132.     POP     ES
  133.     RET
  134. PLRO_6128:
  135.     MOV     [WORD PTR ES:29A6h],0feedh
  136.  ;       MOV     [WORD PTR ES:29AFh],0fdedh
  137.  ;       MOV     [WORD PTR ES:29C1h],0fcedh
  138.     MOV     [WORD PTR ES:2bc1h+17h],01h
  139.     MOV     [WORD PTR ES:24ech],0fbedh
  140.     MOV     [DWORD PTR ES:24eeh],0E126ACCDh ; make it like 664
  141.     MOV     [CAScont],02be2h
  142.     MOV     [CASInH],0b11fh
  143.         CMP     [quietcas],0
  144.         JE      PLRO_end
  145.         MOV     [BYTE PTR ES:28D7h],0C9h
  146.         MOV     [WORD PTR ES:26d4h],0328h
  147.     POP     DX
  148.     POP     ES
  149.     RET
  150.  
  151. Menu:
  152.     PUSHAD
  153.  
  154.     MOV     [keycode],0
  155.         CALL    OpenTextScr
  156.  
  157.     XOR     AX,AX
  158.         XOR     EDX,EDX
  159.     MOV     CX,2000
  160. MENU_Display:
  161.     MOV     AL,[EDX+OFFSET MenuScr]
  162.     MOV     AH,0fh
  163.         CALL    PutChar
  164.     INC     DX
  165.     LOOP    MENU_Display
  166.     MOV     BX,0
  167. MENU_Loop:
  168.     MOV     CX,[MenuItems]
  169.     MOV     BP,OFFSET MenuVars
  170.     MOV     DX,160
  171. MENU_Update:
  172.     MOV     AX,0f58h
  173.     CMP     [WORD PTR BP],0
  174.     JNE     MENU_UdWrite
  175.     MOV     AX,020h
  176. MENU_UdWrite:
  177.         CALL    PutChar
  178.     ADD     BP,2
  179.     ADD     DX,80
  180.     LOOP    MENU_UpDate
  181.  
  182.     MOV     AX,BX
  183.     ADD     AX,2
  184.     MOV     CX,80
  185.     MUL     CX
  186.         INC     AX
  187.         MOV     DX,AX
  188.         MOV     AX,0F10h
  189.         PUSH    DX
  190.         CALL    PutChar
  191.         POP     DX
  192. MENU_WaitKey:
  193.     CMP     [keycode],0
  194.     JE      MENU_WaitKey
  195.  
  196.     CMP     [keycode],28
  197.     JE      MENU_End
  198.         CMP     [keycode],1
  199.         JE      MENU_End
  200.         MOV     AX,020h
  201.         CALL    PutChar
  202.     CMP     [keycode],48h
  203.     JNE     MENU_nup
  204.     DEC     BX
  205.     JNS     MENU_LoopEnd
  206.     XOR     BX,BX
  207.     JMP     MENU_LoopEnd
  208. MENU_nup:
  209.     CMP     [keycode],50h
  210.     JNE     MENU_ndn
  211.     INC     BX
  212.     CMP     BX,[MenuItems]
  213.     JC      MENU_LoopEnd
  214.     DEC     BX
  215.     JMP     MENU_LoopEnd
  216. MENU_ndn:
  217.     CMP     [keycode],39h
  218.     JNE     MENU_nspc
  219.     MOV     BP,OFFSET MenuVars
  220.     ADD     BP,BX
  221.     ADD     BP,BX
  222.     XOR     [WORD PTR BP],0ffffh
  223. MENU_nspc:
  224. MENU_LoopEnd:
  225.     MOV     [keycode],0
  226.         PUSH    BX
  227.         CALL    FixPrefs
  228.         POP     BX
  229.     JMP     MENU_Loop
  230. MENU_End:
  231.  
  232.         CALL    RestoreScreen
  233.     CALL    ClearKeyMap
  234.     MOV     [keycode],0
  235.     POPAD
  236.     RET
  237.  
  238. MyKeyInt:
  239.     PUSH    AX
  240.     PUSH    DS
  241.     PUSH    DI
  242.  
  243.     CLI
  244.     MOV     AX,DGROUP
  245.     MOV     DS,AX
  246.     IN      AL,60h
  247.     PUSH    AX
  248.     CALL    MKI_Crux
  249.     POP     AX
  250.  
  251.     XOR     DI,DI
  252.     PUSH    DS
  253.     PUSH    40h
  254.     POP     DS
  255.     TEST    [BYTE PTR DS:97h],2
  256.     JNZ     MKI_NumLockIsOn
  257.     MOV     DI,128
  258. MKI_NumLockIsOn:
  259.     POP     DS
  260.  
  261.     CMP     [altcode],1
  262.     JE      MKI_ThisIsAlt
  263.  
  264.     CMP     AL,45h          ; Num Lock?
  265.     JNE     MKI_NotNumLock
  266.     PUSH    DS
  267.     PUSH    40h
  268.     POP     DS
  269.     XOR     [BYTE PTR DS:17h],32
  270.     MOV     AL,[BYTE PTR DS:17h]
  271.     SHR     AL,4
  272.     AND     AL,7
  273.     AND     [BYTE PTR DS:97h],0f8h
  274.     OR      [BYTE PTR DS:97h],AL
  275.     POP     DS
  276.     CALL    SetLEDs
  277.     CLI
  278.     JMP     MKI_End
  279. MKI_NotNumLock:
  280.     CMP     AL,3ah          ; Caps Lock?
  281.     JNE     MKI_NotCapsLock
  282.     PUSH    AX
  283.     PUSH    DS
  284.     PUSH    40h
  285.     POP     DS
  286.     XOR     [BYTE PTR DS:17h],64
  287.     MOV     AL,[BYTE PTR DS:17h]
  288.     SHR     AL,4
  289.     AND     AL,7
  290.     AND     [BYTE PTR DS:97h],0f8h
  291.     OR      [BYTE PTR DS:97h],AL
  292.     POP     DS
  293.     CALL    SetLEDs
  294.     CLI
  295.     POP     AX
  296. MKI_NotCapsLock:
  297.  
  298.     CMP     AL,0E0h
  299.     JNE     MKI_NormCodeTab
  300. MKI_AltCodeTab:
  301.     MOV     [altcode],1
  302.     JMP     MKI_End
  303. MKI_ThisIsAlt:
  304.     MOV     [altcode],0
  305.     ADD     DI,OFFSET AltCodeTab
  306.     TEST    AL,80h
  307.     JNE     MKI_RelCont
  308.     JMP     MKI_PressedCont
  309. MKI_NormCodeTab:
  310.     TEST    AL,80h
  311.     JNE     MKI_Release
  312.     CMP     [germkey],0
  313.     JE      MKI_EngKeyPressed
  314.     ADD     DI,OFFSET KeyCodeTab
  315.     JMP     MKI_PressedCont
  316. MKI_EngKeyPressed:
  317.     ADD     DI,OFFSET EngCodeTab
  318. MKI_PressedCont:
  319.     MOV     [keycode],AL
  320.     OR      [intflag],100h
  321.     CMP     [spccode],0
  322.     JNE     MKI_NoSPC
  323.     MOV     [spccode],AL
  324. MKI_NoSPC:
  325.     AND     AX,7Fh
  326.     ADD     DI,AX
  327.     MOV     AL,[DI]
  328.     CMP     AL,0F0h
  329.     JE      MKI_End
  330.     AND     AX,0ffh
  331.     MOV     DI,AX
  332.     SHR     DI,4
  333.     AND     AL,15
  334.     BTR     [DI+OFFSET KeyMatrix],AX
  335.     JMP     MKI_End
  336. MKI_Release:
  337.     CMP     [germkey],0
  338.     JE      MKI_EngKeyRel
  339.     ADD     DI,OFFSET KeyCodeTab
  340.     JMP     MKI_RelCont
  341. MKI_EngKeyRel:
  342.     ADD     DI,OFFSET EngCodeTab
  343. MKI_RelCont:
  344.     AND     AX,7Fh
  345.     ADD     DI,AX
  346.     MOV     AL,[DI]
  347.     CMP     AL,0F0h
  348.     JE      MKI_End
  349.     AND     AX,0ffh
  350.     MOV     DI,AX
  351.     SHR     DI,4
  352.     AND     AL,15
  353.     BTS     [DI+OFFSET KeyMatrix],AX
  354. MKI_End:
  355.     POP     DI
  356.     POP     DS
  357.     POP     AX
  358.     STI
  359.     IRET
  360.  
  361. MKI_Crux:
  362.     IN      AL,61h
  363.     MOV     AH,AL
  364.     OUT     61h,AL
  365.     MOV     AL,AH
  366.     OUT     61h,AL
  367.  
  368.     MOV     AL,20h
  369.     OUT     20h,AL
  370.     RET
  371.  
  372. SetLEDs:
  373.     PUSH    DS
  374.     PUSH    CX
  375.     PUSH    AX
  376.     CLI
  377.     MOV     CX,200
  378. MKI_Wait64a:
  379.     IN      AL,64h
  380.     AND     AL,2
  381.     LOOPNZ  MKI_Wait64a
  382.     OR      CX,CX
  383.     JE      MKI_SetLED_End
  384.     MOV     AL,0EDh
  385.     OUT     60h,AL
  386.     XOR     CX,CX
  387. MKI_Wait64b:
  388.     IN      AL,64h
  389.     AND     AL,1
  390.     LOOPZ   MKI_Wait64b
  391.     OR      CX,CX
  392.     JE      MKI_SetLED_End
  393.     IN      AL,60h
  394.     CMP     AL,0fah
  395.     JNE     MKI_SetLED_End
  396.  
  397.     MOV     CX,200
  398. MKI_Wait64c:
  399.     IN      AL,64h
  400.     AND     AL,2
  401.     LOOPNZ  MKI_Wait64c
  402.     OR      CX,CX
  403.     JE      MKI_SetLED_End
  404.     PUSH    DS
  405.     PUSH    40h
  406.     POP     DS
  407.     MOV     AL,[DS:97h]
  408.     POP     DS
  409.     AND     AL,7
  410.     OUT     60h,AL
  411.     XOR     CX,CX
  412. MKI_Wait64d:
  413.     IN      AL,64h
  414.     AND     AL,1
  415.     LOOPZ   MKI_Wait64d
  416.     OR      CX,CX
  417.     JE      MKI_SetLED_End
  418.     IN      AL,60h
  419.  
  420. MKI_SetLED_End:
  421.     STI
  422.     POP     AX
  423.     POP     CX
  424.     POP     DS
  425.     STI
  426.     RET
  427.  
  428. ClearKeyMap:
  429.     MOV     [DWORD PTR KeyMatrix],0ffffffffh
  430.     MOV     [DWORD PTR KeyMatrix+4],0ffffffffh
  431.     MOV     [DWORD PTR KeyMatrix+8],0ffffffffh
  432.     MOV     [DWORD PTR KeyMatrix+12],0ffffffffh
  433.     RET
  434.  
  435. Video:  PUSH    SI
  436.     PUSH    DI
  437.     PUSH    BP
  438.     PUSH    ES
  439.  
  440.     CLI
  441.     INT     10H
  442.     STI
  443.  
  444.     POP     ES
  445.     POP     BP
  446.     POP     DI
  447.     POP     SI
  448.     RET
  449.  
  450. ENDS
  451.  
  452. SEGMENT _data PAGE PUBLIC 'DATA'
  453.  
  454. mvr464  db 'ROM\CPC464.ROM',0
  455. mvr664  db 'ROM\CPC664.ROM',0
  456. mvr6128 db 'ROM\CPC6128.ROM',0
  457. mvr7    db 'ROM\CPCADOS.ROM',0
  458.  
  459. ColorTabA   dd    00002400h,00002400h,00003000h,00003C00h
  460.         dd    00000C00h,00001800h,00001E00h,00002A00h ;4
  461.         dd    00001800h,00003C00h,00003A00h,00003E00h
  462.         dd    00001600h,00001A00h,00002800h,00002C00h ; 12
  463.         dd    00000C00h,00003000h,00002E00h,00003200h
  464.         dd    00000A00h,00000E00h,00001C00h,00002000h ; 20
  465.         dd    00001200h,00003600h,00003400h,00003800h
  466.         dd    00001000h,00001400h,00002200h,00002600h
  467.  
  468. ColorTab    dd    001f1f1fh,001f1f1fh,00003f1fh,003f3f1fh
  469.         dd    0000001fh,003f001fh,00001f1fh,003f1f1fh ;4
  470.         dd    003f001fh,003f3f1fh,003f3f00h,003f3f3fh
  471.         dd    003f0000h,003f003fh,003f1f00h,003f1f3fh ;12
  472.         dd    0000001fh,00003f1fh,00003f00h,00003f3fh
  473.         dd    00000000h,0000003fh,00001f00h,00001f3fh ;20
  474.         dd    001f001fh,001f3f1fh,001f3f00h,001f3f3fh
  475.         dd    001f0000h,001f003fh,001f1f00h,001f1f3fh
  476.  
  477. LABEL KeyMatrix BYTE
  478.     db    0FFH,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
  479.     db    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
  480.     EVEN
  481. LABEL KeyCodeTab BYTE    ; F0 = not on cpc keyboard
  482.  ;                  ESC  1    2    3    4    5    6    7    8    9    0    ß    ∩    DEL  TAB
  483.     db    0f0h,082h,080h,081h,071h,070h,061h,060h,051h,050h,041h,040h,036h,030h,097h,084h
  484.  ;             Q    W    E    R    T    Z    U    I    O    P    ü    +    CR  CTRL  A    S
  485.     db    083h,073h,072h,062h,063h,087h,052h,043h,042h,033h,032h,021h,022h,027h,085h,074h
  486.  ;             D    F    G    H    J    K    L    ö    ä    ^°  LSH   #'   Y    X    C    V
  487.     db    075h,065h,064h,054h,055h,045h,044h,035h,034h,082h,025h,023h,053h,077h,076h,067h
  488.  ;             B    N    M    ,    .    -   RSH  PRTS ALT  SPC  CAP   F1   F2   F3   F4   F5
  489.     db    066h,056h,046h,047h,037h,031h,025h,0f0h,011h,057h,086h,0f0h,0f0h,0f0h,0f0h,0f0h
  490.  ;             F6   F7   F8   F9   F10  NUM  ROL  N7   N8   N9   N-   N4   N5   N6   N+   N1
  491.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,090h,012h,013h,003h,031h,024h,014h,004h,034h,015h
  492.  ;             N2   N3   N0   N,                 F11  F12
  493.     db    016h,005h,017h,007h,0f0h,0f0h,026h,0F0h,0F0h,026h,026h,026h,026h,026h,026h,026h
  494.     db    0f0h,0f0h,0f0h,0f0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0f0h,0F0h,0F0h,0F0h
  495.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h
  496.  ; SECOND ALTERNATIVE: NumLock OFF
  497.  ;                  ESC  1    2    3    4    5    6    7    8    9    0    ß    ∩    DEL  TAB
  498.     db    0f0h,082h,080h,081h,071h,070h,061h,060h,051h,050h,041h,040h,031h,030h,097h,084h
  499.  ;             Q    W    E    R    T    Z    U    I    O    P    ü    +    CR  CTRL  A    S
  500.     db    083h,073h,072h,062h,063h,087h,052h,043h,042h,033h,032h,021h,022h,027h,085h,074h
  501.  ;             D    F    G    H    J    K    L    ö    ä    ^°  LSH   #'   Y    X    C    V
  502.     db    075h,065h,064h,054h,055h,045h,044h,035h,034h,082h,025h,023h,053h,077h,076h,067h
  503.  ;             B    N    M    ,    .    -   RSH  PRTS ALT  SPC  CAP   F1   F2   F3   F4   F5
  504.     db    066h,056h,046h,047h,037h,036h,025h,0f0h,011h,057h,086h,0f0h,0f0h,0f0h,0f0h,0f0h
  505.  ;             F6   F7   F8   F9   F10  NUM  ROL  N7   N8   N9   N-   N4   N5   N6   N+   N1
  506.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,060h,012h,090h,003h,031h,092h,094h,093h,034h,015h
  507.  ;             N2   N3   N0   N,                 F11  F12
  508.     db    091h,005h,017h,007h,0f0h,0f0h,026h,0F0h,0F0h,026h,026h,026h,026h,026h,026h,026h
  509.     db    0f0h,0f0h,0f0h,0f0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0f0h,0F0h,0F0h,0F0h
  510.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h
  511.  
  512. LABEL AltCodeTab BYTE    ; F0 = not on cpc keyboard
  513.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  514.  ;                                                                       ENTER CTRL
  515.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,006h,027h,0f0h,0f0h
  516.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  517.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  518.  ;                                               HOME CUUP PGUP      CULF      CURT      ENDE
  519.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,094h,000h,093h,0f0h,010h,0f0h,001h,0f0h,091h
  520.  ;            CUDN PGDN INST DELE
  521.     db    002h,0f0h,092h,020h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  522.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  523.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  524.  ; ALTERNATIVE: NumLock OFF
  525.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  526.  ;                                                                       ENTER
  527.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,006h,0f0h,0f0h,0f0h
  528.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  529.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  530.  ;                                               HOME CUUP PGUP      CULF      CURT      ENDE
  531.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,064h,000h,063h,0f0h,010h,0f0h,001h,0f0h,061h
  532.  ;            CUDN PGDN INST DELE
  533.     db    002h,0f0h,062h,020h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  534.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  535.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,0f0h
  536.  
  537. LABEL EngCodeTab BYTE
  538.  ;                  ESC  1    2    3    4    5    6    7    8    9    0    ß    ∩    DEL  TAB
  539.     db    0f0h,082h,080h,081h,071h,070h,061h,060h,051h,050h,041h,040h,031h,030h,097h,084h
  540.  ;             Q    W    E    R    T    Z    U    I    O    P    ü    +    CR  CTRL  A    S
  541.     db    083h,073h,072h,062h,063h,053h,052h,043h,042h,033h,032h,021h,022h,027h,085h,074h
  542.  ;             D    F    G    H    J    K    L    ö    ä    ^°  LSH   #'   Y    X    C    V
  543.     db    075h,065h,064h,054h,055h,045h,044h,035h,034h,082h,025h,023h,087h,077h,076h,067h
  544.  ;             B    N    M    ,    .    -   RSH  PRTS ALT  SPC  CAP   F1   F2   F3   F4   F5
  545.     db    066h,056h,046h,047h,037h,036h,025h,0f0h,011h,057h,086h,0f0h,0f0h,0f0h,0f0h,0f0h
  546.  ;             F6   F7   F8   F9   F10  NUM  ROL  N7   N8   N9   N-   N4   N5   N6   N+   N1
  547.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,090h,012h,013h,003h,031h,024h,014h,004h,034h,015h
  548.  ;             N2   N3   N0   N,                 F11  F12
  549.     db    016h,005h,017h,007h,0f0h,0f0h,026h,0F0h,0F0h,026h,026h,026h,026h,026h,026h,026h
  550.     db    0f0h,0f0h,0f0h,0f0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0f0h,0F0h,0F0h,0F0h
  551.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h
  552.  ; SECOND ALTERNATIVE: NumLock OFF
  553.  ;                  ESC  1    2    3    4    5    6    7    8    9    0    ß    ∩    DEL  TAB
  554.     db    0f0h,082h,080h,081h,071h,070h,061h,060h,051h,050h,041h,040h,031h,030h,097h,084h
  555.  ;             Q    W    E    R    T    Z    U    I    O    P    ü    +    CR  CTRL  A    S
  556.     db    083h,073h,072h,062h,063h,087h,052h,043h,042h,033h,032h,021h,022h,027h,085h,074h
  557.  ;             D    F    G    H    J    K    L    ö    ä    ^°  LSH   #'   Y    X    C    V
  558.     db    075h,065h,064h,054h,055h,045h,044h,035h,034h,082h,025h,023h,053h,077h,076h,067h
  559.  ;             B    N    M    ,    .    -   RSH  PRTS ALT  SPC  CAP   F1   F2   F3   F4   F5
  560.     db    066h,056h,046h,047h,037h,036h,025h,0f0h,011h,057h,086h,0f0h,0f0h,0f0h,0f0h,0f0h
  561.  ;             F6   F7   F8   F9   F10  NUM  ROL  N7   N8   N9   N-   N4   N5   N6   N+   N1
  562.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0f0h,060h,012h,090h,003h,031h,092h,094h,093h,034h,015h
  563.  ;             N2   N3   N0   N,                 F11  F12
  564.     db    091h,005h,017h,007h,0f0h,0f0h,026h,0F0h,0F0h,026h,026h,026h,026h,026h,026h,026h
  565.     db    0f0h,0f0h,0f0h,0f0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0f0h,0F0h,0F0h,0F0h
  566.     db    0f0h,0f0h,0f0h,0f0h,0f0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h
  567.  
  568.  ; ************************************************ keyboard
  569. keycode     db    0,0
  570. altcode     dw    0
  571. spccode     db    0,0
  572.  
  573. ENDS
  574.  
  575. SEGMENT _stack PARA STACK 'STACK'
  576.  
  577. ENDS
  578.  
  579. END
  580.