Сборный / Говнокод #28114 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
.set XSIZE 96h
.set YSIZE 68h
.org {11h * 2h}
dw @vbi
.org 80h
.include "stdvideo.inc"
process:
	mov %cl YSIZE
	.loopy:
		mov %ch XSIZE
		.loopx:
			call @processCell
			loop %ch @.loopx 
		loop %cl @.loopy
	ret
processCell:
	mov %d 0h
	mov %bl 3h
	.loopy:
		mov %bh 3h
		.loopx:
			mov %e %c
			add %e %b 
			sub %e 0202h
			cmp %e %c
			ce jmp @.xskip
			push %e
			mov %bp %sp
			call @index2rel
			pop %e
			cmpb [%e + @data] 0h
			cg inc %d
			.xskip:
			loop %bh @.loopx
		loop %bl @.loopy
	push %c
	mov %bp %sp
	call @index2rel
	pop %e
	mov %al [%e + @data]
	movb [%e + @ndata] 0h
	cmp %al 0h
	cz jmp @.dead
		cmp %d 2h
		cl ret
		cmp %d 3h
		cg ret
		movb [%e + @ndata] 1h
	ret
	.dead:
		cmp %d 3h
		ce movb [%e + @ndata] 1h
	ret
fill:
	mov %c {XSIZE * YSIZE}
	.loop:
		mov %b %c
		mod %b 100h
		div %b 8h
		add %b 80h
		mov %al [%b]
		mov %b %c
		mod %b 8h
		mov %e 1h
		shl %e %b
		and %al %el
		cnz movb [%c + @data] 1h
		loop %c @.loop
	ret
render:
 	call @clsm1
	mov %cl YSIZE 
	.loopy:
		mov %ch XSIZE
		.loopx:
			push %c
			mov %bp %sp
			call @index2rel
			pop %e
			cmpb [%e + @data] 1h
			cge push %c
			cge call @setpixelm1
			cge pop
			loop %ch @.loopx
		loop %cl @.loopy
	ret
vbi:
	cli
	call @render
	call @process
	mov %c {XSIZE * YSIZE}
	.loop:
		movb [%c + @data] [%c + @ndata]
		loop %c @.loop
	rei
T1:
.org {3AAAh + @T1}
data:
.org {XSIZE * YSIZE + @data}
ndata:

https://pastebin.com/6gm30JWR
https://imgur.com/a/uSzbrgZ

игра конвея теперь и на pvc-16!

kcalbCube kcalbCube, (Updated )

Комментарии (27, +27)

Сборный / Говнокод #28099 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
.org 80h
src: db "++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+."
table:
	db 0h db 3Eh dw @i1
	db 0h db 3Ch dw @i2
	db 0h db 2Bh dw @i3
	db 0h db 2Dh dw @i4
	db 0h db 5Dh dw @i5
	db 0h db 2Eh dw @i6
	db 0h db 5Bh dw @i7
start: ; %a iptr %b dptr ;
	.loop:
		mov %cl [%a + @src]
		cmp %cl 0h
		je @.loop.break
		mov %si 0h
		.tloop:
			mov %ch [4h * %si + {@table + 1h}]
			cmp %cl %ch
			jne @.tloop.continue
				push @.tloop.break
				mov %ip [4h * %si + {@table + 2h}]
			.tloop.continue:
			inc %si
			cmp %si 8h
			jl @.tloop
			.tloop.break:
		inc %a
		jmp @.loop
		.loop.break: 
	int 0h
i1: ; > ; 
	inc %b ret
i2: ; < ; 
	dec %b ret
i3: ; + ;
	push %el
	mov %el [%b + @data]
	inc %el
	mov [%b + @data] %el
	pop %el
	ret
i4: ; - ;
	push %el
	mov %el [%b + @data]
	dec %el
	mov [%b + @data] %el
	pop %el
	ret
i5: ; ] ;
	push %c
	mov %cl [%b + @data]
	cmp %cl 0h
	je @.loop.break
	mov %c 0h
	dec %a
	.loop:
		cmpb [%a + @src] 5Dh ; ']' ;
		jne @.loop.1
			inc %c
		.loop.1:
		cmpb [%a + @src] 5Bh ; '[' ;
		jne @.loop.2
			cmp %c 0h
			jz @.loop.break
			dec %c
		.loop.2:
		loop %a @.loop
	.loop.break:
	pop %c
	ret
i6: ; . ;
	push %cl
	outb E9h [%b + @data]
	.wait:
		inb %cl E9h
		cmp %cl 0h
		jne @.wait
	pop %cl
	ret
