ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 1


   1              		.cpu cortex-m3
   2              		.eabi_attribute 20, 1
   3              		.eabi_attribute 21, 1
   4              		.eabi_attribute 23, 3
   5              		.eabi_attribute 24, 1
   6              		.eabi_attribute 25, 1
   7              		.eabi_attribute 26, 1
   8              		.eabi_attribute 30, 1
   9              		.eabi_attribute 34, 1
  10              		.eabi_attribute 18, 4
  11              		.file	"main.c"
  12              		.text
  13              	.Ltext0:
  14              		.cfi_sections	.debug_frame
  15              		.section	.text.MX_GPIO_Init,"ax",%progbits
  16              		.align	1
  17              		.syntax unified
  18              		.thumb
  19              		.thumb_func
  20              		.fpu softvfp
  22              	MX_GPIO_Init:
  23              	.LFB73:
  24              		.file 1 "Src/main.c"
   1:Src/main.c    **** /* USER CODE BEGIN Header */
   2:Src/main.c    **** /**
   3:Src/main.c    ****   ******************************************************************************
   4:Src/main.c    ****   * @file           : main.c
   5:Src/main.c    ****   * @brief          : Main program body
   6:Src/main.c    ****   ******************************************************************************
   7:Src/main.c    ****   * @attention
   8:Src/main.c    ****   *
   9:Src/main.c    ****   * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
  10:Src/main.c    ****   * All rights reserved.</center></h2>
  11:Src/main.c    ****   *
  12:Src/main.c    ****   * This software component is licensed by ST under BSD 3-Clause license,
  13:Src/main.c    ****   * the "License"; You may not use this file except in compliance with the
  14:Src/main.c    ****   * License. You may obtain a copy of the License at:
  15:Src/main.c    ****   *                        opensource.org/licenses/BSD-3-Clause
  16:Src/main.c    ****   *
  17:Src/main.c    ****   ******************************************************************************
  18:Src/main.c    ****   */
  19:Src/main.c    **** /* USER CODE END Header */
  20:Src/main.c    **** 
  21:Src/main.c    **** /* Includes ------------------------------------------------------------------*/
  22:Src/main.c    **** #include "main.h"
  23:Src/main.c    **** #include "usb_device.h"
  24:Src/main.c    **** 
  25:Src/main.c    **** /* Private includes ----------------------------------------------------------*/
  26:Src/main.c    **** /* USER CODE BEGIN Includes */
  27:Src/main.c    **** #include "usbd_hid.h"
  28:Src/main.c    **** #include "PS2/PS2Keyboard.c"
  29:Src/main.c    **** /* USER CODE END Includes */
  30:Src/main.c    **** 
  31:Src/main.c    **** /* Private typedef -----------------------------------------------------------*/
  32:Src/main.c    **** /* USER CODE BEGIN PTD */
  33:Src/main.c    **** 
  34:Src/main.c    **** /* USER CODE END PTD */
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 2


  35:Src/main.c    **** 
  36:Src/main.c    **** /* Private define ------------------------------------------------------------*/
  37:Src/main.c    **** /* USER CODE BEGIN PD */
  38:Src/main.c    **** /* USER CODE END PD */
  39:Src/main.c    **** 
  40:Src/main.c    **** /* Private macro -------------------------------------------------------------*/
  41:Src/main.c    **** /* USER CODE BEGIN PM */
  42:Src/main.c    **** 
  43:Src/main.c    **** /* USER CODE END PM */
  44:Src/main.c    **** 
  45:Src/main.c    **** /* Private variables ---------------------------------------------------------*/
  46:Src/main.c    **** 
  47:Src/main.c    **** /* USER CODE BEGIN PV */
  48:Src/main.c    **** extern USBD_HandleTypeDef hUsbDeviceFS;
  49:Src/main.c    **** /* USER CODE END PV */
  50:Src/main.c    **** 
  51:Src/main.c    **** /* Private function prototypes -----------------------------------------------*/
  52:Src/main.c    **** void SystemClock_Config(void);
  53:Src/main.c    **** static void MX_GPIO_Init(void);
  54:Src/main.c    **** /* USER CODE BEGIN PFP */
  55:Src/main.c    **** 
  56:Src/main.c    **** /* USER CODE END PFP */
  57:Src/main.c    **** 
  58:Src/main.c    **** /* Private user code ---------------------------------------------------------*/
  59:Src/main.c    **** /* USER CODE BEGIN 0 */
  60:Src/main.c    **** 
  61:Src/main.c    **** /* USER CODE END 0 */
  62:Src/main.c    **** 
  63:Src/main.c    **** /**
  64:Src/main.c    ****   * @brief  The application entry point.
  65:Src/main.c    ****   * @retval int
  66:Src/main.c    ****   */
  67:Src/main.c    **** int main(void)
  68:Src/main.c    **** {
  69:Src/main.c    ****   /* USER CODE BEGIN 1 */
  70:Src/main.c    **** int scancode;
  71:Src/main.c    **** unsigned char passcode=0;
  72:Src/main.c    **** char c;
  73:Src/main.c    **** 
  74:Src/main.c    **** // HID Keyboard
  75:Src/main.c    **** struct keyboardHID_t {
  76:Src/main.c    **** uint8_t modificator; // bitai: 0-LCTRL, 1-LSHIFT, 2-LALT, 3-LGUI, 4-RCTRL, 5-RSHIFT, 6-RALT, 7-RGUI
  77:Src/main.c    **** uint8_t res; // 0x00 nulis
  78:Src/main.c    **** uint8_t key[6];
  79:Src/main.c    **** };
  80:Src/main.c    **** 
  81:Src/main.c    **** struct keyboardHID_t kbdHID;
  82:Src/main.c    **** 
  83:Src/main.c    **** kbdHID.modificator=0;
  84:Src/main.c    **** kbdHID.res=0;
  85:Src/main.c    **** kbdHID.key[0]=0;
  86:Src/main.c    **** kbdHID.key[1]=0;
  87:Src/main.c    **** kbdHID.key[2]=0;
  88:Src/main.c    **** kbdHID.key[3]=0;
  89:Src/main.c    **** kbdHID.key[4]=0;
  90:Src/main.c    **** kbdHID.key[5]=0;
  91:Src/main.c    **** 
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 3


  92:Src/main.c    ****   /* USER CODE END 1 */
  93:Src/main.c    **** 
  94:Src/main.c    ****   /* MCU Configuration--------------------------------------------------------*/
  95:Src/main.c    **** 
  96:Src/main.c    ****   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  97:Src/main.c    ****   HAL_Init();
  98:Src/main.c    **** 
  99:Src/main.c    ****   /* USER CODE BEGIN Init */
 100:Src/main.c    **** 
 101:Src/main.c    ****   /* USER CODE END Init */
 102:Src/main.c    **** 
 103:Src/main.c    ****   /* Configure the system clock */
 104:Src/main.c    ****   SystemClock_Config();
 105:Src/main.c    **** 
 106:Src/main.c    ****   /* USER CODE BEGIN SysInit */
 107:Src/main.c    **** 
 108:Src/main.c    ****   /* USER CODE END SysInit */
 109:Src/main.c    **** 
 110:Src/main.c    ****   /* Initialize all configured peripherals */
 111:Src/main.c    ****   MX_GPIO_Init();
 112:Src/main.c    ****   MX_USB_DEVICE_Init();
 113:Src/main.c    ****   /* USER CODE BEGIN 2 */
 114:Src/main.c    **** 
 115:Src/main.c    ****   /* USER CODE END 2 */
 116:Src/main.c    **** 
 117:Src/main.c    ****   /* Infinite loop */
 118:Src/main.c    ****   /* USER CODE BEGIN WHILE */
 119:Src/main.c    ****   while (1)
 120:Src/main.c    ****   {
 121:Src/main.c    ****   
 122:Src/main.c    ****   
 123:Src/main.c    ****   	scancode=get_PS2scan_code();
 124:Src/main.c    **** 	if (scancode !=0) {
 125:Src/main.c    **** 						if(scancode==0xF0)
 126:Src/main.c    **** 							{ passcode=1;
 127:Src/main.c    **** 							kbdHID.key[0]= 0;
 128:Src/main.c    **** 							USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&kbdHID, sizeof(struct keyboardHID_t));
 129:Src/main.c    **** 							}
 130:Src/main.c    **** 						else
 131:Src/main.c    **** 							{
 132:Src/main.c    **** 							if(passcode==1)
 133:Src/main.c    **** 								{passcode=0;}
 134:Src/main.c    **** 								else
 135:Src/main.c    **** 								{
 136:Src/main.c    **** 								c=scan_decode(scancode);
 137:Src/main.c    **** 								kbdHID.key[0]= c;
 138:Src/main.c    **** 								USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&kbdHID, sizeof(struct keyboardHID_t));
 139:Src/main.c    **** 								}
 140:Src/main.c    **** 							}
 141:Src/main.c    **** 						}  
 142:Src/main.c    ****   
 143:Src/main.c    ****   
 144:Src/main.c    ****   
 145:Src/main.c    ****   
 146:Src/main.c    ****   
 147:Src/main.c    ****   
 148:Src/main.c    ****   
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 4


 149:Src/main.c    ****   
 150:Src/main.c    ****   
 151:Src/main.c    ****   
 152:Src/main.c    ****   
 153:Src/main.c    ****   
 154:Src/main.c    ****   
 155:Src/main.c    ****   
 156:Src/main.c    ****   
 157:Src/main.c    ****   
 158:Src/main.c    ****     /* USER CODE END WHILE */
 159:Src/main.c    **** 
 160:Src/main.c    ****     /* USER CODE BEGIN 3 */
 161:Src/main.c    ****   }
 162:Src/main.c    ****   /* USER CODE END 3 */
 163:Src/main.c    **** }
 164:Src/main.c    **** 
 165:Src/main.c    **** /**
 166:Src/main.c    ****   * @brief System Clock Configuration
 167:Src/main.c    ****   * @retval None
 168:Src/main.c    ****   */
 169:Src/main.c    **** void SystemClock_Config(void)
 170:Src/main.c    **** {
 171:Src/main.c    ****   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 172:Src/main.c    ****   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
 173:Src/main.c    ****   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
 174:Src/main.c    **** 
 175:Src/main.c    ****   /** Initializes the CPU, AHB and APB busses clocks 
 176:Src/main.c    ****   */
 177:Src/main.c    ****   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
 178:Src/main.c    ****   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
 179:Src/main.c    ****   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
 180:Src/main.c    ****   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
 181:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
 182:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
 183:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
 184:Src/main.c    ****   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
 185:Src/main.c    ****   {
 186:Src/main.c    ****     Error_Handler();
 187:Src/main.c    ****   }
 188:Src/main.c    ****   /** Initializes the CPU, AHB and APB busses clocks 
 189:Src/main.c    ****   */
 190:Src/main.c    ****   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
 191:Src/main.c    ****                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
 192:Src/main.c    ****   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
 193:Src/main.c    ****   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
 194:Src/main.c    ****   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
 195:Src/main.c    ****   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
 196:Src/main.c    **** 
 197:Src/main.c    ****   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
 198:Src/main.c    ****   {
 199:Src/main.c    ****     Error_Handler();
 200:Src/main.c    ****   }
 201:Src/main.c    ****   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB;
 202:Src/main.c    ****   PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL;
 203:Src/main.c    ****   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
 204:Src/main.c    ****   {
 205:Src/main.c    ****     Error_Handler();
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 5


 206:Src/main.c    ****   }
 207:Src/main.c    **** }
 208:Src/main.c    **** 
 209:Src/main.c    **** /**
 210:Src/main.c    ****   * @brief GPIO Initialization Function
 211:Src/main.c    ****   * @param None
 212:Src/main.c    ****   * @retval None
 213:Src/main.c    ****   */
 214:Src/main.c    **** static void MX_GPIO_Init(void)
 215:Src/main.c    **** {
  25              		.loc 1 215 0
  26              		.cfi_startproc
  27              		@ args = 0, pretend = 0, frame = 32
  28              		@ frame_needed = 0, uses_anonymous_args = 0
  29 0000 70B5     		push	{r4, r5, r6, lr}
  30              	.LCFI0:
  31              		.cfi_def_cfa_offset 16
  32              		.cfi_offset 4, -16
  33              		.cfi_offset 5, -12
  34              		.cfi_offset 6, -8
  35              		.cfi_offset 14, -4
  36 0002 88B0     		sub	sp, sp, #32
  37              	.LCFI1:
  38              		.cfi_def_cfa_offset 48
 216:Src/main.c    ****   GPIO_InitTypeDef GPIO_InitStruct = {0};
  39              		.loc 1 216 0
  40 0004 0024     		movs	r4, #0
  41 0006 0494     		str	r4, [sp, #16]
  42 0008 0594     		str	r4, [sp, #20]
  43 000a 0694     		str	r4, [sp, #24]
  44 000c 0794     		str	r4, [sp, #28]
  45              	.LBB2:
 217:Src/main.c    **** 
 218:Src/main.c    ****   /* GPIO Ports Clock Enable */
 219:Src/main.c    ****   __HAL_RCC_GPIOC_CLK_ENABLE();
  46              		.loc 1 219 0
  47 000e 274B     		ldr	r3, .L3
  48 0010 9A69     		ldr	r2, [r3, #24]
  49 0012 42F01002 		orr	r2, r2, #16
  50 0016 9A61     		str	r2, [r3, #24]
  51 0018 9A69     		ldr	r2, [r3, #24]
  52 001a 02F01002 		and	r2, r2, #16
  53 001e 0192     		str	r2, [sp, #4]
  54 0020 019A     		ldr	r2, [sp, #4]
  55              	.LBE2:
  56              	.LBB3:
 220:Src/main.c    ****   __HAL_RCC_GPIOD_CLK_ENABLE();
  57              		.loc 1 220 0
  58 0022 9A69     		ldr	r2, [r3, #24]
  59 0024 42F02002 		orr	r2, r2, #32
  60 0028 9A61     		str	r2, [r3, #24]
  61 002a 9A69     		ldr	r2, [r3, #24]
  62 002c 02F02002 		and	r2, r2, #32
  63 0030 0292     		str	r2, [sp, #8]
  64 0032 029A     		ldr	r2, [sp, #8]
  65              	.LBE3:
  66              	.LBB4:
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 6


 221:Src/main.c    ****   __HAL_RCC_GPIOA_CLK_ENABLE();
  67              		.loc 1 221 0
  68 0034 9A69     		ldr	r2, [r3, #24]
  69 0036 42F00402 		orr	r2, r2, #4
  70 003a 9A61     		str	r2, [r3, #24]
  71 003c 9B69     		ldr	r3, [r3, #24]
  72 003e 03F00403 		and	r3, r3, #4
  73 0042 0393     		str	r3, [sp, #12]
  74 0044 039B     		ldr	r3, [sp, #12]
  75              	.LBE4:
 222:Src/main.c    **** 
 223:Src/main.c    ****   /*Configure GPIO pin Output Level */
 224:Src/main.c    ****   HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
  76              		.loc 1 224 0
  77 0046 1A4E     		ldr	r6, .L3+4
  78 0048 2246     		mov	r2, r4
  79 004a 4FF40051 		mov	r1, #8192
  80 004e 3046     		mov	r0, r6
  81 0050 FFF7FEFF 		bl	HAL_GPIO_WritePin
  82              	.LVL0:
 225:Src/main.c    **** 
 226:Src/main.c    ****   /*Configure GPIO pin : LED_Pin */
 227:Src/main.c    ****   GPIO_InitStruct.Pin = LED_Pin;
  83              		.loc 1 227 0
  84 0054 4FF40053 		mov	r3, #8192
  85 0058 0493     		str	r3, [sp, #16]
 228:Src/main.c    ****   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  86              		.loc 1 228 0
  87 005a 0125     		movs	r5, #1
  88 005c 0595     		str	r5, [sp, #20]
 229:Src/main.c    ****   GPIO_InitStruct.Pull = GPIO_NOPULL;
  89              		.loc 1 229 0
  90 005e 0694     		str	r4, [sp, #24]
 230:Src/main.c    ****   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  91              		.loc 1 230 0
  92 0060 0223     		movs	r3, #2
  93 0062 0793     		str	r3, [sp, #28]
 231:Src/main.c    ****   HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  94              		.loc 1 231 0
  95 0064 04A9     		add	r1, sp, #16
  96 0066 3046     		mov	r0, r6
  97 0068 FFF7FEFF 		bl	HAL_GPIO_Init
  98              	.LVL1:
 232:Src/main.c    **** 
 233:Src/main.c    ****   /*Configure GPIO pin : PS2_CLK_Pin */
 234:Src/main.c    ****   GPIO_InitStruct.Pin = PS2_CLK_Pin;
  99              		.loc 1 234 0
 100 006c 4FF40073 		mov	r3, #512
 101 0070 0493     		str	r3, [sp, #16]
 235:Src/main.c    ****   GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
 102              		.loc 1 235 0
 103 0072 104B     		ldr	r3, .L3+8
 104 0074 0593     		str	r3, [sp, #20]
 236:Src/main.c    ****   GPIO_InitStruct.Pull = GPIO_PULLUP;
 105              		.loc 1 236 0
 106 0076 0695     		str	r5, [sp, #24]
 237:Src/main.c    ****   HAL_GPIO_Init(PS2_CLK_GPIO_Port, &GPIO_InitStruct);
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 7


 107              		.loc 1 237 0
 108 0078 A6F50066 		sub	r6, r6, #2048
 109 007c 04A9     		add	r1, sp, #16
 110 007e 3046     		mov	r0, r6
 111 0080 FFF7FEFF 		bl	HAL_GPIO_Init
 112              	.LVL2:
 238:Src/main.c    **** 
 239:Src/main.c    ****   /*Configure GPIO pin : PS2_DATA_Pin */
 240:Src/main.c    ****   GPIO_InitStruct.Pin = PS2_DATA_Pin;
 113              		.loc 1 240 0
 114 0084 4FF48063 		mov	r3, #1024
 115 0088 0493     		str	r3, [sp, #16]
 241:Src/main.c    ****   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
 116              		.loc 1 241 0
 117 008a 0594     		str	r4, [sp, #20]
 242:Src/main.c    ****   GPIO_InitStruct.Pull = GPIO_PULLUP;
 118              		.loc 1 242 0
 119 008c 0695     		str	r5, [sp, #24]
 243:Src/main.c    ****   HAL_GPIO_Init(PS2_DATA_GPIO_Port, &GPIO_InitStruct);
 120              		.loc 1 243 0
 121 008e 04A9     		add	r1, sp, #16
 122 0090 3046     		mov	r0, r6
 123 0092 FFF7FEFF 		bl	HAL_GPIO_Init
 124              	.LVL3:
 244:Src/main.c    **** 
 245:Src/main.c    ****   /* EXTI interrupt init*/
 246:Src/main.c    ****   HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
 125              		.loc 1 246 0
 126 0096 2246     		mov	r2, r4
 127 0098 2146     		mov	r1, r4
 128 009a 1720     		movs	r0, #23
 129 009c FFF7FEFF 		bl	HAL_NVIC_SetPriority
 130              	.LVL4:
 247:Src/main.c    ****   HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
 131              		.loc 1 247 0
 132 00a0 1720     		movs	r0, #23
 133 00a2 FFF7FEFF 		bl	HAL_NVIC_EnableIRQ
 134              	.LVL5:
 248:Src/main.c    **** 
 249:Src/main.c    **** }
 135              		.loc 1 249 0
 136 00a6 08B0     		add	sp, sp, #32
 137              	.LCFI2:
 138              		.cfi_def_cfa_offset 16
 139              		@ sp needed
 140 00a8 70BD     		pop	{r4, r5, r6, pc}
 141              	.L4:
 142 00aa 00BF     		.align	2
 143              	.L3:
 144 00ac 00100240 		.word	1073876992
 145 00b0 00100140 		.word	1073811456
 146 00b4 00001110 		.word	269549568
 147              		.cfi_endproc
 148              	.LFE73:
 150              		.section	.text.scan_decode,"ax",%progbits
 151              		.align	1
 152              		.global	scan_decode
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 8


 153              		.syntax unified
 154              		.thumb
 155              		.thumb_func
 156              		.fpu softvfp
 158              	scan_decode:
 159              	.LFB68:
 160              		.file 2 "Src/PS2/PS2Keyboard.c"
   1:Src/PS2/PS2Keyboard.c **** /* PS2 keyboard */
   2:Src/PS2/PS2Keyboard.c **** /* dalinai vogtas is interneto */
   3:Src/PS2/PS2Keyboard.c **** 
   4:Src/PS2/PS2Keyboard.c **** /* ************************************************************************
   5:Src/PS2/PS2Keyboard.c **** ** modifikuotas STM32F1xx cube 
   6:Src/PS2/PS2Keyboard.c **** ** Naudoja alias: PS2_DATA_GPIO_Port, PS2_DATA_Pin , PS2_CLK_Pin .
   7:Src/PS2/PS2Keyboard.c **** ** Reikelaingas pertraukimas H->L and CLK, kuris kviecia ps2interrupt();
   8:Src/PS2/PS2Keyboard.c **** **
   9:Src/PS2/PS2Keyboard.c **** ** (copyleft) 2020 http://www.vabolis.lt
  10:Src/PS2/PS2Keyboard.c **** *************************************************************************** */
  11:Src/PS2/PS2Keyboard.c **** #include "ps2_codes.h" // PS2 klavieturos scan kodai
  12:Src/PS2/PS2Keyboard.c **** #include "usb_hid_keys.h"  // HID klavieturos scan kodai
  13:Src/PS2/PS2Keyboard.c **** 
  14:Src/PS2/PS2Keyboard.c **** 
  15:Src/PS2/PS2Keyboard.c **** 
  16:Src/PS2/PS2Keyboard.c **** #define PS2BUFFER_SIZE 16
  17:Src/PS2/PS2Keyboard.c **** static volatile uint8_t PS2buffer[PS2BUFFER_SIZE];
  18:Src/PS2/PS2Keyboard.c **** static volatile uint8_t head, tail;
  19:Src/PS2/PS2Keyboard.c **** 
  20:Src/PS2/PS2Keyboard.c **** 
  21:Src/PS2/PS2Keyboard.c **** 
  22:Src/PS2/PS2Keyboard.c **** // mini Amstrad klavietura -> ASCII
  23:Src/PS2/PS2Keyboard.c **** const unsigned char amstrad2ascii[] = {
  24:Src/PS2/PS2Keyboard.c **** 0,
  25:Src/PS2/PS2Keyboard.c **** 0, // 1
  26:Src/PS2/PS2Keyboard.c **** 0, // 2
  27:Src/PS2/PS2Keyboard.c **** 'j', // 3 - j
  28:Src/PS2/PS2Keyboard.c **** 0, // 4
  29:Src/PS2/PS2Keyboard.c **** 'b', // 5 - b
  30:Src/PS2/PS2Keyboard.c **** 0, // 6 - ADDRESS BOOK
  31:Src/PS2/PS2Keyboard.c **** 0, // 7
  32:Src/PS2/PS2Keyboard.c **** 0, // 8
  33:Src/PS2/PS2Keyboard.c **** 0, // 9 - CURSOR RIGHT
  34:Src/PS2/PS2Keyboard.c **** 0, // a
  35:Src/PS2/PS2Keyboard.c **** 'v', // b - v
  36:Src/PS2/PS2Keyboard.c **** 0, // c
  37:Src/PS2/PS2Keyboard.c **** 'u', // d - u
  38:Src/PS2/PS2Keyboard.c **** 'i', // e - i
  39:Src/PS2/PS2Keyboard.c **** 0, // f
  40:Src/PS2/PS2Keyboard.c **** 0, // 10
  41:Src/PS2/PS2Keyboard.c **** 0, // 11
  42:Src/PS2/PS2Keyboard.c **** 0, // 12
  43:Src/PS2/PS2Keyboard.c **** 0, // 13
  44:Src/PS2/PS2Keyboard.c **** 0, // 14
  45:Src/PS2/PS2Keyboard.c **** 0, // 15 - FAX
  46:Src/PS2/PS2Keyboard.c **** 0, // 16 - CURSOR LEFT
  47:Src/PS2/PS2Keyboard.c **** 0, // 17
  48:Src/PS2/PS2Keyboard.c **** 0, // 18
  49:Src/PS2/PS2Keyboard.c **** 0, // 19
  50:Src/PS2/PS2Keyboard.c **** 0, // 1a - MOBILE
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 9


  51:Src/PS2/PS2Keyboard.c **** '5', // 1b - 5
  52:Src/PS2/PS2Keyboard.c **** 0, // 1c - EMAIL
  53:Src/PS2/PS2Keyboard.c **** '6', // 1d - 6
  54:Src/PS2/PS2Keyboard.c **** '7', // 1e - 7
  55:Src/PS2/PS2Keyboard.c **** 0, // 1f
  56:Src/PS2/PS2Keyboard.c **** 0, // 20
  57:Src/PS2/PS2Keyboard.c **** 'q', // 21 - q
  58:Src/PS2/PS2Keyboard.c **** '4', // 22 - 4
  59:Src/PS2/PS2Keyboard.c **** 'w', // 23 - w
  60:Src/PS2/PS2Keyboard.c **** 'e', // 24 - e
  61:Src/PS2/PS2Keyboard.c **** 0, // 25
  62:Src/PS2/PS2Keyboard.c **** 'r', // 26 - r
  63:Src/PS2/PS2Keyboard.c **** 0, // 27
  64:Src/PS2/PS2Keyboard.c **** 0, // 28
  65:Src/PS2/PS2Keyboard.c **** 'g', // 29 - g
  66:Src/PS2/PS2Keyboard.c **** 0, // 2a - SMS
  67:Src/PS2/PS2Keyboard.c **** 0, // 2b
  68:Src/PS2/PS2Keyboard.c **** '\n', // 2c - ENTER
  69:Src/PS2/PS2Keyboard.c **** 0, // 2d
  70:Src/PS2/PS2Keyboard.c **** 0, // 2e - CURSOR DOWN
  71:Src/PS2/PS2Keyboard.c **** 0, // 2f
  72:Src/PS2/PS2Keyboard.c **** 0, // 30
  73:Src/PS2/PS2Keyboard.c **** 'a', // 31 - a
  74:Src/PS2/PS2Keyboard.c **** 'o', // 32 - o
  75:Src/PS2/PS2Keyboard.c **** 's', // 33 - s
  76:Src/PS2/PS2Keyboard.c **** 'p', // 34 - p
  77:Src/PS2/PS2Keyboard.c **** 'd', // 35 - d
  78:Src/PS2/PS2Keyboard.c **** 'f', // 36 - f
  79:Src/PS2/PS2Keyboard.c **** 0, // 37
  80:Src/PS2/PS2Keyboard.c **** 0, // 38
  81:Src/PS2/PS2Keyboard.c **** 0, // 39
  82:Src/PS2/PS2Keyboard.c **** 'l', // 3a - l
  83:Src/PS2/PS2Keyboard.c **** '\\', // 3b - \'
  84:Src/PS2/PS2Keyboard.c **** 0, // 3c - LSHIFT
  85:Src/PS2/PS2Keyboard.c **** 'z', // 3d - z
  86:Src/PS2/PS2Keyboard.c **** 0, // 3e - CURSOR UP
  87:Src/PS2/PS2Keyboard.c **** 0, // 3f
  88:Src/PS2/PS2Keyboard.c **** 0, // 40
  89:Src/PS2/PS2Keyboard.c **** 'n', // 41 - n
  90:Src/PS2/PS2Keyboard.c **** 'm', // 42 - m
  91:Src/PS2/PS2Keyboard.c **** '?', // 43 - .?/
  92:Src/PS2/PS2Keyboard.c **** ':', // 44 - ;:
  93:Src/PS2/PS2Keyboard.c **** 0, // 45
  94:Src/PS2/PS2Keyboard.c **** 0, // 46 - SERVICES
  95:Src/PS2/PS2Keyboard.c **** 0, // 47
  96:Src/PS2/PS2Keyboard.c **** 0, // 48
  97:Src/PS2/PS2Keyboard.c **** 0, // 49 - SYMBOL
  98:Src/PS2/PS2Keyboard.c **** 0, // 4a
  99:Src/PS2/PS2Keyboard.c **** ' ', // 4b - SPACE
 100:Src/PS2/PS2Keyboard.c **** 0, // 4c
 101:Src/PS2/PS2Keyboard.c **** 0, // 4d
 102:Src/PS2/PS2Keyboard.c **** 'x', // 4e - x
 103:Src/PS2/PS2Keyboard.c **** 0, // 4f
 104:Src/PS2/PS2Keyboard.c **** 0, // 50
 105:Src/PS2/PS2Keyboard.c **** 0, // 51
 106:Src/PS2/PS2Keyboard.c **** 't', // 52 - t
 107:Src/PS2/PS2Keyboard.c **** 0, // 53
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 10


 108:Src/PS2/PS2Keyboard.c **** 'c', // 54 - c
 109:Src/PS2/PS2Keyboard.c **** 0, // 55 - RIGHT SHIFT
 110:Src/PS2/PS2Keyboard.c **** 0, // 56
 111:Src/PS2/PS2Keyboard.c **** 0, // 57
 112:Src/PS2/PS2Keyboard.c **** 0, // 58
 113:Src/PS2/PS2Keyboard.c **** 0, // 59
 114:Src/PS2/PS2Keyboard.c **** 0, // 5a
 115:Src/PS2/PS2Keyboard.c **** 'h', // 5b - h
 116:Src/PS2/PS2Keyboard.c **** 0, // 5c
 117:Src/PS2/PS2Keyboard.c **** 'y', // 5d - y
 118:Src/PS2/PS2Keyboard.c **** 0, // 5e
 119:Src/PS2/PS2Keyboard.c **** 0, // 5f
 120:Src/PS2/PS2Keyboard.c **** 0, // 60
 121:Src/PS2/PS2Keyboard.c **** 0, // 61
 122:Src/PS2/PS2Keyboard.c **** 0, // 62
 123:Src/PS2/PS2Keyboard.c **** 0, // 63
 124:Src/PS2/PS2Keyboard.c **** 0, // 64
 125:Src/PS2/PS2Keyboard.c **** 0, // 65
 126:Src/PS2/PS2Keyboard.c **** 0, // 66
 127:Src/PS2/PS2Keyboard.c **** 0, // 67
 128:Src/PS2/PS2Keyboard.c **** 0, // 68
 129:Src/PS2/PS2Keyboard.c **** 0, // 69 - OFFICE
 130:Src/PS2/PS2Keyboard.c **** 0, // 6a
 131:Src/PS2/PS2Keyboard.c **** '3', // 6b - 3
 132:Src/PS2/PS2Keyboard.c **** 127, // 6c - del
 133:Src/PS2/PS2Keyboard.c **** 0, // 6d
 134:Src/PS2/PS2Keyboard.c **** 0, // 6e
 135:Src/PS2/PS2Keyboard.c **** 0, // 6f
 136:Src/PS2/PS2Keyboard.c **** 0, // 70 - STORE
 137:Src/PS2/PS2Keyboard.c **** 27, // 71 - Esc / STOP
 138:Src/PS2/PS2Keyboard.c **** 0, // 72 - HOME
 139:Src/PS2/PS2Keyboard.c **** '2', // 73 - 2
 140:Src/PS2/PS2Keyboard.c **** '1', // 74 - 1
 141:Src/PS2/PS2Keyboard.c **** '0', // 75 - 0
 142:Src/PS2/PS2Keyboard.c **** 'k', // 76 - k
 143:Src/PS2/PS2Keyboard.c **** 0, // 77 - INTERNET
 144:Src/PS2/PS2Keyboard.c **** 0, // 78
 145:Src/PS2/PS2Keyboard.c **** '8', // 79 - 8
 146:Src/PS2/PS2Keyboard.c **** 0, // 7a - SETUP
 147:Src/PS2/PS2Keyboard.c **** 0, // 7b
 148:Src/PS2/PS2Keyboard.c **** 0, // 7c - GAMES
 149:Src/PS2/PS2Keyboard.c **** '9', // 7d - 9
 150:Src/PS2/PS2Keyboard.c **** 0, // 7e
 151:Src/PS2/PS2Keyboard.c **** 0, // 7f
 152:Src/PS2/PS2Keyboard.c **** 0, // 80
 153:Src/PS2/PS2Keyboard.c **** 0, // 81
 154:Src/PS2/PS2Keyboard.c **** 0, // 82
 155:Src/PS2/PS2Keyboard.c **** 0, // 83 - PRINT
 156:Src/PS2/PS2Keyboard.c **** 0
 157:Src/PS2/PS2Keyboard.c **** };
 158:Src/PS2/PS2Keyboard.c **** 
 159:Src/PS2/PS2Keyboard.c **** 
 160:Src/PS2/PS2Keyboard.c **** // mini Amstrad klavietura -> HID Key Scans
 161:Src/PS2/PS2Keyboard.c **** const unsigned char amstrad2hid[] = {
 162:Src/PS2/PS2Keyboard.c **** 0,
 163:Src/PS2/PS2Keyboard.c **** 0, // 1
 164:Src/PS2/PS2Keyboard.c **** 0, // 2
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 11


 165:Src/PS2/PS2Keyboard.c **** KEY_J, // 3 - j
 166:Src/PS2/PS2Keyboard.c **** 0, // 4
 167:Src/PS2/PS2Keyboard.c **** KEY_B, // 5 - b
 168:Src/PS2/PS2Keyboard.c **** 0, // 6 - ADDRESS BOOK
 169:Src/PS2/PS2Keyboard.c **** 0, // 7
 170:Src/PS2/PS2Keyboard.c **** 0, // 8
 171:Src/PS2/PS2Keyboard.c **** KEY_RIGHT, // 9 - CURSOR RIGHT
 172:Src/PS2/PS2Keyboard.c **** 0, // a
 173:Src/PS2/PS2Keyboard.c **** KEY_V, // b - v
 174:Src/PS2/PS2Keyboard.c **** 0, // c
 175:Src/PS2/PS2Keyboard.c **** KEY_U, // d - u
 176:Src/PS2/PS2Keyboard.c **** KEY_I, // e - i
 177:Src/PS2/PS2Keyboard.c **** 0, // f
 178:Src/PS2/PS2Keyboard.c **** 0, // 10
 179:Src/PS2/PS2Keyboard.c **** 0, // 11
 180:Src/PS2/PS2Keyboard.c **** 0, // 12
 181:Src/PS2/PS2Keyboard.c **** 0, // 13
 182:Src/PS2/PS2Keyboard.c **** 0, // 14
 183:Src/PS2/PS2Keyboard.c **** 0, // 15 - FAX
 184:Src/PS2/PS2Keyboard.c **** KEY_LEFT, // 16 - CURSOR LEFT
 185:Src/PS2/PS2Keyboard.c **** 0, // 17
 186:Src/PS2/PS2Keyboard.c **** 0, // 18
 187:Src/PS2/PS2Keyboard.c **** 0, // 19
 188:Src/PS2/PS2Keyboard.c **** 0, // 1a - MOBILE
 189:Src/PS2/PS2Keyboard.c **** KEY_5, // 1b - 5
 190:Src/PS2/PS2Keyboard.c **** 0, // 1c - EMAIL
 191:Src/PS2/PS2Keyboard.c **** KEY_6, // 1d - 6
 192:Src/PS2/PS2Keyboard.c **** KEY_7, // 1e - 7
 193:Src/PS2/PS2Keyboard.c **** 0, // 1f
 194:Src/PS2/PS2Keyboard.c **** 0, // 20
 195:Src/PS2/PS2Keyboard.c **** KEY_Q, // 21 - q
 196:Src/PS2/PS2Keyboard.c **** KEY_4, // 22 - 4
 197:Src/PS2/PS2Keyboard.c **** KEY_W, // 23 - w
 198:Src/PS2/PS2Keyboard.c **** KEY_E, // 24 - e
 199:Src/PS2/PS2Keyboard.c **** 0, // 25
 200:Src/PS2/PS2Keyboard.c **** KEY_R, // 26 - r
 201:Src/PS2/PS2Keyboard.c **** 0, // 27
 202:Src/PS2/PS2Keyboard.c **** 0, // 28
 203:Src/PS2/PS2Keyboard.c **** KEY_G, // 29 - g
 204:Src/PS2/PS2Keyboard.c **** 0, // 2a - SMS
 205:Src/PS2/PS2Keyboard.c **** 0, // 2b
 206:Src/PS2/PS2Keyboard.c **** KEY_ENTER, // 2c - ENTER
 207:Src/PS2/PS2Keyboard.c **** 0, // 2d
 208:Src/PS2/PS2Keyboard.c **** KEY_DOWN, // 2e - CURSOR DOWN
 209:Src/PS2/PS2Keyboard.c **** 0, // 2f
 210:Src/PS2/PS2Keyboard.c **** 0, // 30
 211:Src/PS2/PS2Keyboard.c **** KEY_A, // 31 - a
 212:Src/PS2/PS2Keyboard.c **** KEY_O, // 32 - o
 213:Src/PS2/PS2Keyboard.c **** KEY_S, // 33 - s
 214:Src/PS2/PS2Keyboard.c **** KEY_P, // 34 - p
 215:Src/PS2/PS2Keyboard.c **** KEY_D, // 35 - d
 216:Src/PS2/PS2Keyboard.c **** KEY_F, // 36 - f
 217:Src/PS2/PS2Keyboard.c **** 0, // 37
 218:Src/PS2/PS2Keyboard.c **** 0, // 38
 219:Src/PS2/PS2Keyboard.c **** 0, // 39
 220:Src/PS2/PS2Keyboard.c **** KEY_L, // 3a - l
 221:Src/PS2/PS2Keyboard.c **** KEY_BACKSLASH, // 3b - \'
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 12


 222:Src/PS2/PS2Keyboard.c **** 0, // 3c - LSHIFT
 223:Src/PS2/PS2Keyboard.c **** KEY_Z, // 3d - z
 224:Src/PS2/PS2Keyboard.c **** KEY_UP, // 3e - CURSOR UP
 225:Src/PS2/PS2Keyboard.c **** 0, // 3f
 226:Src/PS2/PS2Keyboard.c **** 0, // 40
 227:Src/PS2/PS2Keyboard.c **** KEY_N, // 41 - n
 228:Src/PS2/PS2Keyboard.c **** KEY_M, // 42 - m
 229:Src/PS2/PS2Keyboard.c **** KEY_SLASH, // 43 - .?/
 230:Src/PS2/PS2Keyboard.c **** KEY_SEMICOLON, // 44 - ;:
 231:Src/PS2/PS2Keyboard.c **** 0, // 45
 232:Src/PS2/PS2Keyboard.c **** 0, // 46 - SERVICES
 233:Src/PS2/PS2Keyboard.c **** 0, // 47
 234:Src/PS2/PS2Keyboard.c **** 0, // 48
 235:Src/PS2/PS2Keyboard.c **** KEY_CAPSLOCK, // 49 - SYMBOL
 236:Src/PS2/PS2Keyboard.c **** 0, // 4a
 237:Src/PS2/PS2Keyboard.c **** KEY_SPACE, // 4b - SPACE
 238:Src/PS2/PS2Keyboard.c **** 0, // 4c
 239:Src/PS2/PS2Keyboard.c **** 0, // 4d
 240:Src/PS2/PS2Keyboard.c **** KEY_X, // 4e - x
 241:Src/PS2/PS2Keyboard.c **** 0, // 4f
 242:Src/PS2/PS2Keyboard.c **** 0, // 50
 243:Src/PS2/PS2Keyboard.c **** 0, // 51
 244:Src/PS2/PS2Keyboard.c **** KEY_T, // 52 - t
 245:Src/PS2/PS2Keyboard.c **** 0, // 53
 246:Src/PS2/PS2Keyboard.c **** KEY_C, // 54 - c
 247:Src/PS2/PS2Keyboard.c **** 0, // 55 - RIGHT SHIFT
 248:Src/PS2/PS2Keyboard.c **** 0, // 56
 249:Src/PS2/PS2Keyboard.c **** 0, // 57
 250:Src/PS2/PS2Keyboard.c **** 0, // 58
 251:Src/PS2/PS2Keyboard.c **** 0, // 59
 252:Src/PS2/PS2Keyboard.c **** 0, // 5a
 253:Src/PS2/PS2Keyboard.c **** KEY_H, // 5b - h
 254:Src/PS2/PS2Keyboard.c **** 0, // 5c
 255:Src/PS2/PS2Keyboard.c **** KEY_Y, // 5d - y
 256:Src/PS2/PS2Keyboard.c **** 0, // 5e
 257:Src/PS2/PS2Keyboard.c **** 0, // 5f
 258:Src/PS2/PS2Keyboard.c **** 0, // 60
 259:Src/PS2/PS2Keyboard.c **** 0, // 61
 260:Src/PS2/PS2Keyboard.c **** 0, // 62
 261:Src/PS2/PS2Keyboard.c **** 0, // 63
 262:Src/PS2/PS2Keyboard.c **** 0, // 64
 263:Src/PS2/PS2Keyboard.c **** 0, // 65
 264:Src/PS2/PS2Keyboard.c **** 0, // 66
 265:Src/PS2/PS2Keyboard.c **** 0, // 67
 266:Src/PS2/PS2Keyboard.c **** 0, // 68
 267:Src/PS2/PS2Keyboard.c **** 0, // 69 - OFFICE
 268:Src/PS2/PS2Keyboard.c **** 0, // 6a
 269:Src/PS2/PS2Keyboard.c **** KEY_3, // 6b - 3
 270:Src/PS2/PS2Keyboard.c **** KEY_BACKSPACE, // 6c - del
 271:Src/PS2/PS2Keyboard.c **** 0, // 6d
 272:Src/PS2/PS2Keyboard.c **** 0, // 6e
 273:Src/PS2/PS2Keyboard.c **** 0, // 6f
 274:Src/PS2/PS2Keyboard.c **** 0, // 70 - STORE
 275:Src/PS2/PS2Keyboard.c **** KEY_ESC, // 71 - Esc / STOP
 276:Src/PS2/PS2Keyboard.c **** 0, // 72 - HOME
 277:Src/PS2/PS2Keyboard.c **** KEY_2, // 73 - 2
 278:Src/PS2/PS2Keyboard.c **** KEY_1, // 74 - 1
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 13


 279:Src/PS2/PS2Keyboard.c **** KEY_0, // 75 - 0
 280:Src/PS2/PS2Keyboard.c **** KEY_K, // 76 - k
 281:Src/PS2/PS2Keyboard.c **** 0, // 77 - INTERNET
 282:Src/PS2/PS2Keyboard.c **** 0, // 78
 283:Src/PS2/PS2Keyboard.c **** KEY_8, // 79 - 8
 284:Src/PS2/PS2Keyboard.c **** 0, // 7a - SETUP
 285:Src/PS2/PS2Keyboard.c **** 0, // 7b
 286:Src/PS2/PS2Keyboard.c **** 0, // 7c - GAMES
 287:Src/PS2/PS2Keyboard.c **** KEY_9, // 7d - 9
 288:Src/PS2/PS2Keyboard.c **** 0, // 7e
 289:Src/PS2/PS2Keyboard.c **** 0, // 7f
 290:Src/PS2/PS2Keyboard.c **** 0, // 80
 291:Src/PS2/PS2Keyboard.c **** 0, // 81
 292:Src/PS2/PS2Keyboard.c **** 0, // 82
 293:Src/PS2/PS2Keyboard.c **** KEY_SYSRQ, // 83 - PRINT
 294:Src/PS2/PS2Keyboard.c **** 0
 295:Src/PS2/PS2Keyboard.c **** };
 296:Src/PS2/PS2Keyboard.c **** 
 297:Src/PS2/PS2Keyboard.c **** 
 298:Src/PS2/PS2Keyboard.c **** 
 299:Src/PS2/PS2Keyboard.c **** unsigned char scan_decode(unsigned char i)
 300:Src/PS2/PS2Keyboard.c **** {
 161              		.loc 2 300 0
 162              		.cfi_startproc
 163              		@ args = 0, pretend = 0, frame = 0
 164              		@ frame_needed = 0, uses_anonymous_args = 0
 165              		@ link register save eliminated.
 166              	.LVL6:
 301:Src/PS2/PS2Keyboard.c **** // return amstrad2ascii[i];
 302:Src/PS2/PS2Keyboard.c ****  return amstrad2hid[i];
 303:Src/PS2/PS2Keyboard.c **** }
 167              		.loc 2 303 0
 168 0000 014B     		ldr	r3, .L6
 169 0002 185C     		ldrb	r0, [r3, r0]	@ zero_extendqisi2
 170              	.LVL7:
 171 0004 7047     		bx	lr
 172              	.L7:
 173 0006 00BF     		.align	2
 174              	.L6:
 175 0008 00000000 		.word	.LANCHOR0
 176              		.cfi_endproc
 177              	.LFE68:
 179              		.section	.text.ps2interrupt,"ax",%progbits
 180              		.align	1
 181              		.global	ps2interrupt
 182              		.syntax unified
 183              		.thumb
 184              		.thumb_func
 185              		.fpu softvfp
 187              	ps2interrupt:
 188              	.LFB69:
 304:Src/PS2/PS2Keyboard.c **** 
 305:Src/PS2/PS2Keyboard.c **** 
 306:Src/PS2/PS2Keyboard.c **** void ps2interrupt(unsigned char val)
 307:Src/PS2/PS2Keyboard.c **** {
 189              		.loc 2 307 0
 190              		.cfi_startproc
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 14


 191              		@ args = 0, pretend = 0, frame = 0
 192              		@ frame_needed = 0, uses_anonymous_args = 0
 193              	.LVL8:
 194 0000 10B5     		push	{r4, lr}
 195              	.LCFI3:
 196              		.cfi_def_cfa_offset 8
 197              		.cfi_offset 4, -8
 198              		.cfi_offset 14, -4
 199 0002 0446     		mov	r4, r0
 308:Src/PS2/PS2Keyboard.c **** uint32_t now_ms;
 309:Src/PS2/PS2Keyboard.c **** static uint8_t bitcount=0;
 310:Src/PS2/PS2Keyboard.c **** static uint8_t incoming=0;
 311:Src/PS2/PS2Keyboard.c **** static uint32_t prev_ms=0;
 312:Src/PS2/PS2Keyboard.c **** static uint8_t parity;
 313:Src/PS2/PS2Keyboard.c **** //uint8_t n;
 314:Src/PS2/PS2Keyboard.c **** 
 315:Src/PS2/PS2Keyboard.c **** 
 316:Src/PS2/PS2Keyboard.c **** 
 317:Src/PS2/PS2Keyboard.c **** 
 318:Src/PS2/PS2Keyboard.c **** now_ms = HAL_GetTick();
 200              		.loc 2 318 0
 201 0004 FFF7FEFF 		bl	HAL_GetTick
 202              	.LVL9:
 319:Src/PS2/PS2Keyboard.c **** 	if (now_ms - prev_ms > 250) {
 203              		.loc 2 319 0
 204 0008 2B4B     		ldr	r3, .L23
 205 000a 1B68     		ldr	r3, [r3]
 206 000c C31A     		subs	r3, r0, r3
 207 000e FA2B     		cmp	r3, #250
 208 0010 04D9     		bls	.L9
 320:Src/PS2/PS2Keyboard.c **** 		bitcount = 0;
 209              		.loc 2 320 0
 210 0012 0023     		movs	r3, #0
 211 0014 294A     		ldr	r2, .L23+4
 212 0016 1370     		strb	r3, [r2]
 321:Src/PS2/PS2Keyboard.c **** 		incoming = 0;
 213              		.loc 2 321 0
 214 0018 294A     		ldr	r2, .L23+8
 215 001a 1370     		strb	r3, [r2]
 216              	.L9:
 322:Src/PS2/PS2Keyboard.c **** 	}
 323:Src/PS2/PS2Keyboard.c **** 
 324:Src/PS2/PS2Keyboard.c **** 	prev_ms = now_ms;
 217              		.loc 2 324 0
 218 001c 264B     		ldr	r3, .L23
 219 001e 1860     		str	r0, [r3]
 325:Src/PS2/PS2Keyboard.c **** 
 326:Src/PS2/PS2Keyboard.c **** 
 327:Src/PS2/PS2Keyboard.c **** 
 328:Src/PS2/PS2Keyboard.c **** 
 329:Src/PS2/PS2Keyboard.c **** bitcount++;         // Now point to next bit
 220              		.loc 2 329 0
 221 0020 264A     		ldr	r2, .L23+4
 222 0022 1378     		ldrb	r3, [r2]	@ zero_extendqisi2
 223 0024 0133     		adds	r3, r3, #1
 224 0026 DBB2     		uxtb	r3, r3
 225 0028 1370     		strb	r3, [r2]
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 15


 330:Src/PS2/PS2Keyboard.c ****     switch( bitcount )
 226              		.loc 2 330 0
 227 002a 013B     		subs	r3, r3, #1
 228 002c 0A2B     		cmp	r3, #10
 229 002e 3ED8     		bhi	.L10
 230 0030 DFE803F0 		tbb	[pc, r3]
 231              	.L12:
 232 0034 06       		.byte	(.L11-.L12)/2
 233 0035 0C       		.byte	(.L13-.L12)/2
 234 0036 0C       		.byte	(.L13-.L12)/2
 235 0037 0C       		.byte	(.L13-.L12)/2
 236 0038 0C       		.byte	(.L13-.L12)/2
 237 0039 0C       		.byte	(.L13-.L12)/2
 238 003a 0C       		.byte	(.L13-.L12)/2
 239 003b 0C       		.byte	(.L13-.L12)/2
 240 003c 0C       		.byte	(.L13-.L12)/2
 241 003d 1C       		.byte	(.L14-.L12)/2
 242 003e 27       		.byte	(.L15-.L12)/2
 243 003f 00       		.p2align 1
 244              	.L11:
 331:Src/PS2/PS2Keyboard.c ****        {
 332:Src/PS2/PS2Keyboard.c ****        case 1:  // Start bit
 333:Src/PS2/PS2Keyboard.c ****                 incoming = 0;
 245              		.loc 2 333 0
 246 0040 0023     		movs	r3, #0
 247 0042 1F4A     		ldr	r2, .L23+8
 248 0044 1370     		strb	r3, [r2]
 334:Src/PS2/PS2Keyboard.c ****                 parity = 0;
 249              		.loc 2 334 0
 250 0046 1F4A     		ldr	r2, .L23+12
 251 0048 1370     		strb	r3, [r2]
 335:Src/PS2/PS2Keyboard.c ****                 break;
 252              		.loc 2 335 0
 253 004a 33E0     		b	.L8
 254              	.L13:
 336:Src/PS2/PS2Keyboard.c ****        case 2:
 337:Src/PS2/PS2Keyboard.c ****        case 3:
 338:Src/PS2/PS2Keyboard.c ****        case 4:
 339:Src/PS2/PS2Keyboard.c ****        case 5:
 340:Src/PS2/PS2Keyboard.c ****        case 6:
 341:Src/PS2/PS2Keyboard.c ****        case 7:
 342:Src/PS2/PS2Keyboard.c ****        case 8:
 343:Src/PS2/PS2Keyboard.c ****        case 9:  // Data bits
 344:Src/PS2/PS2Keyboard.c ****                 parity += val;        // another one received ?
 255              		.loc 2 344 0
 256 004c 1D4A     		ldr	r2, .L23+12
 257 004e 1378     		ldrb	r3, [r2]	@ zero_extendqisi2
 258 0050 2344     		add	r3, r3, r4
 259 0052 1370     		strb	r3, [r2]
 345:Src/PS2/PS2Keyboard.c ****                 incoming >>= 1;       // right shift one place for next bit
 260              		.loc 2 345 0
 261 0054 1A4B     		ldr	r3, .L23+8
 262 0056 1B78     		ldrb	r3, [r3]	@ zero_extendqisi2
 263 0058 5A08     		lsrs	r2, r3, #1
 346:Src/PS2/PS2Keyboard.c ****                 incoming |= ( val ) ? 0x80 : 0;    // or in MSbit
 264              		.loc 2 346 0
 265 005a 24B9     		cbnz	r4, .L22
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 16


 266 005c 0023     		movs	r3, #0
 267              	.L17:
 268              		.loc 2 346 0 is_stmt 0 discriminator 4
 269 005e 1343     		orrs	r3, r3, r2
 270 0060 174A     		ldr	r2, .L23+8
 271 0062 1370     		strb	r3, [r2]
 347:Src/PS2/PS2Keyboard.c ****                 break;
 272              		.loc 2 347 0 is_stmt 1 discriminator 4
 273 0064 26E0     		b	.L8
 274              	.L22:
 346:Src/PS2/PS2Keyboard.c ****                 incoming |= ( val ) ? 0x80 : 0;    // or in MSbit
 275              		.loc 2 346 0
 276 0066 6FF07F03 		mvn	r3, #127
 277 006a F8E7     		b	.L17
 278              	.L14:
 348:Src/PS2/PS2Keyboard.c ****        case 10: // Parity check
 349:Src/PS2/PS2Keyboard.c ****                 parity &= 1;          // Get LSB if 1 = odd number of 1's so parity should be 0
 279              		.loc 2 349 0
 280 006c 154A     		ldr	r2, .L23+12
 281 006e 1378     		ldrb	r3, [r2]	@ zero_extendqisi2
 282 0070 03F00103 		and	r3, r3, #1
 283 0074 1370     		strb	r3, [r2]
 350:Src/PS2/PS2Keyboard.c ****                 if( parity == val )   // Both same parity error
 284              		.loc 2 350 0
 285 0076 A342     		cmp	r3, r4
 286 0078 1CD1     		bne	.L8
 351:Src/PS2/PS2Keyboard.c ****                   parity = 0xFD;      // To ensure at next bit count clear and discard
 287              		.loc 2 351 0
 288 007a 1346     		mov	r3, r2
 289 007c FD22     		movs	r2, #253
 290 007e 1A70     		strb	r2, [r3]
 291 0080 18E0     		b	.L8
 292              	.L15:
 352:Src/PS2/PS2Keyboard.c ****                 break;
 353:Src/PS2/PS2Keyboard.c ****        case 11: // Stop bit
 354:Src/PS2/PS2Keyboard.c ****                 if( parity >= 0xFD )  // had parity error
 293              		.loc 2 354 0
 294 0082 104B     		ldr	r3, .L23+12
 295 0084 1B78     		ldrb	r3, [r3]	@ zero_extendqisi2
 296 0086 FC2B     		cmp	r3, #252
 297 0088 11D8     		bhi	.L10
 355:Src/PS2/PS2Keyboard.c ****                   {
 356:Src/PS2/PS2Keyboard.c ****                   // Should send resend byte command here currently discard
 357:Src/PS2/PS2Keyboard.c ****                   }
 358:Src/PS2/PS2Keyboard.c ****                 else                  // Good so save byte in buffer
 359:Src/PS2/PS2Keyboard.c ****                   {
 360:Src/PS2/PS2Keyboard.c ****                   val = head + 1;
 298              		.loc 2 360 0
 299 008a 0F4B     		ldr	r3, .L23+16
 300 008c 1B78     		ldrb	r3, [r3]	@ zero_extendqisi2
 301 008e 0133     		adds	r3, r3, #1
 302 0090 DBB2     		uxtb	r3, r3
 303              	.LVL10:
 361:Src/PS2/PS2Keyboard.c ****                   if( val >= PS2BUFFER_SIZE )
 304              		.loc 2 361 0
 305 0092 0F2B     		cmp	r3, #15
 306 0094 00D9     		bls	.L18
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 17


 362:Src/PS2/PS2Keyboard.c ****                     val = 0;
 307              		.loc 2 362 0
 308 0096 0023     		movs	r3, #0
 309              	.LVL11:
 310              	.L18:
 363:Src/PS2/PS2Keyboard.c ****                   if( val != tail )
 311              		.loc 2 363 0
 312 0098 0C4A     		ldr	r2, .L23+20
 313 009a 1278     		ldrb	r2, [r2]	@ zero_extendqisi2
 314 009c D2B2     		uxtb	r2, r2
 315 009e 9A42     		cmp	r2, r3
 316 00a0 05D0     		beq	.L10
 364:Src/PS2/PS2Keyboard.c ****                     {
 365:Src/PS2/PS2Keyboard.c ****                     PS2buffer[ val ] = incoming;
 317              		.loc 2 365 0
 318 00a2 074A     		ldr	r2, .L23+8
 319 00a4 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
 320 00a6 0A4A     		ldr	r2, .L23+24
 321 00a8 D154     		strb	r1, [r2, r3]
 366:Src/PS2/PS2Keyboard.c ****                     head = val;
 322              		.loc 2 366 0
 323 00aa 074A     		ldr	r2, .L23+16
 324 00ac 1370     		strb	r3, [r2]
 325              	.LVL12:
 326              	.L10:
 367:Src/PS2/PS2Keyboard.c ****                     }
 368:Src/PS2/PS2Keyboard.c ****                   }
 369:Src/PS2/PS2Keyboard.c ****                 // fall through to default
 370:Src/PS2/PS2Keyboard.c ****        default: // in case of weird error and end of byte reception re-sync
 371:Src/PS2/PS2Keyboard.c ****                 bitcount = 0;
 327              		.loc 2 371 0
 328 00ae 034B     		ldr	r3, .L23+4
 329 00b0 0022     		movs	r2, #0
 330 00b2 1A70     		strb	r2, [r3]
 331              	.L8:
 372:Src/PS2/PS2Keyboard.c ****       }
 373:Src/PS2/PS2Keyboard.c **** 
 374:Src/PS2/PS2Keyboard.c **** 
 375:Src/PS2/PS2Keyboard.c **** 
 376:Src/PS2/PS2Keyboard.c **** 
 377:Src/PS2/PS2Keyboard.c **** 
 378:Src/PS2/PS2Keyboard.c **** 
 379:Src/PS2/PS2Keyboard.c **** 
 380:Src/PS2/PS2Keyboard.c **** 
 381:Src/PS2/PS2Keyboard.c **** 
 382:Src/PS2/PS2Keyboard.c **** 
 383:Src/PS2/PS2Keyboard.c **** 
 384:Src/PS2/PS2Keyboard.c **** 
 385:Src/PS2/PS2Keyboard.c **** 
 386:Src/PS2/PS2Keyboard.c **** 
 387:Src/PS2/PS2Keyboard.c **** 
 388:Src/PS2/PS2Keyboard.c **** 
 389:Src/PS2/PS2Keyboard.c **** 
 390:Src/PS2/PS2Keyboard.c **** 
 391:Src/PS2/PS2Keyboard.c **** 
 392:Src/PS2/PS2Keyboard.c **** 
 393:Src/PS2/PS2Keyboard.c **** 
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 18


 394:Src/PS2/PS2Keyboard.c **** 
 395:Src/PS2/PS2Keyboard.c **** 
 396:Src/PS2/PS2Keyboard.c **** 
 397:Src/PS2/PS2Keyboard.c **** 
 398:Src/PS2/PS2Keyboard.c **** /* CIA KITAS VARIANTAS, irgi veikia.... */
 399:Src/PS2/PS2Keyboard.c **** 	
 400:Src/PS2/PS2Keyboard.c **** /*	
 401:Src/PS2/PS2Keyboard.c **** 	n = bitcount - 1;
 402:Src/PS2/PS2Keyboard.c **** 	if (n <= 7) {incoming |= (val << n);}
 403:Src/PS2/PS2Keyboard.c **** 	bitcount++;
 404:Src/PS2/PS2Keyboard.c **** 	if (bitcount == 11) {
 405:Src/PS2/PS2Keyboard.c **** 		uint8_t i = head + 1;
 406:Src/PS2/PS2Keyboard.c **** 		if (i >= PS2BUFFER_SIZE) i = 0;
 407:Src/PS2/PS2Keyboard.c **** 		if (i != tail) {PS2buffer[i] = incoming; head = i;}
 408:Src/PS2/PS2Keyboard.c **** 		bitcount = 0;
 409:Src/PS2/PS2Keyboard.c **** 		incoming = 0;
 410:Src/PS2/PS2Keyboard.c **** 	}
 411:Src/PS2/PS2Keyboard.c **** */	
 412:Src/PS2/PS2Keyboard.c **** }
 332              		.loc 2 412 0
 333 00b4 10BD     		pop	{r4, pc}
 334              	.L24:
 335 00b6 00BF     		.align	2
 336              	.L23:
 337 00b8 00000000 		.word	.LANCHOR1
 338 00bc 00000000 		.word	.LANCHOR2
 339 00c0 00000000 		.word	.LANCHOR3
 340 00c4 00000000 		.word	.LANCHOR4
 341 00c8 00000000 		.word	.LANCHOR5
 342 00cc 00000000 		.word	.LANCHOR6
 343 00d0 00000000 		.word	.LANCHOR7
 344              		.cfi_endproc
 345              	.LFE69:
 347              		.section	.text.get_PS2scan_code,"ax",%progbits
 348              		.align	1
 349              		.global	get_PS2scan_code
 350              		.syntax unified
 351              		.thumb
 352              		.thumb_func
 353              		.fpu softvfp
 355              	get_PS2scan_code:
 356              	.LFB70:
 413:Src/PS2/PS2Keyboard.c **** 
 414:Src/PS2/PS2Keyboard.c **** uint8_t get_PS2scan_code(void)
 415:Src/PS2/PS2Keyboard.c **** {
 357              		.loc 2 415 0
 358              		.cfi_startproc
 359              		@ args = 0, pretend = 0, frame = 0
 360              		@ frame_needed = 0, uses_anonymous_args = 0
 361              		@ link register save eliminated.
 416:Src/PS2/PS2Keyboard.c **** 	uint8_t c, i;
 417:Src/PS2/PS2Keyboard.c **** 
 418:Src/PS2/PS2Keyboard.c **** 	i = tail;
 362              		.loc 2 418 0
 363 0000 0A4B     		ldr	r3, .L30
 364 0002 1B78     		ldrb	r3, [r3]	@ zero_extendqisi2
 365 0004 DBB2     		uxtb	r3, r3
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 19


 366              	.LVL13:
 419:Src/PS2/PS2Keyboard.c **** 	if (i == head) return 0;
 367              		.loc 2 419 0
 368 0006 0A4A     		ldr	r2, .L30+4
 369 0008 1278     		ldrb	r2, [r2]	@ zero_extendqisi2
 370 000a D2B2     		uxtb	r2, r2
 371 000c 9A42     		cmp	r2, r3
 372 000e 0AD0     		beq	.L28
 420:Src/PS2/PS2Keyboard.c **** 	i++;
 373              		.loc 2 420 0
 374 0010 0133     		adds	r3, r3, #1
 375              	.LVL14:
 376 0012 DBB2     		uxtb	r3, r3
 377              	.LVL15:
 421:Src/PS2/PS2Keyboard.c **** 	if (i >= PS2BUFFER_SIZE) i = 0;
 378              		.loc 2 421 0
 379 0014 0F2B     		cmp	r3, #15
 380 0016 00D9     		bls	.L27
 381 0018 0023     		movs	r3, #0
 382              	.LVL16:
 383              	.L27:
 422:Src/PS2/PS2Keyboard.c **** 	c = PS2buffer[i];
 384              		.loc 2 422 0
 385 001a 064A     		ldr	r2, .L30+8
 386 001c D05C     		ldrb	r0, [r2, r3]	@ zero_extendqisi2
 387 001e C0B2     		uxtb	r0, r0
 388              	.LVL17:
 423:Src/PS2/PS2Keyboard.c **** 	tail = i;
 389              		.loc 2 423 0
 390 0020 024A     		ldr	r2, .L30
 391 0022 1370     		strb	r3, [r2]
 424:Src/PS2/PS2Keyboard.c **** 	return c;
 392              		.loc 2 424 0
 393 0024 7047     		bx	lr
 394              	.LVL18:
 395              	.L28:
 419:Src/PS2/PS2Keyboard.c **** 	i++;
 396              		.loc 2 419 0
 397 0026 0020     		movs	r0, #0
 425:Src/PS2/PS2Keyboard.c **** }
 398              		.loc 2 425 0
 399 0028 7047     		bx	lr
 400              	.L31:
 401 002a 00BF     		.align	2
 402              	.L30:
 403 002c 00000000 		.word	.LANCHOR6
 404 0030 00000000 		.word	.LANCHOR5
 405 0034 00000000 		.word	.LANCHOR7
 406              		.cfi_endproc
 407              	.LFE70:
 409              		.section	.text.SystemClock_Config,"ax",%progbits
 410              		.align	1
 411              		.global	SystemClock_Config
 412              		.syntax unified
 413              		.thumb
 414              		.thumb_func
 415              		.fpu softvfp
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 20


 417              	SystemClock_Config:
 418              	.LFB72:
 170:Src/main.c    ****   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 419              		.loc 1 170 0
 420              		.cfi_startproc
 421              		@ args = 0, pretend = 0, frame = 80
 422              		@ frame_needed = 0, uses_anonymous_args = 0
 423 0000 70B5     		push	{r4, r5, r6, lr}
 424              	.LCFI4:
 425              		.cfi_def_cfa_offset 16
 426              		.cfi_offset 4, -16
 427              		.cfi_offset 5, -12
 428              		.cfi_offset 6, -8
 429              		.cfi_offset 14, -4
 430 0002 94B0     		sub	sp, sp, #80
 431              	.LCFI5:
 432              		.cfi_def_cfa_offset 96
 171:Src/main.c    ****   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
 433              		.loc 1 171 0
 434 0004 0024     		movs	r4, #0
 435 0006 0C94     		str	r4, [sp, #48]
 436 0008 0D94     		str	r4, [sp, #52]
 437 000a 0F94     		str	r4, [sp, #60]
 438 000c 1094     		str	r4, [sp, #64]
 172:Src/main.c    ****   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
 439              		.loc 1 172 0
 440 000e 0594     		str	r4, [sp, #20]
 441 0010 0694     		str	r4, [sp, #24]
 442 0012 0794     		str	r4, [sp, #28]
 443 0014 0894     		str	r4, [sp, #32]
 444 0016 0994     		str	r4, [sp, #36]
 173:Src/main.c    **** 
 445              		.loc 1 173 0
 446 0018 0194     		str	r4, [sp, #4]
 447 001a 0294     		str	r4, [sp, #8]
 448 001c 0394     		str	r4, [sp, #12]
 449 001e 0494     		str	r4, [sp, #16]
 177:Src/main.c    ****   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
 450              		.loc 1 177 0
 451 0020 0125     		movs	r5, #1
 452 0022 0A95     		str	r5, [sp, #40]
 178:Src/main.c    ****   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
 453              		.loc 1 178 0
 454 0024 4FF48033 		mov	r3, #65536
 455 0028 0B93     		str	r3, [sp, #44]
 180:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
 456              		.loc 1 180 0
 457 002a 0E95     		str	r5, [sp, #56]
 181:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
 458              		.loc 1 181 0
 459 002c 0226     		movs	r6, #2
 460 002e 1196     		str	r6, [sp, #68]
 182:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
 461              		.loc 1 182 0
 462 0030 1293     		str	r3, [sp, #72]
 183:Src/main.c    ****   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
 463              		.loc 1 183 0
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 21


 464 0032 4FF48013 		mov	r3, #1048576
 465 0036 1393     		str	r3, [sp, #76]
 184:Src/main.c    ****   {
 466              		.loc 1 184 0
 467 0038 0AA8     		add	r0, sp, #40
 468 003a FFF7FEFF 		bl	HAL_RCC_OscConfig
 469              	.LVL19:
 190:Src/main.c    ****                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
 470              		.loc 1 190 0
 471 003e 0F23     		movs	r3, #15
 472 0040 0593     		str	r3, [sp, #20]
 192:Src/main.c    ****   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
 473              		.loc 1 192 0
 474 0042 0696     		str	r6, [sp, #24]
 193:Src/main.c    ****   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
 475              		.loc 1 193 0
 476 0044 0794     		str	r4, [sp, #28]
 194:Src/main.c    ****   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
 477              		.loc 1 194 0
 478 0046 4FF48063 		mov	r3, #1024
 479 004a 0893     		str	r3, [sp, #32]
 195:Src/main.c    **** 
 480              		.loc 1 195 0
 481 004c 0994     		str	r4, [sp, #36]
 197:Src/main.c    ****   {
 482              		.loc 1 197 0
 483 004e 2946     		mov	r1, r5
 484 0050 05A8     		add	r0, sp, #20
 485 0052 FFF7FEFF 		bl	HAL_RCC_ClockConfig
 486              	.LVL20:
 201:Src/main.c    ****   PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL;
 487              		.loc 1 201 0
 488 0056 1023     		movs	r3, #16
 489 0058 0193     		str	r3, [sp, #4]
 202:Src/main.c    ****   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
 490              		.loc 1 202 0
 491 005a 4FF48003 		mov	r3, #4194304
 492 005e 0493     		str	r3, [sp, #16]
 203:Src/main.c    ****   {
 493              		.loc 1 203 0
 494 0060 01A8     		add	r0, sp, #4
 495 0062 FFF7FEFF 		bl	HAL_RCCEx_PeriphCLKConfig
 496              	.LVL21:
 207:Src/main.c    **** 
 497              		.loc 1 207 0
 498 0066 14B0     		add	sp, sp, #80
 499              	.LCFI6:
 500              		.cfi_def_cfa_offset 16
 501              		@ sp needed
 502 0068 70BD     		pop	{r4, r5, r6, pc}
 503              		.cfi_endproc
 504              	.LFE72:
 506              		.section	.text.main,"ax",%progbits
 507              		.align	1
 508              		.global	main
 509              		.syntax unified
 510              		.thumb
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 22


 511              		.thumb_func
 512              		.fpu softvfp
 514              	main:
 515              	.LFB71:
  68:Src/main.c    ****   /* USER CODE BEGIN 1 */
 516              		.loc 1 68 0
 517              		.cfi_startproc
 518              		@ args = 0, pretend = 0, frame = 8
 519              		@ frame_needed = 0, uses_anonymous_args = 0
 520 0000 10B5     		push	{r4, lr}
 521              	.LCFI7:
 522              		.cfi_def_cfa_offset 8
 523              		.cfi_offset 4, -8
 524              		.cfi_offset 14, -4
 525 0002 82B0     		sub	sp, sp, #8
 526              	.LCFI8:
 527              		.cfi_def_cfa_offset 16
 528              	.LVL22:
  83:Src/main.c    **** kbdHID.res=0;
 529              		.loc 1 83 0
 530 0004 0024     		movs	r4, #0
 531 0006 8DF80040 		strb	r4, [sp]
  84:Src/main.c    **** kbdHID.key[0]=0;
 532              		.loc 1 84 0
 533 000a 8DF80140 		strb	r4, [sp, #1]
  85:Src/main.c    **** kbdHID.key[1]=0;
 534              		.loc 1 85 0
 535 000e 8DF80240 		strb	r4, [sp, #2]
  86:Src/main.c    **** kbdHID.key[2]=0;
 536              		.loc 1 86 0
 537 0012 8DF80340 		strb	r4, [sp, #3]
  87:Src/main.c    **** kbdHID.key[3]=0;
 538              		.loc 1 87 0
 539 0016 8DF80440 		strb	r4, [sp, #4]
  88:Src/main.c    **** kbdHID.key[4]=0;
 540              		.loc 1 88 0
 541 001a 8DF80540 		strb	r4, [sp, #5]
  89:Src/main.c    **** kbdHID.key[5]=0;
 542              		.loc 1 89 0
 543 001e 8DF80640 		strb	r4, [sp, #6]
  90:Src/main.c    **** 
 544              		.loc 1 90 0
 545 0022 8DF80740 		strb	r4, [sp, #7]
  97:Src/main.c    **** 
 546              		.loc 1 97 0
 547 0026 FFF7FEFF 		bl	HAL_Init
 548              	.LVL23:
 104:Src/main.c    **** 
 549              		.loc 1 104 0
 550 002a FFF7FEFF 		bl	SystemClock_Config
 551              	.LVL24:
 111:Src/main.c    ****   MX_USB_DEVICE_Init();
 552              		.loc 1 111 0
 553 002e FFF7FEFF 		bl	MX_GPIO_Init
 554              	.LVL25:
 112:Src/main.c    ****   /* USER CODE BEGIN 2 */
 555              		.loc 1 112 0
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 23


 556 0032 FFF7FEFF 		bl	MX_USB_DEVICE_Init
 557              	.LVL26:
 558 0036 00E0     		b	.L35
 559              	.LVL27:
 560              	.L38:
 133:Src/main.c    **** 								else
 561              		.loc 1 133 0
 562 0038 0024     		movs	r4, #0
 563              	.LVL28:
 564              	.L35:
 123:Src/main.c    **** 	if (scancode !=0) {
 565              		.loc 1 123 0
 566 003a FFF7FEFF 		bl	get_PS2scan_code
 567              	.LVL29:
 124:Src/main.c    **** 						if(scancode==0xF0)
 568              		.loc 1 124 0
 569 003e 0028     		cmp	r0, #0
 570 0040 FBD0     		beq	.L35
 125:Src/main.c    **** 							{ passcode=1;
 571              		.loc 1 125 0
 572 0042 F028     		cmp	r0, #240
 573 0044 0BD0     		beq	.L40
 132:Src/main.c    **** 								{passcode=0;}
 574              		.loc 1 132 0
 575 0046 002C     		cmp	r4, #0
 576 0048 F6D1     		bne	.L38
 136:Src/main.c    **** 								kbdHID.key[0]= c;
 577              		.loc 1 136 0
 578 004a FFF7FEFF 		bl	scan_decode
 579              	.LVL30:
 137:Src/main.c    **** 								USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&kbdHID, sizeof(struct keyboardHID_t));
 580              		.loc 1 137 0
 581 004e 8DF80200 		strb	r0, [sp, #2]
 138:Src/main.c    **** 								}
 582              		.loc 1 138 0
 583 0052 0822     		movs	r2, #8
 584 0054 6946     		mov	r1, sp
 585 0056 0748     		ldr	r0, .L41
 586              	.LVL31:
 587 0058 FFF7FEFF 		bl	USBD_HID_SendReport
 588              	.LVL32:
 589 005c EDE7     		b	.L35
 590              	.LVL33:
 591              	.L40:
 127:Src/main.c    **** 							USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&kbdHID, sizeof(struct keyboardHID_t));
 592              		.loc 1 127 0
 593 005e 0023     		movs	r3, #0
 594 0060 8DF80230 		strb	r3, [sp, #2]
 128:Src/main.c    **** 							}
 595              		.loc 1 128 0
 596 0064 0822     		movs	r2, #8
 597 0066 6946     		mov	r1, sp
 598 0068 0248     		ldr	r0, .L41
 599              	.LVL34:
 600 006a FFF7FEFF 		bl	USBD_HID_SendReport
 601              	.LVL35:
 126:Src/main.c    **** 							kbdHID.key[0]= 0;
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 24


 602              		.loc 1 126 0
 603 006e 0124     		movs	r4, #1
 604 0070 E3E7     		b	.L35
 605              	.L42:
 606 0072 00BF     		.align	2
 607              	.L41:
 608 0074 00000000 		.word	hUsbDeviceFS
 609              		.cfi_endproc
 610              	.LFE71:
 612              		.section	.text.Error_Handler,"ax",%progbits
 613              		.align	1
 614              		.global	Error_Handler
 615              		.syntax unified
 616              		.thumb
 617              		.thumb_func
 618              		.fpu softvfp
 620              	Error_Handler:
 621              	.LFB74:
 250:Src/main.c    **** 
 251:Src/main.c    **** /* USER CODE BEGIN 4 */
 252:Src/main.c    **** 
 253:Src/main.c    **** /* USER CODE END 4 */
 254:Src/main.c    **** 
 255:Src/main.c    **** /**
 256:Src/main.c    ****   * @brief  This function is executed in case of error occurrence.
 257:Src/main.c    ****   * @retval None
 258:Src/main.c    ****   */
 259:Src/main.c    **** void Error_Handler(void)
 260:Src/main.c    **** {
 622              		.loc 1 260 0
 623              		.cfi_startproc
 624              		@ args = 0, pretend = 0, frame = 0
 625              		@ frame_needed = 0, uses_anonymous_args = 0
 626              		@ link register save eliminated.
 261:Src/main.c    ****   /* USER CODE BEGIN Error_Handler_Debug */
 262:Src/main.c    ****   /* User can add his own implementation to report the HAL error return state */
 263:Src/main.c    **** 
 264:Src/main.c    ****   /* USER CODE END Error_Handler_Debug */
 265:Src/main.c    **** }
 627              		.loc 1 265 0
 628 0000 7047     		bx	lr
 629              		.cfi_endproc
 630              	.LFE74:
 632              		.global	amstrad2hid
 633              		.global	amstrad2ascii
 634              		.section	.bss.PS2buffer,"aw",%nobits
 635              		.align	2
 636              		.set	.LANCHOR7,. + 0
 639              	PS2buffer:
 640 0000 00000000 		.space	16
 640      00000000 
 640      00000000 
 640      00000000 
 641              		.section	.bss.bitcount.7551,"aw",%nobits
 642              		.set	.LANCHOR2,. + 0
 645              	bitcount.7551:
 646 0000 00       		.space	1
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 25


 647              		.section	.bss.head,"aw",%nobits
 648              		.set	.LANCHOR5,. + 0
 651              	head:
 652 0000 00       		.space	1
 653              		.section	.bss.incoming.7552,"aw",%nobits
 654              		.set	.LANCHOR3,. + 0
 657              	incoming.7552:
 658 0000 00       		.space	1
 659              		.section	.bss.parity.7554,"aw",%nobits
 660              		.set	.LANCHOR4,. + 0
 663              	parity.7554:
 664 0000 00       		.space	1
 665              		.section	.bss.prev_ms.7553,"aw",%nobits
 666              		.align	2
 667              		.set	.LANCHOR1,. + 0
 670              	prev_ms.7553:
 671 0000 00000000 		.space	4
 672              		.section	.bss.tail,"aw",%nobits
 673              		.set	.LANCHOR6,. + 0
 676              	tail:
 677 0000 00       		.space	1
 678              		.section	.rodata.amstrad2ascii,"a",%progbits
 679              		.align	2
 682              	amstrad2ascii:
 683 0000 00       		.byte	0
 684 0001 00       		.byte	0
 685 0002 00       		.byte	0
 686 0003 6A       		.byte	106
 687 0004 00       		.byte	0
 688 0005 62       		.byte	98
 689 0006 00       		.byte	0
 690 0007 00       		.byte	0
 691 0008 00       		.byte	0
 692 0009 00       		.byte	0
 693 000a 00       		.byte	0
 694 000b 76       		.byte	118
 695 000c 00       		.byte	0
 696 000d 75       		.byte	117
 697 000e 69       		.byte	105
 698 000f 00       		.byte	0
 699 0010 00       		.byte	0
 700 0011 00       		.byte	0
 701 0012 00       		.byte	0
 702 0013 00       		.byte	0
 703 0014 00       		.byte	0
 704 0015 00       		.byte	0
 705 0016 00       		.byte	0
 706 0017 00       		.byte	0
 707 0018 00       		.byte	0
 708 0019 00       		.byte	0
 709 001a 00       		.byte	0
 710 001b 35       		.byte	53
 711 001c 00       		.byte	0
 712 001d 36       		.byte	54
 713 001e 37       		.byte	55
 714 001f 00       		.byte	0
 715 0020 00       		.byte	0
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 26


 716 0021 71       		.byte	113
 717 0022 34       		.byte	52
 718 0023 77       		.byte	119
 719 0024 65       		.byte	101
 720 0025 00       		.byte	0
 721 0026 72       		.byte	114
 722 0027 00       		.byte	0
 723 0028 00       		.byte	0
 724 0029 67       		.byte	103
 725 002a 00       		.byte	0
 726 002b 00       		.byte	0
 727 002c 0A       		.byte	10
 728 002d 00       		.byte	0
 729 002e 00       		.byte	0
 730 002f 00       		.byte	0
 731 0030 00       		.byte	0
 732 0031 61       		.byte	97
 733 0032 6F       		.byte	111
 734 0033 73       		.byte	115
 735 0034 70       		.byte	112
 736 0035 64       		.byte	100
 737 0036 66       		.byte	102
 738 0037 00       		.byte	0
 739 0038 00       		.byte	0
 740 0039 00       		.byte	0
 741 003a 6C       		.byte	108
 742 003b 5C       		.byte	92
 743 003c 00       		.byte	0
 744 003d 7A       		.byte	122
 745 003e 00       		.byte	0
 746 003f 00       		.byte	0
 747 0040 00       		.byte	0
 748 0041 6E       		.byte	110
 749 0042 6D       		.byte	109
 750 0043 3F       		.byte	63
 751 0044 3A       		.byte	58
 752 0045 00       		.byte	0
 753 0046 00       		.byte	0
 754 0047 00       		.byte	0
 755 0048 00       		.byte	0
 756 0049 00       		.byte	0
 757 004a 00       		.byte	0
 758 004b 20       		.byte	32
 759 004c 00       		.byte	0
 760 004d 00       		.byte	0
 761 004e 78       		.byte	120
 762 004f 00       		.byte	0
 763 0050 00       		.byte	0
 764 0051 00       		.byte	0
 765 0052 74       		.byte	116
 766 0053 00       		.byte	0
 767 0054 63       		.byte	99
 768 0055 00       		.byte	0
 769 0056 00       		.byte	0
 770 0057 00       		.byte	0
 771 0058 00       		.byte	0
 772 0059 00       		.byte	0
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 27


 773 005a 00       		.byte	0
 774 005b 68       		.byte	104
 775 005c 00       		.byte	0
 776 005d 79       		.byte	121
 777 005e 00       		.byte	0
 778 005f 00       		.byte	0
 779 0060 00       		.byte	0
 780 0061 00       		.byte	0
 781 0062 00       		.byte	0
 782 0063 00       		.byte	0
 783 0064 00       		.byte	0
 784 0065 00       		.byte	0
 785 0066 00       		.byte	0
 786 0067 00       		.byte	0
 787 0068 00       		.byte	0
 788 0069 00       		.byte	0
 789 006a 00       		.byte	0
 790 006b 33       		.byte	51
 791 006c 7F       		.byte	127
 792 006d 00       		.byte	0
 793 006e 00       		.byte	0
 794 006f 00       		.byte	0
 795 0070 00       		.byte	0
 796 0071 1B       		.byte	27
 797 0072 00       		.byte	0
 798 0073 32       		.byte	50
 799 0074 31       		.byte	49
 800 0075 30       		.byte	48
 801 0076 6B       		.byte	107
 802 0077 00       		.byte	0
 803 0078 00       		.byte	0
 804 0079 38       		.byte	56
 805 007a 00       		.byte	0
 806 007b 00       		.byte	0
 807 007c 00       		.byte	0
 808 007d 39       		.byte	57
 809 007e 00       		.byte	0
 810 007f 00       		.byte	0
 811 0080 00       		.byte	0
 812 0081 00       		.byte	0
 813 0082 00       		.byte	0
 814 0083 00       		.byte	0
 815 0084 00       		.byte	0
 816              		.section	.rodata.amstrad2hid,"a",%progbits
 817              		.align	2
 818              		.set	.LANCHOR0,. + 0
 821              	amstrad2hid:
 822 0000 00       		.byte	0
 823 0001 00       		.byte	0
 824 0002 00       		.byte	0
 825 0003 0D       		.byte	13
 826 0004 00       		.byte	0
 827 0005 05       		.byte	5
 828 0006 00       		.byte	0
 829 0007 00       		.byte	0
 830 0008 00       		.byte	0
 831 0009 4F       		.byte	79
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 28


 832 000a 00       		.byte	0
 833 000b 19       		.byte	25
 834 000c 00       		.byte	0
 835 000d 18       		.byte	24
 836 000e 0C       		.byte	12
 837 000f 00       		.byte	0
 838 0010 00       		.byte	0
 839 0011 00       		.byte	0
 840 0012 00       		.byte	0
 841 0013 00       		.byte	0
 842 0014 00       		.byte	0
 843 0015 00       		.byte	0
 844 0016 50       		.byte	80
 845 0017 00       		.byte	0
 846 0018 00       		.byte	0
 847 0019 00       		.byte	0
 848 001a 00       		.byte	0
 849 001b 22       		.byte	34
 850 001c 00       		.byte	0
 851 001d 23       		.byte	35
 852 001e 24       		.byte	36
 853 001f 00       		.byte	0
 854 0020 00       		.byte	0
 855 0021 14       		.byte	20
 856 0022 21       		.byte	33
 857 0023 1A       		.byte	26
 858 0024 08       		.byte	8
 859 0025 00       		.byte	0
 860 0026 15       		.byte	21
 861 0027 00       		.byte	0
 862 0028 00       		.byte	0
 863 0029 0A       		.byte	10
 864 002a 00       		.byte	0
 865 002b 00       		.byte	0
 866 002c 28       		.byte	40
 867 002d 00       		.byte	0
 868 002e 51       		.byte	81
 869 002f 00       		.byte	0
 870 0030 00       		.byte	0
 871 0031 04       		.byte	4
 872 0032 12       		.byte	18
 873 0033 16       		.byte	22
 874 0034 13       		.byte	19
 875 0035 07       		.byte	7
 876 0036 09       		.byte	9
 877 0037 00       		.byte	0
 878 0038 00       		.byte	0
 879 0039 00       		.byte	0
 880 003a 0F       		.byte	15
 881 003b 31       		.byte	49
 882 003c 00       		.byte	0
 883 003d 1D       		.byte	29
 884 003e 52       		.byte	82
 885 003f 00       		.byte	0
 886 0040 00       		.byte	0
 887 0041 11       		.byte	17
 888 0042 10       		.byte	16
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 29


 889 0043 38       		.byte	56
 890 0044 33       		.byte	51
 891 0045 00       		.byte	0
 892 0046 00       		.byte	0
 893 0047 00       		.byte	0
 894 0048 00       		.byte	0
 895 0049 39       		.byte	57
 896 004a 00       		.byte	0
 897 004b 2C       		.byte	44
 898 004c 00       		.byte	0
 899 004d 00       		.byte	0
 900 004e 1B       		.byte	27
 901 004f 00       		.byte	0
 902 0050 00       		.byte	0
 903 0051 00       		.byte	0
 904 0052 17       		.byte	23
 905 0053 00       		.byte	0
 906 0054 06       		.byte	6
 907 0055 00       		.byte	0
 908 0056 00       		.byte	0
 909 0057 00       		.byte	0
 910 0058 00       		.byte	0
 911 0059 00       		.byte	0
 912 005a 00       		.byte	0
 913 005b 0B       		.byte	11
 914 005c 00       		.byte	0
 915 005d 1C       		.byte	28
 916 005e 00       		.byte	0
 917 005f 00       		.byte	0
 918 0060 00       		.byte	0
 919 0061 00       		.byte	0
 920 0062 00       		.byte	0
 921 0063 00       		.byte	0
 922 0064 00       		.byte	0
 923 0065 00       		.byte	0
 924 0066 00       		.byte	0
 925 0067 00       		.byte	0
 926 0068 00       		.byte	0
 927 0069 00       		.byte	0
 928 006a 00       		.byte	0
 929 006b 20       		.byte	32
 930 006c 2A       		.byte	42
 931 006d 00       		.byte	0
 932 006e 00       		.byte	0
 933 006f 00       		.byte	0
 934 0070 00       		.byte	0
 935 0071 29       		.byte	41
 936 0072 00       		.byte	0
 937 0073 1F       		.byte	31
 938 0074 1E       		.byte	30
 939 0075 27       		.byte	39
 940 0076 0E       		.byte	14
 941 0077 00       		.byte	0
 942 0078 00       		.byte	0
 943 0079 25       		.byte	37
 944 007a 00       		.byte	0
 945 007b 00       		.byte	0
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 30


 946 007c 00       		.byte	0
 947 007d 26       		.byte	38
 948 007e 00       		.byte	0
 949 007f 00       		.byte	0
 950 0080 00       		.byte	0
 951 0081 00       		.byte	0
 952 0082 00       		.byte	0
 953 0083 46       		.byte	70
 954 0084 00       		.byte	0
 955              		.text
 956              	.Letext0:
 957              		.file 3 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 958              		.file 4 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 959              		.file 5 "Drivers/CMSIS/Include/core_cm3.h"
 960              		.file 6 "Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h"
 961              		.file 7 "Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h"
 962              		.file 8 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h"
 963              		.file 9 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h"
 964              		.file 10 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h"
 965              		.file 11 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h"
 966              		.file 12 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h"
 967              		.file 13 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include
 968              		.file 14 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include
 969              		.file 15 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\lib\\gcc\\arm-none-eab
 970              		.file 16 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include
 971              		.file 17 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include
 972              		.file 18 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h"
 973              		.file 19 "Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc/usbd_hid.h"
 974              		.file 20 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h"
 975              		.file 21 "Inc/usb_device.h"
ARM GAS  X:\TMP\USER_T~1\ccbql6Ct.s 			page 31


DEFINED SYMBOLS
                            *ABS*:00000000 main.c
X:\TMP\USER_T~1\ccbql6Ct.s:16     .text.MX_GPIO_Init:00000000 $t
X:\TMP\USER_T~1\ccbql6Ct.s:22     .text.MX_GPIO_Init:00000000 MX_GPIO_Init
X:\TMP\USER_T~1\ccbql6Ct.s:144    .text.MX_GPIO_Init:000000ac $d
X:\TMP\USER_T~1\ccbql6Ct.s:151    .text.scan_decode:00000000 $t
X:\TMP\USER_T~1\ccbql6Ct.s:158    .text.scan_decode:00000000 scan_decode
X:\TMP\USER_T~1\ccbql6Ct.s:175    .text.scan_decode:00000008 $d
X:\TMP\USER_T~1\ccbql6Ct.s:180    .text.ps2interrupt:00000000 $t
X:\TMP\USER_T~1\ccbql6Ct.s:187    .text.ps2interrupt:00000000 ps2interrupt
X:\TMP\USER_T~1\ccbql6Ct.s:232    .text.ps2interrupt:00000034 $d
X:\TMP\USER_T~1\ccbql6Ct.s:337    .text.ps2interrupt:000000b8 $d
X:\TMP\USER_T~1\ccbql6Ct.s:348    .text.get_PS2scan_code:00000000 $t
X:\TMP\USER_T~1\ccbql6Ct.s:355    .text.get_PS2scan_code:00000000 get_PS2scan_code
X:\TMP\USER_T~1\ccbql6Ct.s:403    .text.get_PS2scan_code:0000002c $d
X:\TMP\USER_T~1\ccbql6Ct.s:410    .text.SystemClock_Config:00000000 $t
X:\TMP\USER_T~1\ccbql6Ct.s:417    .text.SystemClock_Config:00000000 SystemClock_Config
X:\TMP\USER_T~1\ccbql6Ct.s:507    .text.main:00000000 $t
X:\TMP\USER_T~1\ccbql6Ct.s:514    .text.main:00000000 main
X:\TMP\USER_T~1\ccbql6Ct.s:608    .text.main:00000074 $d
X:\TMP\USER_T~1\ccbql6Ct.s:613    .text.Error_Handler:00000000 $t
X:\TMP\USER_T~1\ccbql6Ct.s:620    .text.Error_Handler:00000000 Error_Handler
X:\TMP\USER_T~1\ccbql6Ct.s:821    .rodata.amstrad2hid:00000000 amstrad2hid
X:\TMP\USER_T~1\ccbql6Ct.s:682    .rodata.amstrad2ascii:00000000 amstrad2ascii
X:\TMP\USER_T~1\ccbql6Ct.s:635    .bss.PS2buffer:00000000 $d
X:\TMP\USER_T~1\ccbql6Ct.s:639    .bss.PS2buffer:00000000 PS2buffer
X:\TMP\USER_T~1\ccbql6Ct.s:645    .bss.bitcount.7551:00000000 bitcount.7551
X:\TMP\USER_T~1\ccbql6Ct.s:646    .bss.bitcount.7551:00000000 $d
X:\TMP\USER_T~1\ccbql6Ct.s:651    .bss.head:00000000 head
X:\TMP\USER_T~1\ccbql6Ct.s:652    .bss.head:00000000 $d
X:\TMP\USER_T~1\ccbql6Ct.s:657    .bss.incoming.7552:00000000 incoming.7552
X:\TMP\USER_T~1\ccbql6Ct.s:658    .bss.incoming.7552:00000000 $d
X:\TMP\USER_T~1\ccbql6Ct.s:663    .bss.parity.7554:00000000 parity.7554
X:\TMP\USER_T~1\ccbql6Ct.s:664    .bss.parity.7554:00000000 $d
X:\TMP\USER_T~1\ccbql6Ct.s:666    .bss.prev_ms.7553:00000000 $d
X:\TMP\USER_T~1\ccbql6Ct.s:670    .bss.prev_ms.7553:00000000 prev_ms.7553
X:\TMP\USER_T~1\ccbql6Ct.s:676    .bss.tail:00000000 tail
X:\TMP\USER_T~1\ccbql6Ct.s:677    .bss.tail:00000000 $d
X:\TMP\USER_T~1\ccbql6Ct.s:679    .rodata.amstrad2ascii:00000000 $d
X:\TMP\USER_T~1\ccbql6Ct.s:817    .rodata.amstrad2hid:00000000 $d
X:\TMP\USER_T~1\ccbql6Ct.s:243    .text.ps2interrupt:0000003f $d
X:\TMP\USER_T~1\ccbql6Ct.s:243    .text.ps2interrupt:00000040 $t

UNDEFINED SYMBOLS
HAL_GPIO_WritePin
HAL_GPIO_Init
HAL_NVIC_SetPriority
HAL_NVIC_EnableIRQ
HAL_GetTick
HAL_RCC_OscConfig
HAL_RCC_ClockConfig
HAL_RCCEx_PeriphCLKConfig
HAL_Init
MX_USB_DEVICE_Init
USBD_HID_SendReport
hUsbDeviceFS
