ARM GAS  X:\TMP\USER_T~1\cctmwY0a.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 Ultimate Liberty license
  13:Src/main.c    ****   * SLA0044, the "License"; You may not use this file except in compliance with
  14:Src/main.c    ****   * the License. You may obtain a copy of the License at:
  15:Src/main.c    ****   *                             www.st.com/SLA0044
  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_cdc_if.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\cctmwY0a.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    **** 
  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[2];
  73:Src/main.c    **** c[1]=0;
  74:Src/main.c    **** //char debugtxt[100];
  75:Src/main.c    ****   /* USER CODE END 1 */
  76:Src/main.c    **** 
  77:Src/main.c    ****   /* MCU Configuration--------------------------------------------------------*/
  78:Src/main.c    **** 
  79:Src/main.c    ****   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  80:Src/main.c    ****   HAL_Init();
  81:Src/main.c    **** 
  82:Src/main.c    ****   /* USER CODE BEGIN Init */
  83:Src/main.c    **** 
  84:Src/main.c    ****   /* USER CODE END Init */
  85:Src/main.c    **** 
  86:Src/main.c    ****   /* Configure the system clock */
  87:Src/main.c    ****   SystemClock_Config();
  88:Src/main.c    **** 
  89:Src/main.c    ****   /* USER CODE BEGIN SysInit */
  90:Src/main.c    **** 
  91:Src/main.c    ****   /* USER CODE END SysInit */
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 3


  92:Src/main.c    **** 
  93:Src/main.c    ****   /* Initialize all configured peripherals */
  94:Src/main.c    ****   MX_GPIO_Init();
  95:Src/main.c    ****   MX_USB_DEVICE_Init();
  96:Src/main.c    ****   /* USER CODE BEGIN 2 */
  97:Src/main.c    **** 
  98:Src/main.c    ****   /* USER CODE END 2 */
  99:Src/main.c    **** 
 100:Src/main.c    ****   /* Infinite loop */
 101:Src/main.c    ****   /* USER CODE BEGIN WHILE */
 102:Src/main.c    ****   while (1)
 103:Src/main.c    ****   {
 104:Src/main.c    **** 
 105:Src/main.c    **** 
 106:Src/main.c    **** 
 107:Src/main.c    **** scancode=get_PS2scan_code();
 108:Src/main.c    **** if (scancode !=0) {
 109:Src/main.c    **** 					if(scancode==0xF0)
 110:Src/main.c    **** 						{ passcode=1;}
 111:Src/main.c    **** 					else
 112:Src/main.c    **** 						{
 113:Src/main.c    **** 						if(passcode==1)
 114:Src/main.c    **** 							{passcode=0;}
 115:Src/main.c    **** 							else
 116:Src/main.c    **** 							{
 117:Src/main.c    **** 							c[0]=scan_decode(scancode);
 118:Src/main.c    **** 							CDC_Transmit_FS((unsigned char *)c, 1);
 119:Src/main.c    **** 							}
 120:Src/main.c    **** 						}
 121:Src/main.c    **** 					}
 122:Src/main.c    ****     /* USER CODE END WHILE */
 123:Src/main.c    ****     /* USER CODE BEGIN 3 */
 124:Src/main.c    ****   }
 125:Src/main.c    ****   /* USER CODE END 3 */
 126:Src/main.c    **** }
 127:Src/main.c    **** 
 128:Src/main.c    **** /**
 129:Src/main.c    ****   * @brief System Clock Configuration
 130:Src/main.c    ****   * @retval None
 131:Src/main.c    ****   */
 132:Src/main.c    **** void SystemClock_Config(void)
 133:Src/main.c    **** {
 134:Src/main.c    ****   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 135:Src/main.c    ****   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
 136:Src/main.c    ****   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
 137:Src/main.c    **** 
 138:Src/main.c    ****   /** Initializes the CPU, AHB and APB busses clocks 
 139:Src/main.c    ****   */
 140:Src/main.c    ****   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
 141:Src/main.c    ****   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
 142:Src/main.c    ****   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
 143:Src/main.c    ****   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
 144:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
 145:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
 146:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
 147:Src/main.c    ****   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
 148:Src/main.c    ****   {
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 4


 149:Src/main.c    ****     Error_Handler();
 150:Src/main.c    ****   }
 151:Src/main.c    ****   /** Initializes the CPU, AHB and APB busses clocks 
 152:Src/main.c    ****   */
 153:Src/main.c    ****   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
 154:Src/main.c    ****                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
 155:Src/main.c    ****   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
 156:Src/main.c    ****   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
 157:Src/main.c    ****   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
 158:Src/main.c    ****   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
 159:Src/main.c    **** 
 160:Src/main.c    ****   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
 161:Src/main.c    ****   {
 162:Src/main.c    ****     Error_Handler();
 163:Src/main.c    ****   }
 164:Src/main.c    ****   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB;
 165:Src/main.c    ****   PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL;
 166:Src/main.c    ****   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
 167:Src/main.c    ****   {
 168:Src/main.c    ****     Error_Handler();
 169:Src/main.c    ****   }
 170:Src/main.c    **** }
 171:Src/main.c    **** 
 172:Src/main.c    **** /**
 173:Src/main.c    ****   * @brief GPIO Initialization Function
 174:Src/main.c    ****   * @param None
 175:Src/main.c    ****   * @retval None
 176:Src/main.c    ****   */
 177:Src/main.c    **** static void MX_GPIO_Init(void)
 178:Src/main.c    **** {
  25              		.loc 1 178 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
 179:Src/main.c    ****   GPIO_InitTypeDef GPIO_InitStruct = {0};
  39              		.loc 1 179 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:
 180:Src/main.c    **** 
 181:Src/main.c    ****   /* GPIO Ports Clock Enable */
 182:Src/main.c    ****   __HAL_RCC_GPIOC_CLK_ENABLE();
  46              		.loc 1 182 0
  47 000e 274B     		ldr	r3, .L3
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 5


  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:
 183:Src/main.c    ****   __HAL_RCC_GPIOD_CLK_ENABLE();
  57              		.loc 1 183 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:
 184:Src/main.c    ****   __HAL_RCC_GPIOA_CLK_ENABLE();
  67              		.loc 1 184 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:
 185:Src/main.c    **** 
 186:Src/main.c    ****   /*Configure GPIO pin Output Level */
 187:Src/main.c    ****   HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
  76              		.loc 1 187 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:
 188:Src/main.c    **** 
 189:Src/main.c    ****   /*Configure GPIO pin : LED_Pin */
 190:Src/main.c    ****   GPIO_InitStruct.Pin = LED_Pin;
  83              		.loc 1 190 0
  84 0054 4FF40053 		mov	r3, #8192
  85 0058 0493     		str	r3, [sp, #16]
 191:Src/main.c    ****   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  86              		.loc 1 191 0
  87 005a 0125     		movs	r5, #1
  88 005c 0595     		str	r5, [sp, #20]
 192:Src/main.c    ****   GPIO_InitStruct.Pull = GPIO_NOPULL;
  89              		.loc 1 192 0
  90 005e 0694     		str	r4, [sp, #24]
 193:Src/main.c    ****   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  91              		.loc 1 193 0
  92 0060 0223     		movs	r3, #2
  93 0062 0793     		str	r3, [sp, #28]
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 6


 194:Src/main.c    ****   HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
  94              		.loc 1 194 0
  95 0064 04A9     		add	r1, sp, #16
  96 0066 3046     		mov	r0, r6
  97 0068 FFF7FEFF 		bl	HAL_GPIO_Init
  98              	.LVL1:
 195:Src/main.c    **** 
 196:Src/main.c    ****   /*Configure GPIO pin : PS2_CLK_Pin */
 197:Src/main.c    ****   GPIO_InitStruct.Pin = PS2_CLK_Pin;
  99              		.loc 1 197 0
 100 006c 4FF40073 		mov	r3, #512
 101 0070 0493     		str	r3, [sp, #16]
 198:Src/main.c    ****   GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
 102              		.loc 1 198 0
 103 0072 104B     		ldr	r3, .L3+8
 104 0074 0593     		str	r3, [sp, #20]
 199:Src/main.c    ****   GPIO_InitStruct.Pull = GPIO_PULLUP;
 105              		.loc 1 199 0
 106 0076 0695     		str	r5, [sp, #24]
 200:Src/main.c    ****   HAL_GPIO_Init(PS2_CLK_GPIO_Port, &GPIO_InitStruct);
 107              		.loc 1 200 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:
 201:Src/main.c    **** 
 202:Src/main.c    ****   /*Configure GPIO pin : PS2_DATA_Pin */
 203:Src/main.c    ****   GPIO_InitStruct.Pin = PS2_DATA_Pin;
 113              		.loc 1 203 0
 114 0084 4FF48063 		mov	r3, #1024
 115 0088 0493     		str	r3, [sp, #16]
 204:Src/main.c    ****   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
 116              		.loc 1 204 0
 117 008a 0594     		str	r4, [sp, #20]
 205:Src/main.c    ****   GPIO_InitStruct.Pull = GPIO_PULLUP;
 118              		.loc 1 205 0
 119 008c 0695     		str	r5, [sp, #24]
 206:Src/main.c    ****   HAL_GPIO_Init(PS2_DATA_GPIO_Port, &GPIO_InitStruct);
 120              		.loc 1 206 0
 121 008e 04A9     		add	r1, sp, #16
 122 0090 3046     		mov	r0, r6
 123 0092 FFF7FEFF 		bl	HAL_GPIO_Init
 124              	.LVL3:
 207:Src/main.c    **** 
 208:Src/main.c    ****   /* EXTI interrupt init*/
 209:Src/main.c    ****   HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
 125              		.loc 1 209 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:
 210:Src/main.c    ****   HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
 131              		.loc 1 210 0
 132 00a0 1720     		movs	r0, #23
 133 00a2 FFF7FEFF 		bl	HAL_NVIC_EnableIRQ
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 7


 134              	.LVL5:
 211:Src/main.c    **** 
 212:Src/main.c    **** }
 135              		.loc 1 212 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 00002110 		.word	270598144
 147              		.cfi_endproc
 148              	.LFE73:
 150              		.section	.text.scan_decode,"ax",%progbits
 151              		.align	1
 152              		.global	scan_decode
 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 **** #define PS2BUFFER_SIZE 16
   3:Src/PS2/PS2Keyboard.c **** static volatile uint8_t PS2buffer[PS2BUFFER_SIZE];
   4:Src/PS2/PS2Keyboard.c **** static volatile uint8_t head, tail;
   5:Src/PS2/PS2Keyboard.c **** 
   6:Src/PS2/PS2Keyboard.c **** 
   7:Src/PS2/PS2Keyboard.c **** 
   8:Src/PS2/PS2Keyboard.c **** // mini Amstrad klavietura -> ASCII
   9:Src/PS2/PS2Keyboard.c **** const unsigned char amstrad[] = {
  10:Src/PS2/PS2Keyboard.c **** 0,
  11:Src/PS2/PS2Keyboard.c **** 0, // 1
  12:Src/PS2/PS2Keyboard.c **** 0, // 2
  13:Src/PS2/PS2Keyboard.c **** 'j', // 3 - j
  14:Src/PS2/PS2Keyboard.c **** 0, // 4
  15:Src/PS2/PS2Keyboard.c **** 'b', // 5 - b
  16:Src/PS2/PS2Keyboard.c **** 0, // 6 - ADDRESS BOOK
  17:Src/PS2/PS2Keyboard.c **** 0, // 7
  18:Src/PS2/PS2Keyboard.c **** 0, // 8
  19:Src/PS2/PS2Keyboard.c **** 0, // 9 - CURSOR RIGHT
  20:Src/PS2/PS2Keyboard.c **** 0, // a
  21:Src/PS2/PS2Keyboard.c **** 'v', // b - v
  22:Src/PS2/PS2Keyboard.c **** 0, // c
  23:Src/PS2/PS2Keyboard.c **** 'u', // d - u
  24:Src/PS2/PS2Keyboard.c **** 'i', // e - i
  25:Src/PS2/PS2Keyboard.c **** 0, // f
  26:Src/PS2/PS2Keyboard.c **** 0, // 10
  27:Src/PS2/PS2Keyboard.c **** 0, // 11
  28:Src/PS2/PS2Keyboard.c **** 0, // 12
  29:Src/PS2/PS2Keyboard.c **** 0, // 13
  30:Src/PS2/PS2Keyboard.c **** 0, // 14
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 8


  31:Src/PS2/PS2Keyboard.c **** 0, // 15 - FAX
  32:Src/PS2/PS2Keyboard.c **** 0, // 16 - CURSOR LEFT
  33:Src/PS2/PS2Keyboard.c **** 0, // 17
  34:Src/PS2/PS2Keyboard.c **** 0, // 18
  35:Src/PS2/PS2Keyboard.c **** 0, // 19
  36:Src/PS2/PS2Keyboard.c **** 0, // 1a - MOBILE
  37:Src/PS2/PS2Keyboard.c **** '5', // 1b - 5
  38:Src/PS2/PS2Keyboard.c **** 0, // 1c - EMAIL
  39:Src/PS2/PS2Keyboard.c **** '6', // 1d - 6
  40:Src/PS2/PS2Keyboard.c **** '7', // 1e - 7
  41:Src/PS2/PS2Keyboard.c **** 0, // 1f
  42:Src/PS2/PS2Keyboard.c **** 0, // 20
  43:Src/PS2/PS2Keyboard.c **** 'q', // 21 - q
  44:Src/PS2/PS2Keyboard.c **** '4', // 22 - 4
  45:Src/PS2/PS2Keyboard.c **** 'w', // 23 - w
  46:Src/PS2/PS2Keyboard.c **** 'e', // 24 - e
  47:Src/PS2/PS2Keyboard.c **** 0, // 25
  48:Src/PS2/PS2Keyboard.c **** 'r', // 26 - r
  49:Src/PS2/PS2Keyboard.c **** 0, // 27
  50:Src/PS2/PS2Keyboard.c **** 0, // 28
  51:Src/PS2/PS2Keyboard.c **** 'g', // 29 - g
  52:Src/PS2/PS2Keyboard.c **** 0, // 2a - SMS
  53:Src/PS2/PS2Keyboard.c **** 0, // 2b
  54:Src/PS2/PS2Keyboard.c **** '\n', // 2c - ENTER
  55:Src/PS2/PS2Keyboard.c **** 0, // 2d
  56:Src/PS2/PS2Keyboard.c **** 0, // 2e - CURSOR DOWN
  57:Src/PS2/PS2Keyboard.c **** 0, // 2f
  58:Src/PS2/PS2Keyboard.c **** 0, // 30
  59:Src/PS2/PS2Keyboard.c **** 'a', // 31 - a
  60:Src/PS2/PS2Keyboard.c **** 'o', // 32 - o
  61:Src/PS2/PS2Keyboard.c **** 's', // 33 - s
  62:Src/PS2/PS2Keyboard.c **** 'p', // 34 - p
  63:Src/PS2/PS2Keyboard.c **** 'd', // 35 - d
  64:Src/PS2/PS2Keyboard.c **** 'f', // 36 - f
  65:Src/PS2/PS2Keyboard.c **** 0, // 37
  66:Src/PS2/PS2Keyboard.c **** 0, // 38
  67:Src/PS2/PS2Keyboard.c **** 0, // 39
  68:Src/PS2/PS2Keyboard.c **** 'l', // 3a - l
  69:Src/PS2/PS2Keyboard.c **** '\\', // 3b - \'
  70:Src/PS2/PS2Keyboard.c **** 0, // 3c - LSHIFT
  71:Src/PS2/PS2Keyboard.c **** 'z', // 3d - z
  72:Src/PS2/PS2Keyboard.c **** 0, // 3e - CURSOR UP
  73:Src/PS2/PS2Keyboard.c **** 0, // 3f
  74:Src/PS2/PS2Keyboard.c **** 0, // 40
  75:Src/PS2/PS2Keyboard.c **** 'n', // 41 - n
  76:Src/PS2/PS2Keyboard.c **** 'm', // 42 - m
  77:Src/PS2/PS2Keyboard.c **** '?', // 43 - .?/
  78:Src/PS2/PS2Keyboard.c **** ':', // 44 - ;:
  79:Src/PS2/PS2Keyboard.c **** 0, // 45
  80:Src/PS2/PS2Keyboard.c **** 0, // 46 - SERVICES
  81:Src/PS2/PS2Keyboard.c **** 0, // 47
  82:Src/PS2/PS2Keyboard.c **** 0, // 48
  83:Src/PS2/PS2Keyboard.c **** 0, // 49 - SYMBOL
  84:Src/PS2/PS2Keyboard.c **** 0, // 4a
  85:Src/PS2/PS2Keyboard.c **** ' ', // 4b - SPACE
  86:Src/PS2/PS2Keyboard.c **** 0, // 4c
  87:Src/PS2/PS2Keyboard.c **** 0, // 4d
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 9


  88:Src/PS2/PS2Keyboard.c **** 'x', // 4e - x
  89:Src/PS2/PS2Keyboard.c **** 0, // 4f
  90:Src/PS2/PS2Keyboard.c **** 0, // 50
  91:Src/PS2/PS2Keyboard.c **** 0, // 51
  92:Src/PS2/PS2Keyboard.c **** 't', // 52 - t
  93:Src/PS2/PS2Keyboard.c **** 0, // 53
  94:Src/PS2/PS2Keyboard.c **** 'c', // 54 - c
  95:Src/PS2/PS2Keyboard.c **** 0, // 55 - RIGHT SHIFT
  96:Src/PS2/PS2Keyboard.c **** 0, // 56
  97:Src/PS2/PS2Keyboard.c **** 0, // 57
  98:Src/PS2/PS2Keyboard.c **** 0, // 58
  99:Src/PS2/PS2Keyboard.c **** 0, // 59
 100:Src/PS2/PS2Keyboard.c **** 0, // 5a
 101:Src/PS2/PS2Keyboard.c **** 'h', // 5b - h
 102:Src/PS2/PS2Keyboard.c **** 0, // 5c
 103:Src/PS2/PS2Keyboard.c **** 'y', // 5d - y
 104:Src/PS2/PS2Keyboard.c **** 0, // 5e
 105:Src/PS2/PS2Keyboard.c **** 0, // 5f
 106:Src/PS2/PS2Keyboard.c **** 0, // 60
 107:Src/PS2/PS2Keyboard.c **** 0, // 61
 108:Src/PS2/PS2Keyboard.c **** 0, // 62
 109:Src/PS2/PS2Keyboard.c **** 0, // 63
 110:Src/PS2/PS2Keyboard.c **** 0, // 64
 111:Src/PS2/PS2Keyboard.c **** 0, // 65
 112:Src/PS2/PS2Keyboard.c **** 0, // 66
 113:Src/PS2/PS2Keyboard.c **** 0, // 67
 114:Src/PS2/PS2Keyboard.c **** 0, // 68
 115:Src/PS2/PS2Keyboard.c **** 0, // 69 - OFFICE
 116:Src/PS2/PS2Keyboard.c **** 0, // 6a
 117:Src/PS2/PS2Keyboard.c **** '3', // 6b - 3
 118:Src/PS2/PS2Keyboard.c **** 127, // 6c - del
 119:Src/PS2/PS2Keyboard.c **** 0, // 6d
 120:Src/PS2/PS2Keyboard.c **** 0, // 6e
 121:Src/PS2/PS2Keyboard.c **** 0, // 6f
 122:Src/PS2/PS2Keyboard.c **** 0, // 70 - STORE
 123:Src/PS2/PS2Keyboard.c **** 27, // 71 - Esc / STOP
 124:Src/PS2/PS2Keyboard.c **** 0, // 72 - HOME
 125:Src/PS2/PS2Keyboard.c **** '2', // 73 - 2
 126:Src/PS2/PS2Keyboard.c **** '1', // 74 - 1
 127:Src/PS2/PS2Keyboard.c **** '0', // 75 - 0
 128:Src/PS2/PS2Keyboard.c **** 'k', // 76 - k
 129:Src/PS2/PS2Keyboard.c **** 0, // 77 - INTERNET
 130:Src/PS2/PS2Keyboard.c **** 0, // 78
 131:Src/PS2/PS2Keyboard.c **** '8', // 79 - 8
 132:Src/PS2/PS2Keyboard.c **** 0, // 7a - SETUP
 133:Src/PS2/PS2Keyboard.c **** 0, // 7b
 134:Src/PS2/PS2Keyboard.c **** 0, // 7c - GAMES
 135:Src/PS2/PS2Keyboard.c **** '9', // 7d - 9
 136:Src/PS2/PS2Keyboard.c **** 0, // 7e
 137:Src/PS2/PS2Keyboard.c **** 0, // 7f
 138:Src/PS2/PS2Keyboard.c **** 0, // 80
 139:Src/PS2/PS2Keyboard.c **** 0, // 81
 140:Src/PS2/PS2Keyboard.c **** 0, // 82
 141:Src/PS2/PS2Keyboard.c **** 0, // 83 - PRINT
 142:Src/PS2/PS2Keyboard.c **** 0
 143:Src/PS2/PS2Keyboard.c **** };
 144:Src/PS2/PS2Keyboard.c **** 
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 10


 145:Src/PS2/PS2Keyboard.c **** unsigned char scan_decode(unsigned char i)
 146:Src/PS2/PS2Keyboard.c **** {
 161              		.loc 2 146 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:
 147:Src/PS2/PS2Keyboard.c **** return amstrad[i];
 148:Src/PS2/PS2Keyboard.c **** }
 167              		.loc 2 148 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:
 149:Src/PS2/PS2Keyboard.c **** 
 150:Src/PS2/PS2Keyboard.c **** 
 151:Src/PS2/PS2Keyboard.c **** void ps2interrupt(void)
 152:Src/PS2/PS2Keyboard.c **** {
 189              		.loc 2 152 0
 190              		.cfi_startproc
 191              		@ args = 0, pretend = 0, frame = 0
 192              		@ frame_needed = 0, uses_anonymous_args = 0
 193 0000 10B5     		push	{r4, lr}
 194              	.LCFI3:
 195              		.cfi_def_cfa_offset 8
 196              		.cfi_offset 4, -8
 197              		.cfi_offset 14, -4
 153:Src/PS2/PS2Keyboard.c **** uint32_t now_ms;
 154:Src/PS2/PS2Keyboard.c **** static uint8_t bitcount=0;
 155:Src/PS2/PS2Keyboard.c **** static uint8_t incoming=0;
 156:Src/PS2/PS2Keyboard.c **** static uint32_t prev_ms=0;
 157:Src/PS2/PS2Keyboard.c **** static uint8_t parity;
 158:Src/PS2/PS2Keyboard.c **** //uint8_t n;
 159:Src/PS2/PS2Keyboard.c **** uint8_t val;
 160:Src/PS2/PS2Keyboard.c **** 
 161:Src/PS2/PS2Keyboard.c **** 	if( HAL_GPIO_ReadPin(PS2_DATA_GPIO_Port, PS2_DATA_Pin)) val=1; else val=0;
 198              		.loc 2 161 0
 199 0002 4FF48061 		mov	r1, #1024
 200 0006 3048     		ldr	r0, .L25
 201 0008 FFF7FEFF 		bl	HAL_GPIO_ReadPin
 202              	.LVL8:
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 11


 203 000c F0B1     		cbz	r0, .L20
 204 000e 0124     		movs	r4, #1
 205              	.L9:
 206              	.LVL9:
 162:Src/PS2/PS2Keyboard.c **** 
 163:Src/PS2/PS2Keyboard.c **** 
 164:Src/PS2/PS2Keyboard.c **** now_ms = HAL_GetTick();
 207              		.loc 2 164 0
 208 0010 FFF7FEFF 		bl	HAL_GetTick
 209              	.LVL10:
 165:Src/PS2/PS2Keyboard.c **** 	if (now_ms - prev_ms > 250) {
 210              		.loc 2 165 0
 211 0014 2D4B     		ldr	r3, .L25+4
 212 0016 1B68     		ldr	r3, [r3]
 213 0018 C31A     		subs	r3, r0, r3
 214 001a FA2B     		cmp	r3, #250
 215 001c 04D9     		bls	.L10
 166:Src/PS2/PS2Keyboard.c **** 		bitcount = 0;
 216              		.loc 2 166 0
 217 001e 0023     		movs	r3, #0
 218 0020 2B4A     		ldr	r2, .L25+8
 219 0022 1370     		strb	r3, [r2]
 167:Src/PS2/PS2Keyboard.c **** 		incoming = 0;
 220              		.loc 2 167 0
 221 0024 2B4A     		ldr	r2, .L25+12
 222 0026 1370     		strb	r3, [r2]
 223              	.L10:
 168:Src/PS2/PS2Keyboard.c **** 	}
 169:Src/PS2/PS2Keyboard.c **** 
 170:Src/PS2/PS2Keyboard.c **** 	prev_ms = now_ms;
 224              		.loc 2 170 0
 225 0028 284B     		ldr	r3, .L25+4
 226 002a 1860     		str	r0, [r3]
 171:Src/PS2/PS2Keyboard.c **** 
 172:Src/PS2/PS2Keyboard.c **** 
 173:Src/PS2/PS2Keyboard.c **** 
 174:Src/PS2/PS2Keyboard.c **** 
 175:Src/PS2/PS2Keyboard.c **** bitcount++;         // Now point to next bit
 227              		.loc 2 175 0
 228 002c 284A     		ldr	r2, .L25+8
 229 002e 1378     		ldrb	r3, [r2]	@ zero_extendqisi2
 230 0030 0133     		adds	r3, r3, #1
 231 0032 DBB2     		uxtb	r3, r3
 232 0034 1370     		strb	r3, [r2]
 176:Src/PS2/PS2Keyboard.c ****     switch( bitcount )
 233              		.loc 2 176 0
 234 0036 013B     		subs	r3, r3, #1
 235 0038 0A2B     		cmp	r3, #10
 236 003a 40D8     		bhi	.L11
 237 003c DFE803F0 		tbb	[pc, r3]
 238              	.L13:
 239 0040 08       		.byte	(.L12-.L13)/2
 240 0041 0E       		.byte	(.L14-.L13)/2
 241 0042 0E       		.byte	(.L14-.L13)/2
 242 0043 0E       		.byte	(.L14-.L13)/2
 243 0044 0E       		.byte	(.L14-.L13)/2
 244 0045 0E       		.byte	(.L14-.L13)/2
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 12


 245 0046 0E       		.byte	(.L14-.L13)/2
 246 0047 0E       		.byte	(.L14-.L13)/2
 247 0048 0E       		.byte	(.L14-.L13)/2
 248 0049 1E       		.byte	(.L15-.L13)/2
 249 004a 29       		.byte	(.L16-.L13)/2
 250              	.LVL11:
 251 004b 00       		.p2align 1
 252              	.L20:
 161:Src/PS2/PS2Keyboard.c **** 
 253              		.loc 2 161 0
 254 004c 0024     		movs	r4, #0
 255 004e DFE7     		b	.L9
 256              	.LVL12:
 257              	.L12:
 177:Src/PS2/PS2Keyboard.c ****        {
 178:Src/PS2/PS2Keyboard.c ****        case 1:  // Start bit
 179:Src/PS2/PS2Keyboard.c ****                 incoming = 0;
 258              		.loc 2 179 0
 259 0050 0023     		movs	r3, #0
 260 0052 204A     		ldr	r2, .L25+12
 261 0054 1370     		strb	r3, [r2]
 180:Src/PS2/PS2Keyboard.c ****                 parity = 0;
 262              		.loc 2 180 0
 263 0056 204A     		ldr	r2, .L25+16
 264 0058 1370     		strb	r3, [r2]
 181:Src/PS2/PS2Keyboard.c ****                 break;
 265              		.loc 2 181 0
 266 005a 33E0     		b	.L8
 267              	.L14:
 182:Src/PS2/PS2Keyboard.c ****        case 2:
 183:Src/PS2/PS2Keyboard.c ****        case 3:
 184:Src/PS2/PS2Keyboard.c ****        case 4:
 185:Src/PS2/PS2Keyboard.c ****        case 5:
 186:Src/PS2/PS2Keyboard.c ****        case 6:
 187:Src/PS2/PS2Keyboard.c ****        case 7:
 188:Src/PS2/PS2Keyboard.c ****        case 8:
 189:Src/PS2/PS2Keyboard.c ****        case 9:  // Data bits
 190:Src/PS2/PS2Keyboard.c ****                 parity += val;        // another one received ?
 268              		.loc 2 190 0
 269 005c 1E4A     		ldr	r2, .L25+16
 270 005e 1378     		ldrb	r3, [r2]	@ zero_extendqisi2
 271 0060 2344     		add	r3, r3, r4
 272 0062 1370     		strb	r3, [r2]
 191:Src/PS2/PS2Keyboard.c ****                 incoming >>= 1;       // right shift one place for next bit
 273              		.loc 2 191 0
 274 0064 1B4B     		ldr	r3, .L25+12
 275 0066 1B78     		ldrb	r3, [r3]	@ zero_extendqisi2
 276 0068 5A08     		lsrs	r2, r3, #1
 192:Src/PS2/PS2Keyboard.c ****                 incoming |= ( val ) ? 0x80 : 0;    // or in MSbit
 277              		.loc 2 192 0
 278 006a 24B9     		cbnz	r4, .L24
 279 006c 0023     		movs	r3, #0
 280              	.L18:
 281              		.loc 2 192 0 is_stmt 0 discriminator 4
 282 006e 1343     		orrs	r3, r3, r2
 283 0070 184A     		ldr	r2, .L25+12
 284 0072 1370     		strb	r3, [r2]
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 13


 193:Src/PS2/PS2Keyboard.c ****                 break;
 285              		.loc 2 193 0 is_stmt 1 discriminator 4
 286 0074 26E0     		b	.L8
 287              	.L24:
 192:Src/PS2/PS2Keyboard.c ****                 incoming |= ( val ) ? 0x80 : 0;    // or in MSbit
 288              		.loc 2 192 0
 289 0076 6FF07F03 		mvn	r3, #127
 290 007a F8E7     		b	.L18
 291              	.L15:
 194:Src/PS2/PS2Keyboard.c ****        case 10: // Parity check
 195:Src/PS2/PS2Keyboard.c ****                 parity &= 1;          // Get LSB if 1 = odd number of 1's so parity should be 0
 292              		.loc 2 195 0
 293 007c 164A     		ldr	r2, .L25+16
 294 007e 1378     		ldrb	r3, [r2]	@ zero_extendqisi2
 295 0080 03F00103 		and	r3, r3, #1
 296 0084 1370     		strb	r3, [r2]
 196:Src/PS2/PS2Keyboard.c ****                 if( parity == val )   // Both same parity error
 297              		.loc 2 196 0
 298 0086 A342     		cmp	r3, r4
 299 0088 1CD1     		bne	.L8
 197:Src/PS2/PS2Keyboard.c ****                   parity = 0xFD;      // To ensure at next bit count clear and discard
 300              		.loc 2 197 0
 301 008a 1346     		mov	r3, r2
 302 008c FD22     		movs	r2, #253
 303 008e 1A70     		strb	r2, [r3]
 304 0090 18E0     		b	.L8
 305              	.L16:
 198:Src/PS2/PS2Keyboard.c ****                 break;
 199:Src/PS2/PS2Keyboard.c ****        case 11: // Stop bit
 200:Src/PS2/PS2Keyboard.c ****                 if( parity >= 0xFD )  // had parity error
 306              		.loc 2 200 0
 307 0092 114B     		ldr	r3, .L25+16
 308 0094 1B78     		ldrb	r3, [r3]	@ zero_extendqisi2
 309 0096 FC2B     		cmp	r3, #252
 310 0098 11D8     		bhi	.L11
 201:Src/PS2/PS2Keyboard.c ****                   {
 202:Src/PS2/PS2Keyboard.c ****                   // Should send resend byte command here currently discard
 203:Src/PS2/PS2Keyboard.c ****                   }
 204:Src/PS2/PS2Keyboard.c ****                 else                  // Good so save byte in buffer
 205:Src/PS2/PS2Keyboard.c ****                   {
 206:Src/PS2/PS2Keyboard.c ****                   val = head + 1;
 311              		.loc 2 206 0
 312 009a 104B     		ldr	r3, .L25+20
 313 009c 1B78     		ldrb	r3, [r3]	@ zero_extendqisi2
 314 009e 0133     		adds	r3, r3, #1
 315 00a0 DBB2     		uxtb	r3, r3
 316              	.LVL13:
 207:Src/PS2/PS2Keyboard.c ****                   if( val >= PS2BUFFER_SIZE )
 317              		.loc 2 207 0
 318 00a2 0F2B     		cmp	r3, #15
 319 00a4 00D9     		bls	.L19
 208:Src/PS2/PS2Keyboard.c ****                     val = 0;
 320              		.loc 2 208 0
 321 00a6 0023     		movs	r3, #0
 322              	.LVL14:
 323              	.L19:
 209:Src/PS2/PS2Keyboard.c ****                   if( val != tail )
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 14


 324              		.loc 2 209 0
 325 00a8 0D4A     		ldr	r2, .L25+24
 326 00aa 1278     		ldrb	r2, [r2]	@ zero_extendqisi2
 327 00ac D2B2     		uxtb	r2, r2
 328 00ae 9A42     		cmp	r2, r3
 329 00b0 05D0     		beq	.L11
 210:Src/PS2/PS2Keyboard.c ****                     {
 211:Src/PS2/PS2Keyboard.c ****                     PS2buffer[ val ] = incoming;
 330              		.loc 2 211 0
 331 00b2 084A     		ldr	r2, .L25+12
 332 00b4 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
 333 00b6 0B4A     		ldr	r2, .L25+28
 334 00b8 D154     		strb	r1, [r2, r3]
 212:Src/PS2/PS2Keyboard.c ****                     head = val;
 335              		.loc 2 212 0
 336 00ba 084A     		ldr	r2, .L25+20
 337 00bc 1370     		strb	r3, [r2]
 338              	.LVL15:
 339              	.L11:
 213:Src/PS2/PS2Keyboard.c ****                     }
 214:Src/PS2/PS2Keyboard.c ****                   }
 215:Src/PS2/PS2Keyboard.c ****                 // fall through to default
 216:Src/PS2/PS2Keyboard.c ****        default: // in case of weird error and end of byte reception re-sync
 217:Src/PS2/PS2Keyboard.c ****                 bitcount = 0;
 340              		.loc 2 217 0
 341 00be 044B     		ldr	r3, .L25+8
 342 00c0 0022     		movs	r2, #0
 343 00c2 1A70     		strb	r2, [r3]
 344              	.L8:
 218:Src/PS2/PS2Keyboard.c ****       }
 219:Src/PS2/PS2Keyboard.c **** 
 220:Src/PS2/PS2Keyboard.c **** 
 221:Src/PS2/PS2Keyboard.c **** 
 222:Src/PS2/PS2Keyboard.c **** 
 223:Src/PS2/PS2Keyboard.c **** 
 224:Src/PS2/PS2Keyboard.c **** 
 225:Src/PS2/PS2Keyboard.c **** 
 226:Src/PS2/PS2Keyboard.c **** 
 227:Src/PS2/PS2Keyboard.c **** 
 228:Src/PS2/PS2Keyboard.c **** 
 229:Src/PS2/PS2Keyboard.c **** 
 230:Src/PS2/PS2Keyboard.c **** 
 231:Src/PS2/PS2Keyboard.c **** 
 232:Src/PS2/PS2Keyboard.c **** 
 233:Src/PS2/PS2Keyboard.c **** 
 234:Src/PS2/PS2Keyboard.c **** 
 235:Src/PS2/PS2Keyboard.c **** 
 236:Src/PS2/PS2Keyboard.c **** 
 237:Src/PS2/PS2Keyboard.c **** 
 238:Src/PS2/PS2Keyboard.c **** 
 239:Src/PS2/PS2Keyboard.c **** 
 240:Src/PS2/PS2Keyboard.c **** 
 241:Src/PS2/PS2Keyboard.c **** 
 242:Src/PS2/PS2Keyboard.c **** 
 243:Src/PS2/PS2Keyboard.c **** 
 244:Src/PS2/PS2Keyboard.c **** 
 245:Src/PS2/PS2Keyboard.c **** 	
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 15


 246:Src/PS2/PS2Keyboard.c **** /*	
 247:Src/PS2/PS2Keyboard.c **** 	n = bitcount - 1;
 248:Src/PS2/PS2Keyboard.c **** 	if (n <= 7) {incoming |= (val << n);}
 249:Src/PS2/PS2Keyboard.c **** 	bitcount++;
 250:Src/PS2/PS2Keyboard.c **** 	if (bitcount == 11) {
 251:Src/PS2/PS2Keyboard.c **** 		uint8_t i = head + 1;
 252:Src/PS2/PS2Keyboard.c **** 		if (i >= PS2BUFFER_SIZE) i = 0;
 253:Src/PS2/PS2Keyboard.c **** 		if (i != tail) {PS2buffer[i] = incoming; head = i;}
 254:Src/PS2/PS2Keyboard.c **** 		bitcount = 0;
 255:Src/PS2/PS2Keyboard.c **** 		incoming = 0;
 256:Src/PS2/PS2Keyboard.c **** 	}
 257:Src/PS2/PS2Keyboard.c **** */	
 258:Src/PS2/PS2Keyboard.c **** }
 345              		.loc 2 258 0
 346 00c4 10BD     		pop	{r4, pc}
 347              	.L26:
 348 00c6 00BF     		.align	2
 349              	.L25:
 350 00c8 00080140 		.word	1073809408
 351 00cc 00000000 		.word	.LANCHOR1
 352 00d0 00000000 		.word	.LANCHOR2
 353 00d4 00000000 		.word	.LANCHOR3
 354 00d8 00000000 		.word	.LANCHOR4
 355 00dc 00000000 		.word	.LANCHOR5
 356 00e0 00000000 		.word	.LANCHOR6
 357 00e4 00000000 		.word	.LANCHOR7
 358              		.cfi_endproc
 359              	.LFE69:
 361              		.section	.text.get_PS2scan_code,"ax",%progbits
 362              		.align	1
 363              		.global	get_PS2scan_code
 364              		.syntax unified
 365              		.thumb
 366              		.thumb_func
 367              		.fpu softvfp
 369              	get_PS2scan_code:
 370              	.LFB70:
 259:Src/PS2/PS2Keyboard.c **** 
 260:Src/PS2/PS2Keyboard.c **** uint8_t get_PS2scan_code(void)
 261:Src/PS2/PS2Keyboard.c **** {
 371              		.loc 2 261 0
 372              		.cfi_startproc
 373              		@ args = 0, pretend = 0, frame = 0
 374              		@ frame_needed = 0, uses_anonymous_args = 0
 375              		@ link register save eliminated.
 262:Src/PS2/PS2Keyboard.c **** 	uint8_t c, i;
 263:Src/PS2/PS2Keyboard.c **** 
 264:Src/PS2/PS2Keyboard.c **** 	i = tail;
 376              		.loc 2 264 0
 377 0000 0A4B     		ldr	r3, .L32
 378 0002 1B78     		ldrb	r3, [r3]	@ zero_extendqisi2
 379 0004 DBB2     		uxtb	r3, r3
 380              	.LVL16:
 265:Src/PS2/PS2Keyboard.c **** 	if (i == head) return 0;
 381              		.loc 2 265 0
 382 0006 0A4A     		ldr	r2, .L32+4
 383 0008 1278     		ldrb	r2, [r2]	@ zero_extendqisi2
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 16


 384 000a D2B2     		uxtb	r2, r2
 385 000c 9A42     		cmp	r2, r3
 386 000e 0AD0     		beq	.L30
 266:Src/PS2/PS2Keyboard.c **** 	i++;
 387              		.loc 2 266 0
 388 0010 0133     		adds	r3, r3, #1
 389              	.LVL17:
 390 0012 DBB2     		uxtb	r3, r3
 391              	.LVL18:
 267:Src/PS2/PS2Keyboard.c **** 	if (i >= PS2BUFFER_SIZE) i = 0;
 392              		.loc 2 267 0
 393 0014 0F2B     		cmp	r3, #15
 394 0016 00D9     		bls	.L29
 395 0018 0023     		movs	r3, #0
 396              	.LVL19:
 397              	.L29:
 268:Src/PS2/PS2Keyboard.c **** 	c = PS2buffer[i];
 398              		.loc 2 268 0
 399 001a 064A     		ldr	r2, .L32+8
 400 001c D05C     		ldrb	r0, [r2, r3]	@ zero_extendqisi2
 401 001e C0B2     		uxtb	r0, r0
 402              	.LVL20:
 269:Src/PS2/PS2Keyboard.c **** 	tail = i;
 403              		.loc 2 269 0
 404 0020 024A     		ldr	r2, .L32
 405 0022 1370     		strb	r3, [r2]
 270:Src/PS2/PS2Keyboard.c **** 	return c;
 406              		.loc 2 270 0
 407 0024 7047     		bx	lr
 408              	.LVL21:
 409              	.L30:
 265:Src/PS2/PS2Keyboard.c **** 	i++;
 410              		.loc 2 265 0
 411 0026 0020     		movs	r0, #0
 271:Src/PS2/PS2Keyboard.c **** }
 412              		.loc 2 271 0
 413 0028 7047     		bx	lr
 414              	.L33:
 415 002a 00BF     		.align	2
 416              	.L32:
 417 002c 00000000 		.word	.LANCHOR6
 418 0030 00000000 		.word	.LANCHOR5
 419 0034 00000000 		.word	.LANCHOR7
 420              		.cfi_endproc
 421              	.LFE70:
 423              		.section	.text.SystemClock_Config,"ax",%progbits
 424              		.align	1
 425              		.global	SystemClock_Config
 426              		.syntax unified
 427              		.thumb
 428              		.thumb_func
 429              		.fpu softvfp
 431              	SystemClock_Config:
 432              	.LFB72:
 133:Src/main.c    ****   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 433              		.loc 1 133 0
 434              		.cfi_startproc
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 17


 435              		@ args = 0, pretend = 0, frame = 80
 436              		@ frame_needed = 0, uses_anonymous_args = 0
 437 0000 70B5     		push	{r4, r5, r6, lr}
 438              	.LCFI4:
 439              		.cfi_def_cfa_offset 16
 440              		.cfi_offset 4, -16
 441              		.cfi_offset 5, -12
 442              		.cfi_offset 6, -8
 443              		.cfi_offset 14, -4
 444 0002 94B0     		sub	sp, sp, #80
 445              	.LCFI5:
 446              		.cfi_def_cfa_offset 96
 134:Src/main.c    ****   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
 447              		.loc 1 134 0
 448 0004 0024     		movs	r4, #0
 449 0006 0C94     		str	r4, [sp, #48]
 450 0008 0D94     		str	r4, [sp, #52]
 451 000a 0F94     		str	r4, [sp, #60]
 452 000c 1094     		str	r4, [sp, #64]
 135:Src/main.c    ****   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
 453              		.loc 1 135 0
 454 000e 0594     		str	r4, [sp, #20]
 455 0010 0694     		str	r4, [sp, #24]
 456 0012 0794     		str	r4, [sp, #28]
 457 0014 0894     		str	r4, [sp, #32]
 458 0016 0994     		str	r4, [sp, #36]
 136:Src/main.c    **** 
 459              		.loc 1 136 0
 460 0018 0194     		str	r4, [sp, #4]
 461 001a 0294     		str	r4, [sp, #8]
 462 001c 0394     		str	r4, [sp, #12]
 463 001e 0494     		str	r4, [sp, #16]
 140:Src/main.c    ****   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
 464              		.loc 1 140 0
 465 0020 0125     		movs	r5, #1
 466 0022 0A95     		str	r5, [sp, #40]
 141:Src/main.c    ****   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
 467              		.loc 1 141 0
 468 0024 4FF48033 		mov	r3, #65536
 469 0028 0B93     		str	r3, [sp, #44]
 143:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
 470              		.loc 1 143 0
 471 002a 0E95     		str	r5, [sp, #56]
 144:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
 472              		.loc 1 144 0
 473 002c 0226     		movs	r6, #2
 474 002e 1196     		str	r6, [sp, #68]
 145:Src/main.c    ****   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
 475              		.loc 1 145 0
 476 0030 1293     		str	r3, [sp, #72]
 146:Src/main.c    ****   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
 477              		.loc 1 146 0
 478 0032 4FF48013 		mov	r3, #1048576
 479 0036 1393     		str	r3, [sp, #76]
 147:Src/main.c    ****   {
 480              		.loc 1 147 0
 481 0038 0AA8     		add	r0, sp, #40
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 18


 482 003a FFF7FEFF 		bl	HAL_RCC_OscConfig
 483              	.LVL22:
 153:Src/main.c    ****                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
 484              		.loc 1 153 0
 485 003e 0F23     		movs	r3, #15
 486 0040 0593     		str	r3, [sp, #20]
 155:Src/main.c    ****   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
 487              		.loc 1 155 0
 488 0042 0696     		str	r6, [sp, #24]
 156:Src/main.c    ****   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
 489              		.loc 1 156 0
 490 0044 0794     		str	r4, [sp, #28]
 157:Src/main.c    ****   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
 491              		.loc 1 157 0
 492 0046 4FF48063 		mov	r3, #1024
 493 004a 0893     		str	r3, [sp, #32]
 158:Src/main.c    **** 
 494              		.loc 1 158 0
 495 004c 0994     		str	r4, [sp, #36]
 160:Src/main.c    ****   {
 496              		.loc 1 160 0
 497 004e 2946     		mov	r1, r5
 498 0050 05A8     		add	r0, sp, #20
 499 0052 FFF7FEFF 		bl	HAL_RCC_ClockConfig
 500              	.LVL23:
 164:Src/main.c    ****   PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL;
 501              		.loc 1 164 0
 502 0056 1023     		movs	r3, #16
 503 0058 0193     		str	r3, [sp, #4]
 165:Src/main.c    ****   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
 504              		.loc 1 165 0
 505 005a 4FF48003 		mov	r3, #4194304
 506 005e 0493     		str	r3, [sp, #16]
 166:Src/main.c    ****   {
 507              		.loc 1 166 0
 508 0060 01A8     		add	r0, sp, #4
 509 0062 FFF7FEFF 		bl	HAL_RCCEx_PeriphCLKConfig
 510              	.LVL24:
 170:Src/main.c    **** 
 511              		.loc 1 170 0
 512 0066 14B0     		add	sp, sp, #80
 513              	.LCFI6:
 514              		.cfi_def_cfa_offset 16
 515              		@ sp needed
 516 0068 70BD     		pop	{r4, r5, r6, pc}
 517              		.cfi_endproc
 518              	.LFE72:
 520              		.section	.text.main,"ax",%progbits
 521              		.align	1
 522              		.global	main
 523              		.syntax unified
 524              		.thumb
 525              		.thumb_func
 526              		.fpu softvfp
 528              	main:
 529              	.LFB71:
  68:Src/main.c    ****   /* USER CODE BEGIN 1 */
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 19


 530              		.loc 1 68 0
 531              		.cfi_startproc
 532              		@ args = 0, pretend = 0, frame = 8
 533              		@ frame_needed = 0, uses_anonymous_args = 0
 534 0000 10B5     		push	{r4, lr}
 535              	.LCFI7:
 536              		.cfi_def_cfa_offset 8
 537              		.cfi_offset 4, -8
 538              		.cfi_offset 14, -4
 539 0002 82B0     		sub	sp, sp, #8
 540              	.LCFI8:
 541              		.cfi_def_cfa_offset 16
 542              	.LVL25:
  73:Src/main.c    **** //char debugtxt[100];
 543              		.loc 1 73 0
 544 0004 0024     		movs	r4, #0
 545 0006 8DF80540 		strb	r4, [sp, #5]
  80:Src/main.c    **** 
 546              		.loc 1 80 0
 547 000a FFF7FEFF 		bl	HAL_Init
 548              	.LVL26:
  87:Src/main.c    **** 
 549              		.loc 1 87 0
 550 000e FFF7FEFF 		bl	SystemClock_Config
 551              	.LVL27:
  94:Src/main.c    ****   MX_USB_DEVICE_Init();
 552              		.loc 1 94 0
 553 0012 FFF7FEFF 		bl	MX_GPIO_Init
 554              	.LVL28:
  95:Src/main.c    ****   /* USER CODE BEGIN 2 */
 555              		.loc 1 95 0
 556 0016 FFF7FEFF 		bl	MX_USB_DEVICE_Init
 557              	.LVL29:
 558 001a 00E0     		b	.L37
 559              	.LVL30:
 560              	.L39:
 110:Src/main.c    **** 					else
 561              		.loc 1 110 0
 562 001c 0124     		movs	r4, #1
 563              	.LVL31:
 564              	.L37:
 107:Src/main.c    **** if (scancode !=0) {
 565              		.loc 1 107 0
 566 001e FFF7FEFF 		bl	get_PS2scan_code
 567              	.LVL32:
 108:Src/main.c    **** 					if(scancode==0xF0)
 568              		.loc 1 108 0
 569 0022 0028     		cmp	r0, #0
 570 0024 FBD0     		beq	.L37
 109:Src/main.c    **** 						{ passcode=1;}
 571              		.loc 1 109 0
 572 0026 F028     		cmp	r0, #240
 573 0028 F8D0     		beq	.L39
 113:Src/main.c    **** 							{passcode=0;}
 574              		.loc 1 113 0
 575 002a 0CB1     		cbz	r4, .L42
 114:Src/main.c    **** 							else
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 20


 576              		.loc 1 114 0
 577 002c 0024     		movs	r4, #0
 578              	.LVL33:
 579 002e F6E7     		b	.L37
 580              	.LVL34:
 581              	.L42:
 117:Src/main.c    **** 							CDC_Transmit_FS((unsigned char *)c, 1);
 582              		.loc 1 117 0
 583 0030 FFF7FEFF 		bl	scan_decode
 584              	.LVL35:
 585 0034 02AB     		add	r3, sp, #8
 586 0036 03F8040D 		strb	r0, [r3, #-4]!
 118:Src/main.c    **** 							}
 587              		.loc 1 118 0
 588 003a 0121     		movs	r1, #1
 589 003c 1846     		mov	r0, r3
 590 003e FFF7FEFF 		bl	CDC_Transmit_FS
 591              	.LVL36:
 592 0042 ECE7     		b	.L37
 593              		.cfi_endproc
 594              	.LFE71:
 596              		.section	.text.Error_Handler,"ax",%progbits
 597              		.align	1
 598              		.global	Error_Handler
 599              		.syntax unified
 600              		.thumb
 601              		.thumb_func
 602              		.fpu softvfp
 604              	Error_Handler:
 605              	.LFB74:
 213:Src/main.c    **** 
 214:Src/main.c    **** /* USER CODE BEGIN 4 */
 215:Src/main.c    **** 
 216:Src/main.c    **** /* USER CODE END 4 */
 217:Src/main.c    **** 
 218:Src/main.c    **** /**
 219:Src/main.c    ****   * @brief  This function is executed in case of error occurrence.
 220:Src/main.c    ****   * @retval None
 221:Src/main.c    ****   */
 222:Src/main.c    **** void Error_Handler(void)
 223:Src/main.c    **** {
 606              		.loc 1 223 0
 607              		.cfi_startproc
 608              		@ args = 0, pretend = 0, frame = 0
 609              		@ frame_needed = 0, uses_anonymous_args = 0
 610              		@ link register save eliminated.
 224:Src/main.c    ****   /* USER CODE BEGIN Error_Handler_Debug */
 225:Src/main.c    ****   /* User can add his own implementation to report the HAL error return state */
 226:Src/main.c    **** 
 227:Src/main.c    ****   /* USER CODE END Error_Handler_Debug */
 228:Src/main.c    **** }
 611              		.loc 1 228 0
 612 0000 7047     		bx	lr
 613              		.cfi_endproc
 614              	.LFE74:
 616              		.global	amstrad
 617              		.section	.bss.PS2buffer,"aw",%nobits
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 21


 618              		.align	2
 619              		.set	.LANCHOR7,. + 0
 622              	PS2buffer:
 623 0000 00000000 		.space	16
 623      00000000 
 623      00000000 
 623      00000000 
 624              		.section	.bss.bitcount.7582,"aw",%nobits
 625              		.set	.LANCHOR2,. + 0
 628              	bitcount.7582:
 629 0000 00       		.space	1
 630              		.section	.bss.head,"aw",%nobits
 631              		.set	.LANCHOR5,. + 0
 634              	head:
 635 0000 00       		.space	1
 636              		.section	.bss.incoming.7583,"aw",%nobits
 637              		.set	.LANCHOR3,. + 0
 640              	incoming.7583:
 641 0000 00       		.space	1
 642              		.section	.bss.parity.7585,"aw",%nobits
 643              		.set	.LANCHOR4,. + 0
 646              	parity.7585:
 647 0000 00       		.space	1
 648              		.section	.bss.prev_ms.7584,"aw",%nobits
 649              		.align	2
 650              		.set	.LANCHOR1,. + 0
 653              	prev_ms.7584:
 654 0000 00000000 		.space	4
 655              		.section	.bss.tail,"aw",%nobits
 656              		.set	.LANCHOR6,. + 0
 659              	tail:
 660 0000 00       		.space	1
 661              		.section	.rodata.amstrad,"a",%progbits
 662              		.align	2
 663              		.set	.LANCHOR0,. + 0
 666              	amstrad:
 667 0000 00       		.byte	0
 668 0001 00       		.byte	0
 669 0002 00       		.byte	0
 670 0003 6A       		.byte	106
 671 0004 00       		.byte	0
 672 0005 62       		.byte	98
 673 0006 00       		.byte	0
 674 0007 00       		.byte	0
 675 0008 00       		.byte	0
 676 0009 00       		.byte	0
 677 000a 00       		.byte	0
 678 000b 76       		.byte	118
 679 000c 00       		.byte	0
 680 000d 75       		.byte	117
 681 000e 69       		.byte	105
 682 000f 00       		.byte	0
 683 0010 00       		.byte	0
 684 0011 00       		.byte	0
 685 0012 00       		.byte	0
 686 0013 00       		.byte	0
 687 0014 00       		.byte	0
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 22


 688 0015 00       		.byte	0
 689 0016 00       		.byte	0
 690 0017 00       		.byte	0
 691 0018 00       		.byte	0
 692 0019 00       		.byte	0
 693 001a 00       		.byte	0
 694 001b 35       		.byte	53
 695 001c 00       		.byte	0
 696 001d 36       		.byte	54
 697 001e 37       		.byte	55
 698 001f 00       		.byte	0
 699 0020 00       		.byte	0
 700 0021 71       		.byte	113
 701 0022 34       		.byte	52
 702 0023 77       		.byte	119
 703 0024 65       		.byte	101
 704 0025 00       		.byte	0
 705 0026 72       		.byte	114
 706 0027 00       		.byte	0
 707 0028 00       		.byte	0
 708 0029 67       		.byte	103
 709 002a 00       		.byte	0
 710 002b 00       		.byte	0
 711 002c 0A       		.byte	10
 712 002d 00       		.byte	0
 713 002e 00       		.byte	0
 714 002f 00       		.byte	0
 715 0030 00       		.byte	0
 716 0031 61       		.byte	97
 717 0032 6F       		.byte	111
 718 0033 73       		.byte	115
 719 0034 70       		.byte	112
 720 0035 64       		.byte	100
 721 0036 66       		.byte	102
 722 0037 00       		.byte	0
 723 0038 00       		.byte	0
 724 0039 00       		.byte	0
 725 003a 6C       		.byte	108
 726 003b 5C       		.byte	92
 727 003c 00       		.byte	0
 728 003d 7A       		.byte	122
 729 003e 00       		.byte	0
 730 003f 00       		.byte	0
 731 0040 00       		.byte	0
 732 0041 6E       		.byte	110
 733 0042 6D       		.byte	109
 734 0043 3F       		.byte	63
 735 0044 3A       		.byte	58
 736 0045 00       		.byte	0
 737 0046 00       		.byte	0
 738 0047 00       		.byte	0
 739 0048 00       		.byte	0
 740 0049 00       		.byte	0
 741 004a 00       		.byte	0
 742 004b 20       		.byte	32
 743 004c 00       		.byte	0
 744 004d 00       		.byte	0
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 23


 745 004e 78       		.byte	120
 746 004f 00       		.byte	0
 747 0050 00       		.byte	0
 748 0051 00       		.byte	0
 749 0052 74       		.byte	116
 750 0053 00       		.byte	0
 751 0054 63       		.byte	99
 752 0055 00       		.byte	0
 753 0056 00       		.byte	0
 754 0057 00       		.byte	0
 755 0058 00       		.byte	0
 756 0059 00       		.byte	0
 757 005a 00       		.byte	0
 758 005b 68       		.byte	104
 759 005c 00       		.byte	0
 760 005d 79       		.byte	121
 761 005e 00       		.byte	0
 762 005f 00       		.byte	0
 763 0060 00       		.byte	0
 764 0061 00       		.byte	0
 765 0062 00       		.byte	0
 766 0063 00       		.byte	0
 767 0064 00       		.byte	0
 768 0065 00       		.byte	0
 769 0066 00       		.byte	0
 770 0067 00       		.byte	0
 771 0068 00       		.byte	0
 772 0069 00       		.byte	0
 773 006a 00       		.byte	0
 774 006b 33       		.byte	51
 775 006c 7F       		.byte	127
 776 006d 00       		.byte	0
 777 006e 00       		.byte	0
 778 006f 00       		.byte	0
 779 0070 00       		.byte	0
 780 0071 1B       		.byte	27
 781 0072 00       		.byte	0
 782 0073 32       		.byte	50
 783 0074 31       		.byte	49
 784 0075 30       		.byte	48
 785 0076 6B       		.byte	107
 786 0077 00       		.byte	0
 787 0078 00       		.byte	0
 788 0079 38       		.byte	56
 789 007a 00       		.byte	0
 790 007b 00       		.byte	0
 791 007c 00       		.byte	0
 792 007d 39       		.byte	57
 793 007e 00       		.byte	0
 794 007f 00       		.byte	0
 795 0080 00       		.byte	0
 796 0081 00       		.byte	0
 797 0082 00       		.byte	0
 798 0083 00       		.byte	0
 799 0084 00       		.byte	0
 800              		.text
 801              	.Letext0:
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 24


 802              		.file 3 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 803              		.file 4 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include\
 804              		.file 5 "Drivers/CMSIS/Include/core_cm3.h"
 805              		.file 6 "Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h"
 806              		.file 7 "Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h"
 807              		.file 8 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h"
 808              		.file 9 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h"
 809              		.file 10 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h"
 810              		.file 11 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h"
 811              		.file 12 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h"
 812              		.file 13 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include
 813              		.file 14 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include
 814              		.file 15 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\lib\\gcc\\arm-none-eab
 815              		.file 16 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include
 816              		.file 17 "c:\\program files (x86)\\gnu tools arm embedded\\7 2017-q4-major\\arm-none-eabi\\include
 817              		.file 18 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h"
 818              		.file 19 "Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h"
 819              		.file 20 "Inc/usbd_cdc_if.h"
 820              		.file 21 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h"
 821              		.file 22 "Inc/usb_device.h"
ARM GAS  X:\TMP\USER_T~1\cctmwY0a.s 			page 25


DEFINED SYMBOLS
                            *ABS*:00000000 main.c
X:\TMP\USER_T~1\cctmwY0a.s:16     .text.MX_GPIO_Init:00000000 $t
X:\TMP\USER_T~1\cctmwY0a.s:22     .text.MX_GPIO_Init:00000000 MX_GPIO_Init
X:\TMP\USER_T~1\cctmwY0a.s:144    .text.MX_GPIO_Init:000000ac $d
X:\TMP\USER_T~1\cctmwY0a.s:151    .text.scan_decode:00000000 $t
X:\TMP\USER_T~1\cctmwY0a.s:158    .text.scan_decode:00000000 scan_decode
X:\TMP\USER_T~1\cctmwY0a.s:175    .text.scan_decode:00000008 $d
X:\TMP\USER_T~1\cctmwY0a.s:180    .text.ps2interrupt:00000000 $t
X:\TMP\USER_T~1\cctmwY0a.s:187    .text.ps2interrupt:00000000 ps2interrupt
X:\TMP\USER_T~1\cctmwY0a.s:239    .text.ps2interrupt:00000040 $d
X:\TMP\USER_T~1\cctmwY0a.s:350    .text.ps2interrupt:000000c8 $d
X:\TMP\USER_T~1\cctmwY0a.s:362    .text.get_PS2scan_code:00000000 $t
X:\TMP\USER_T~1\cctmwY0a.s:369    .text.get_PS2scan_code:00000000 get_PS2scan_code
X:\TMP\USER_T~1\cctmwY0a.s:417    .text.get_PS2scan_code:0000002c $d
X:\TMP\USER_T~1\cctmwY0a.s:424    .text.SystemClock_Config:00000000 $t
X:\TMP\USER_T~1\cctmwY0a.s:431    .text.SystemClock_Config:00000000 SystemClock_Config
X:\TMP\USER_T~1\cctmwY0a.s:521    .text.main:00000000 $t
X:\TMP\USER_T~1\cctmwY0a.s:528    .text.main:00000000 main
X:\TMP\USER_T~1\cctmwY0a.s:597    .text.Error_Handler:00000000 $t
X:\TMP\USER_T~1\cctmwY0a.s:604    .text.Error_Handler:00000000 Error_Handler
X:\TMP\USER_T~1\cctmwY0a.s:666    .rodata.amstrad:00000000 amstrad
X:\TMP\USER_T~1\cctmwY0a.s:618    .bss.PS2buffer:00000000 $d
X:\TMP\USER_T~1\cctmwY0a.s:622    .bss.PS2buffer:00000000 PS2buffer
X:\TMP\USER_T~1\cctmwY0a.s:628    .bss.bitcount.7582:00000000 bitcount.7582
X:\TMP\USER_T~1\cctmwY0a.s:629    .bss.bitcount.7582:00000000 $d
X:\TMP\USER_T~1\cctmwY0a.s:634    .bss.head:00000000 head
X:\TMP\USER_T~1\cctmwY0a.s:635    .bss.head:00000000 $d
X:\TMP\USER_T~1\cctmwY0a.s:640    .bss.incoming.7583:00000000 incoming.7583
X:\TMP\USER_T~1\cctmwY0a.s:641    .bss.incoming.7583:00000000 $d
X:\TMP\USER_T~1\cctmwY0a.s:646    .bss.parity.7585:00000000 parity.7585
X:\TMP\USER_T~1\cctmwY0a.s:647    .bss.parity.7585:00000000 $d
X:\TMP\USER_T~1\cctmwY0a.s:649    .bss.prev_ms.7584:00000000 $d
X:\TMP\USER_T~1\cctmwY0a.s:653    .bss.prev_ms.7584:00000000 prev_ms.7584
X:\TMP\USER_T~1\cctmwY0a.s:659    .bss.tail:00000000 tail
X:\TMP\USER_T~1\cctmwY0a.s:660    .bss.tail:00000000 $d
X:\TMP\USER_T~1\cctmwY0a.s:662    .rodata.amstrad:00000000 $d
X:\TMP\USER_T~1\cctmwY0a.s:251    .text.ps2interrupt:0000004b $d
X:\TMP\USER_T~1\cctmwY0a.s:251    .text.ps2interrupt:0000004c $t

UNDEFINED SYMBOLS
HAL_GPIO_WritePin
HAL_GPIO_Init
HAL_NVIC_SetPriority
HAL_NVIC_EnableIRQ
HAL_GPIO_ReadPin
HAL_GetTick
HAL_RCC_OscConfig
HAL_RCC_ClockConfig
HAL_RCCEx_PeriphCLKConfig
HAL_Init
MX_USB_DEVICE_Init
CDC_Transmit_FS
