;  ASM code generated by mikroVirtualMachine for AVR - V. 4.0.0
;  Date/Time: 2009.01.03. 20:19:08
;  Info: http://www.mikroe.com


; ADDRESS	OPCODE	ASM
; ----------------------------------------------
$0000	$C00E		RJMP	pascalnokialcd_main
$000F		pascalnokialcd_main:
^pascalnokialcd.apas,86 :: 			begin
$000F	$E5CF		LDI	R28, 95
$0010	$BFCD		OUT	SPL, R28
$0011	$E0D1		LDI	R29, 1
$0012	$BFDE		OUT	SPH, R29
$0013	$E3C0		LDI	R28, 48
$0014	$E0D1		LDI	R29, 1
^pascalnokialcd.apas,87 :: 			nokia_init;
$0015	$D05A		RCALL	pascalnokialcd_nokia_init
^pascalnokialcd.apas,88 :: 			While true do
$0016		pascalnokialcd_L_30:
^pascalnokialcd.apas,90 :: 			write_dorc($f5);
$0016	$2FEC		MOV	R30, R28
$0017	$2FFD		MOV	R31, R29
$0018	$EF05		LDI	R16, 245
$0019	$9302		ST	-Z, R16
$001A	$2FCE		MOV	R28, R30
$001B	$2FDF		MOV	R29, R31
$001C	$D002		RCALL	pascalnokialcd_write_dorc
^pascalnokialcd.apas,91 :: 			end;
$001D	$CFF8		RJMP	pascalnokialcd_L_30
^pascalnokialcd.apas,94 :: 			end.
$001E		L_main_6:
$001E	$CFFF		RJMP	L_main_6
$001F		pascalnokialcd_write_dorc:
$001F	$9721		SBIW	R28, 1
^pascalnokialcd.apas,13 :: 			var i,data2:byte;
^pascalnokialcd.apas,15 :: 			for i:=8 downto 0 do
$0020	$E008		LDI	R16, 8
$0021	$8308		STD	Y+0, R16
$0022		pascalnokialcd_L_1:
^pascalnokialcd.apas,18 :: 			clearbit(portb,3);
$0022	$9000	0038	LDS	R0, PORTB
$0024	$EF07		LDI	R16, 247
$0025	$2200		AND	R0, R16
$0026	$BA08		OUT	PORTB, R0
^pascalnokialcd.apas,19 :: 			if ((data and $80)=0) then
$0027	$8009		LDD	R0, Y+1
$0028	$E800		LDI	R16, 128
$0029	$2C10		MOV	R1, R0
$002A	$2210		AND	R1, R16
$002B	$E000		LDI	R16, 0
$002C	$1610		CP	R1, R16
$002D	$F409		BRNE	L_write_dorc_1
$002E	$C001		RJMP	L_write_dorc_0
$002F		L_write_dorc_1:
$002F	$C006		RJMP	pascalnokialcd_L_6
$0030		L_write_dorc_0:
$0030		pascalnokialcd_L_5:
^pascalnokialcd.apas,21 :: 			clearbit(portb,2);
$0030	$9000	0038	LDS	R0, PORTB
$0032	$EF0B		LDI	R16, 251
$0033	$2200		AND	R0, R16
$0034	$BA08		OUT	PORTB, R0
^pascalnokialcd.apas,23 :: 			end
$0035	$C012		RJMP	pascalnokialcd_L_7
^pascalnokialcd.apas,24 :: 			else
$0036		pascalnokialcd_L_6:
^pascalnokialcd.apas,26 :: 			setbit(portb,2);
$0036	$9000	0038	LDS	R0, PORTB
$0038	$E004		LDI	R16, 4
$0039	$2A00		OR	R0, R16
$003A	$BA08		OUT	PORTB, R0
^pascalnokialcd.apas,27 :: 			delay_ms(20);
$003B	$E507		LDI	R16, 87
$003C		pascalnokialcd_L_10:
$003C	$E214		LDI	R17, 36
$003D		pascalnokialcd_L_9:
$003D	$E120		LDI	R18, $10
$003E		pascalnokialcd_L_8:
$003E	$952A		DEC	R18
$003F	$F7F1		BRNE	pascalnokialcd_L_8
$0040	$951A		DEC	R17
$0041	$F7D9		BRNE	pascalnokialcd_L_9
$0042	$950A		DEC	R16
$0043	$F7C1		BRNE	pascalnokialcd_L_10
$0044	$0000		NOP	
$0045	$E002		LDI	R16, 2
$0046		pascalnokialcd_L_11:
$0046	$950A		DEC	R16
$0047	$F7F1		BRNE	pascalnokialcd_L_11
^pascalnokialcd.apas,28 :: 			end;
$0048		pascalnokialcd_L_7:
^pascalnokialcd.apas,29 :: 			setbit(portb,3);
$0048	$9000	0038	LDS	R0, PORTB
$004A	$E008		LDI	R16, 8
$004B	$2A00		OR	R0, R16
$004C	$BA08		OUT	PORTB, R0
^pascalnokialcd.apas,32 :: 			data:=data shr 1;
$004D	$8009		LDD	R0, Y+1
$004E	$9406		LSR	R0
$004F	$8209		STD	Y+1, R0
^pascalnokialcd.apas,33 :: 			End;
$0050	$8018		LDD	R1, Y+0
$0051	$E000		LDI	R16, 0
$0052	$1610		CP	R1, R16
$0053	$F009		BREQ	L_write_dorc_3
$0054	$C001		RJMP	L_write_dorc_2
$0055		L_write_dorc_3:
$0055	$C006		RJMP	pascalnokialcd_L_4
$0056		L_write_dorc_2:
$0056		pascalnokialcd_L_2:
$0056	$8018		LDD	R1, Y+0
$0057	$E001		LDI	R16, 1
$0058	$2C01		MOV	R0, R1
$0059	$1A00		SUB	R0, R16
$005A	$8208		STD	Y+0, R0
$005B	$CFC6		RJMP	pascalnokialcd_L_1
$005C		pascalnokialcd_L_4:
$005C		pascalnokialcd_L_0:
^pascalnokialcd.apas,34 :: 			End;
$005C	$9622		ADIW	R28, 2
$005D	$2FEC		MOV	R30, R28
$005E	$2FFD		MOV	R31, R29
$005F	$9508		RET	
$0060		pascalnokialcd_write_cmd:
^pascalnokialcd.apas,44 :: 			Procedure write_cmd(cmd:byte);
^pascalnokialcd.apas,48 :: 			clearbit(portb,1);
$0060	$9000	0038	LDS	R0, PORTB
$0062	$EF0D		LDI	R16, 253
$0063	$2200		AND	R0, R16
$0064	$BA08		OUT	PORTB, R0
^pascalnokialcd.apas,49 :: 			write_dorc(cmd);
$0065	$2FEC		MOV	R30, R28
$0066	$2FFD		MOV	R31, R29
$0067	$8008		LDD	R0, Y+0
$0068	$9202		ST	-Z, R0
$0069	$2FCE		MOV	R28, R30
$006A	$2FDF		MOV	R29, R31
$006B	$DFB3		RCALL	pascalnokialcd_write_dorc
$006C		pascalnokialcd_L_13:
^pascalnokialcd.apas,50 :: 			End;
$006C	$9621		ADIW	R28, 1
$006D	$2FEC		MOV	R30, R28
$006E	$2FFD		MOV	R31, R29
$006F	$9508		RET	
$0070		pascalnokialcd_nokia_init:
^pascalnokialcd.apas,59 :: 			Procedure nokia_init;
^pascalnokialcd.apas,62 :: 			ddrb:=$FF;
$0070	$EF0F		LDI	R16, 255
$0071	$BB07		OUT	DDRB, R16
^pascalnokialcd.apas,63 :: 			portb:=$00;
$0072	$E000		LDI	R16, 0
$0073	$BB08		OUT	PORTB, R16
^pascalnokialcd.apas,64 :: 			setbit(portb,1);
$0074	$9000	0038	LDS	R0, PORTB
$0076	$E002		LDI	R16, 2
$0077	$2A00		OR	R0, R16
$0078	$BA08		OUT	PORTB, R0
^pascalnokialcd.apas,67 :: 			delay_ms(200);
$0079	$E70B		LDI	R16, 123
$007A		pascalnokialcd_L_22:
$007A	$EF1F		LDI	R17, 255
$007B		pascalnokialcd_L_21:
$007B	$E120		LDI	R18, $10
$007C		pascalnokialcd_L_20:
$007C	$952A		DEC	R18
$007D	$F7F1		BRNE	pascalnokialcd_L_20
$007E	$951A		DEC	R17
$007F	$F7D9		BRNE	pascalnokialcd_L_21
$0080	$950A		DEC	R16
$0081	$F7C1		BRNE	pascalnokialcd_L_22
$0082	$0000		NOP	
$0083	$E005		LDI	R16, 5
$0084		pascalnokialcd_L_23:
$0084	$950A		DEC	R16
$0085	$F7F1		BRNE	pascalnokialcd_L_23
^pascalnokialcd.apas,68 :: 			clearbit(portb,0);
$0086	$9000	0038	LDS	R0, PORTB
$0088	$EF0E		LDI	R16, 254
$0089	$2200		AND	R0, R16
$008A	$BA08		OUT	PORTB, R0
^pascalnokialcd.apas,69 :: 			delay_ms(500);
$008B	$E504		LDI	R16, 84
$008C		pascalnokialcd_L_26:
$008C	$E31E		LDI	R17, 62
$008D		pascalnokialcd_L_25:
$008D	$EF2F		LDI	R18, $FF
$008E		pascalnokialcd_L_24:
$008E	$952A		DEC	R18
$008F	$F7F1		BRNE	pascalnokialcd_L_24
$0090	$951A		DEC	R17
$0091	$F7D9		BRNE	pascalnokialcd_L_25
$0092	$950A		DEC	R16
$0093	$F7C1		BRNE	pascalnokialcd_L_26
$0094	$0000		NOP	
$0095	$E001		LDI	R16, 1
$0096		pascalnokialcd_L_27:
$0096	$950A		DEC	R16
$0097	$F7F1		BRNE	pascalnokialcd_L_27
^pascalnokialcd.apas,70 :: 			setbit(portb,0);
$0098	$9000	0038	LDS	R0, PORTB
$009A	$E001		LDI	R16, 1
$009B	$2A00		OR	R0, R16
$009C	$BA08		OUT	PORTB, R0
^pascalnokialcd.apas,74 :: 			setbit(portb,0);
$009D	$9000	0038	LDS	R0, PORTB
$009F	$2A00		OR	R0, R16
$00A0	$BA08		OUT	PORTB, R0
^pascalnokialcd.apas,75 :: 			write_cmd($21);
$00A1	$2FEC		MOV	R30, R28
$00A2	$2FFD		MOV	R31, R29
$00A3	$E201		LDI	R16, 33
$00A4	$9302		ST	-Z, R16
$00A5	$2FCE		MOV	R28, R30
$00A6	$2FDF		MOV	R29, R31
$00A7	$DFB8		RCALL	pascalnokialcd_write_cmd
^pascalnokialcd.apas,76 :: 			write_cmd($C5);
$00A8	$2FEC		MOV	R30, R28
$00A9	$2FFD		MOV	R31, R29
$00AA	$EC05		LDI	R16, 197
$00AB	$9302		ST	-Z, R16
$00AC	$2FCE		MOV	R28, R30
$00AD	$2FDF		MOV	R29, R31
$00AE	$DFB1		RCALL	pascalnokialcd_write_cmd
^pascalnokialcd.apas,77 :: 			write_cmd($06);
$00AF	$2FEC		MOV	R30, R28
$00B0	$2FFD		MOV	R31, R29
$00B1	$E006		LDI	R16, 6
$00B2	$9302		ST	-Z, R16
$00B3	$2FCE		MOV	R28, R30
$00B4	$2FDF		MOV	R29, R31
$00B5	$DFAA		RCALL	pascalnokialcd_write_cmd
^pascalnokialcd.apas,78 :: 			write_cmd($13);
$00B6	$2FEC		MOV	R30, R28
$00B7	$2FFD		MOV	R31, R29
$00B8	$E103		LDI	R16, 19
$00B9	$9302		ST	-Z, R16
$00BA	$2FCE		MOV	R28, R30
$00BB	$2FDF		MOV	R29, R31
$00BC	$DFA3		RCALL	pascalnokialcd_write_cmd
^pascalnokialcd.apas,79 :: 			write_cmd($20);
$00BD	$2FEC		MOV	R30, R28
$00BE	$2FFD		MOV	R31, R29
$00BF	$E200		LDI	R16, 32
$00C0	$9302		ST	-Z, R16
$00C1	$2FCE		MOV	R28, R30
$00C2	$2FDF		MOV	R29, R31
$00C3	$DF9C		RCALL	pascalnokialcd_write_cmd
^pascalnokialcd.apas,82 :: 			write_cmd($0C);
$00C4	$2FEC		MOV	R30, R28
$00C5	$2FFD		MOV	R31, R29
$00C6	$E00C		LDI	R16, 12
$00C7	$9302		ST	-Z, R16
$00C8	$2FCE		MOV	R28, R30
$00C9	$2FDF		MOV	R29, R31
$00CA	$DF95		RCALL	pascalnokialcd_write_cmd
$00CB		pascalnokialcd_L_19:
^pascalnokialcd.apas,84 :: 			end;
$00CB	$9508		RET	
