浏览代码

Unified diverging versions

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8072 8c9fc860-2736-0410-a75d-ab315db34111
negelef 7 年之前
父节点
当前提交
53b6d2e4ea
共有 2 个文件被更改,包括 10 次插入10 次删除
  1. 7 6
      source/BIOS.AMD64.Keyboard.Mod
  2. 3 4
      source/BIOS.I386.Keyboard.Mod

+ 7 - 6
source/BIOS.AMD64.Keyboard.Mod

@@ -99,10 +99,11 @@ VAR
 
 
 PROCEDURE TableUS(): ADDRESS;
 PROCEDURE TableUS(): ADDRESS;
 CODE {SYSTEM.AMD64}
 CODE {SYSTEM.AMD64}
-	LEA RAX, [RIP + L2 - L1];
+	CALL L1
 L1:
 L1:
-	LEAVE
-	RET
+	POP RAX
+	ADD RAX, L2 - L1
+	JMP DWORD L3
 L2:
 L2:
 		; alphabet
 		; alphabet
 	DB 1EH, 'a', 'A', 4H,	30H, 'b', 'B', 4H,	2EH, 'c', 'C', 4H,	20H, 'd', 'D', 4H
 	DB 1EH, 'a', 'A', 4H,	30H, 'b', 'B', 4H,	2EH, 'c', 'C', 4H,	20H, 'd', 'D', 4H
@@ -210,6 +211,7 @@ L2:
 	DB 57H, 0FBH, 0FFH, 0H	; F11
 	DB 57H, 0FBH, 0FFH, 0H	; F11
 	DB 58H, 0FCH, 0FFH, 0H	; F12
 	DB 58H, 0FCH, 0FFH, 0H	; F12
 	DB 0FFH
 	DB 0FFH
+L3:
 END TableUS;
 END TableUS;
 
 
 PROCEDURE TableFromFile(name: ARRAY OF CHAR): ADDRESS;
 PROCEDURE TableFromFile(name: ARRAY OF CHAR): ADDRESS;
@@ -510,8 +512,7 @@ END InitKeyboard;
 PROCEDURE SetLayout*(context : Commands.Context); (** KeyboardLayoutFile ~ *)
 PROCEDURE SetLayout*(context : Commands.Context); (** KeyboardLayoutFile ~ *)
 VAR layoutFilename : ARRAY 256 OF CHAR;
 VAR layoutFilename : ARRAY 256 OF CHAR;
 BEGIN {EXCLUSIVE}
 BEGIN {EXCLUSIVE}
-	IF (keyboard # NIL) THEN
-		context.arg.GetString(layoutFilename);
+	IF (keyboard # NIL) & context.arg.GetString(layoutFilename) THEN
 		table := TableFromFile(layoutFilename);
 		table := TableFromFile(layoutFilename);
 	ELSE
 	ELSE
 		context.error.String("Keyboard: No keyboard found."); context.error.Ln;
 		context.error.String("Keyboard: No keyboard found."); context.error.Ln;
@@ -543,4 +544,4 @@ Keyboard.Install ~
 Keyboard.SetLayout KeyCH.Bin ~
 Keyboard.SetLayout KeyCH.Bin ~
 Keyboard.SetLayout KeyUS.Bin ~
 Keyboard.SetLayout KeyUS.Bin ~
 
 
-System.Free Keyboard ~
+System.Free Keyboard ~

+ 3 - 4
source/BIOS.I386.Keyboard.Mod

@@ -102,7 +102,7 @@ CODE {SYSTEM.i386}
 	CALL L1
 	CALL L1
 L1:
 L1:
 	POP EAX
 	POP EAX
-	ADD EAX, DWORD L2-L1
+	ADD EAX, L2 - L1
 	JMP DWORD L3
 	JMP DWORD L3
 L2:
 L2:
 		; alphabet
 		; alphabet
@@ -512,8 +512,7 @@ END InitKeyboard;
 PROCEDURE SetLayout*(context : Commands.Context); (** KeyboardLayoutFile ~ *)
 PROCEDURE SetLayout*(context : Commands.Context); (** KeyboardLayoutFile ~ *)
 VAR layoutFilename : ARRAY 256 OF CHAR;
 VAR layoutFilename : ARRAY 256 OF CHAR;
 BEGIN {EXCLUSIVE}
 BEGIN {EXCLUSIVE}
-	IF (keyboard # NIL) THEN
-		context.arg.GetString(layoutFilename);
+	IF (keyboard # NIL) & context.arg.GetString(layoutFilename) THEN
 		table := TableFromFile(layoutFilename);
 		table := TableFromFile(layoutFilename);
 	ELSE
 	ELSE
 		context.error.String("Keyboard: No keyboard found."); context.error.Ln;
 		context.error.String("Keyboard: No keyboard found."); context.error.Ln;
@@ -545,4 +544,4 @@ Keyboard.Install ~
 Keyboard.SetLayout KeyCH.Bin ~
 Keyboard.SetLayout KeyCH.Bin ~
 Keyboard.SetLayout KeyUS.Bin ~
 Keyboard.SetLayout KeyUS.Bin ~
 
 
-System.Free Keyboard ~
+System.Free Keyboard ~