i7: ; [ ;
	push %c
	mov %c [%b + @data]
	cmp %c 0h
	jne @.loop.break
	mov %c 0h
	.loop:
		cmpb [%a + @src] 5Bh ; '[' ;
		jne @.loop.1
			inc %c
		.loop.1:
		cmpb [%a + @src] 5Dh ; ']' ;
		jne @.loop.2
			cmp %c 0h
			jz @.loop.break
				dec %c
		.loop.2:
		inc %a
		jmp @.loop
	.loop.break: pop %c ret

Hello World!

kcalbCube kcalbCube, (Updated )

Комментарии (15, +15)

Сборный / Говнокод #28098 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
.org {5h * 2h}
dw @int5

.org 30h
data:
	db "10"

.org 80h
start:
	mov %sp FFFFh
	mov %al {3h * 2h}
	int 5h
	int 0h

int5:
	push %a
	mov %ah [{@data + 1h}]
	add %al %ah
	outb E9h %al
	.wait:
		inb %al E9h
		cmp %al 0h
		jne @.wait
	pop %a
	rei

встречайте новую фичу

kcalbCube kcalbCube, (Updated )

Комментарии (25, +25)

Сборный / Говнокод #28094 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
vbi:
	mov %al [<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="596d1977342a3c2d">[email protected]</a>]
	inc %al
	mov [<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d8ec98f6b5abbdac">[email protected]</a>] %al
	.mset: memset [@T1] 3A98h 0h
	rei

kcalbCube kcalbCube, (Updated )

Комментарии (7, +7)

Сборный / Говнокод #28059 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
.org 80h
inc:
	push %bp
	mov %bp %sp
	sub %sp 0010h
	mov [%bp + FFFEh] %sp
	mov [%bp + FFFCh] %b
	lea %a [%bp + FFFCh]
	mov %a [%a]
	push %a
	inc %a
	pop %si
	mov [%si] %a
	jmp @.return.inc
.return.inc:
	mov %sp %bp
	pop %bp
	ret
main:
	push %bp
	mov %bp %sp
	sub %sp 0010h
	mov [%bp + FFFCh] %sp
	memset [%bp + FFFEh] 0002h 0h
	lea %a [%bp + FFFEh]
	push %a
	mov %a 0000h
	pop %si
	mov [%si] %a
.L.begin.1:
	mov %a 0001h
	cmp %a 0h
	jz @.0
	lea %a [%bp + FFFEh]
	push %a
	pop %b
	call @inc
	push %a
	mov %a 0050h
	pop %si
	cmp %si %a
	jgz @.compare3
	mov %al 1h
	.compare3:
	mov %ah 0h
	cmp %a 0h
	jz  @.else.2
	jmp @.0
	jmp @.end.2
.else.2:
.end.2:
.1:
	jmp @.L.begin.1
.0:
.return.main:
	mov %sp %bp
	pop %bp
	ret
start:
	mov %sp FFFFh
	call @main
.return.start:
	int 0h

<-------------------->

short inc(short* i)
{
	return ++(*i);
}

void main(void)
{
	short i = 0s;
	while(1) 
	{
		if(inc(&i) > 0x50)
			break;
	}
}

void start(void)
{
	asm("mov %sp FFFFh");
	main();
}

да что вы знаете о неоптимизированном коде

kcalbCube kcalbCube, (Updated )

Комментарии (0)

Сборный / Говнокод #28024 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
; %ch - x1, %cl - y1, %dh - x2, %dl - y2 ;
drawline:
	push %a
	push %b
	push %c
	push %d
	push %e
	
	mov %al %dh
	sub %al %ch
	call @abs
	mov %ah %al ; ah - dX ;
	
	mov %al %dl
	sub %al %cl
	call @abs
	neg %al ; al - -dY ;
	
	mov %bh FFh ; bh - signX;
	mov %bl FFh ; bl - signY ;
	
	cmp %ch %dh
	jgz @.S1
	neg %bh
	.S1:
	
	cmp %cl %dl
	jgz @.S2
	neg %bl
	.S2:
	
	mov %el %ah
	add %el %al ; el - error ;
	
	push %d
	call @drawpixel
	pop %d
	 
	.loop:
		cmp %ch %dh
		jnz @.L1
		cmp %cl %dl
		jnz @.L1
		jmp @.loop_end
		.L1:
		
		push %c
		call @drawpixel
		pop %c

		mov %eh %el
		
		cmp %eh %al
		jng @.L2
			add %el %al
			add %ch %bh
		.L2: 
		cmp %eh %ah
		jgz @.loop
			add %el %ah
			add %cl %bl
		jmp @.loop
		
	.loop_end:
	
	pop %e
	pop %d
	pop %c
	pop %b
	pop %a
	ret

https://pastebin.com/k8697fae

алгоритм брезенхема.

результат: https://imgur.com/a/c1twuNt

забавно что посреди тестов программа выдала красивые такие кривые на весь экран. с.м. имгур, приложил.

kcalbCube kcalbCube, (Updated )

Комментарии (151, +151)

Сборный / Говнокод #28011 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
.org 22h
dw @vbi

.org 80h
bpos: db 0h 0h
vector: db 2h 1h

process:
	push %a
	push %b
	mov %a [@bpos] ; {h:x, l:y} ;
	mov %b [@vector] ; {h:dx, l:dy} ;
	add %ah %bh
	add %al %bl
	cmp %ah 11h
	jng @.skip_xoverflow_handle
	cmp %ah 14h
	jg @.overflow_left
	mov %ah 11h
	jmp @.xoverflow_finally
	.overflow_left:
		mov %ah 0h
	.xoverflow_finally:
		neg %bh
	.skip_xoverflow_handle:
	cmp %al 5Ch
	jng @.skip_yoverflow_handle
	cmp %al 60h
	jg @.overflow_up
	mov %al 5Bh
	jmp @.yoverflow_finally
	.overflow_up:
		mov %al 1h
	.yoverflow_finally:
		neg %bl
	.skip_yoverflow_handle:
	mov [@bpos] %a
	mov [@vector] %b
	pop %b
	pop %a
	ret
	
cls:
	push %a
	push %b
	mov %a 3A98h
	
	.loop:
		mov [%a + @T1] 0000h
		sub %a 2h
		jnz @.loop 
	pop %b
	pop %a
	ret

render:
	push %a
	push %b
	push %c

	mov %a [@bpos]  ; {h:x, l:y} ;
	mov %b %al
	mul %b 12h
	add %b %ah
	add %b @T1
	
	mov %c 8h
	.loop:
		movb [%b] FFh
		add %b 12h
		dec %c
		jnz @.loop
	
	pop %c
	pop %b
	pop %a
	ret	

start:
	mov %sp FFFFh
	outb 20h 1h
	outb 21h 16h
	out  22h @T1
	
	mov %al 1h
	int 10h
	
	.loop:
		jmp @.loop

vbi:
	call @cls
	call @render
	call @process
	ret

.org 1000h
T1:

решил пойти по накатанному пути и добавил видеоконтроллер, пока только монохромная битовая карта 144x100, но большего и не надо
сабж выводит на экран что отпрыгивает от стен, простое умножение компонента вектора на -1

digitalEugene digitalEugene, (Updated )

Комментарии (71, +71)

Сборный / Говнокод #28007 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
.org 80h
data:
	db "Hello, world!\n"
	
wait:
	.loop:
		inb %cl E9h
		cmp %cl 0h
		jnz @.loop
	ret
		
start:
	mov %sp 300h
	.loop:
		mov %al [%b + @data]
		inc %b
		outb E9h %al
		call @wait
		cmp %al Ah
		jnz @.loop
	int 0h

забацал port-mapped io, работает в отдельном потоке
sudo bormand

digitalEugene digitalEugene, (Updated )

Комментарии (19, +19)

Сборный / Говнокод #27992 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
.org 80h
data:
	db "Hello, world!\n"
	db 0h
start:
	mov %bp @data
	; jmp @.exit ;
	.loop:
		mov %al [%si + %bp]
		inc %si
		cmp %al 0h
		int 5h ;KOKOKO make me port-mapped io;
		jnz @.loop
	.exit:
		int 0h


32 31 44 41 54 41 3A 30 30 38 30 3B 53 54 41 52 
54 3A 30 30 38 45 3B 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 48 65 6C 6C 6F 20 77 6F 72 
6C 64 21 0A 00 02 06 80 00 03 0A 38 09 05 0C 0A
00 00 0B 05 0F 92 00 0B 00

добавил комментарии, теперь можно будет красиво рисовать фреймы (радуйтесь)

digitalEugene digitalEugene, (Updated )

Комментарии (1, +1)

Сборный / Говнокод #27966 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
.org 80h
fib:
	push %b
	push %d
	push %c
	mov %d [%sp + 8h]
	mov %b 1h
	mov %a 0h
	
	.loop:
		add %b %a
		mov %c %a
		mov %a %b
		sub %a %c
		dec %d
		jnz @.loop
	
	pop %c
	pop %d
	pop %b
	ret

start:
	mov %sp 2000h
	push Fh
	call @fib
	pop

	int 0h

один чел захотел написать для моей вмки компилятор лиспоподобного языка с некими S-выражениями и попросил пример вычисления ряда фибоначчи.
пришлось накопипастить с вики.

digitalEugene digitalEugene, (Updated )

Комментарии (5, +5)