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

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
ORG $4000
A1=#3C
A2=#3E
A4=$42
AUXMOVE=$C3111
SETUP LDA #<VTOC
STA A1
LDA #>VTOC
STA A1+1
LDA #<END
STA A2
LDA #>END
STA A2+1
LDA #$B0
STA A4
LDA #$B0
STA A4
SEC
JMP AUXMOVE
DS 4

Тому, кто скажет, что это и откуда - ничего.

bormanb bormanb, (Updated )

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

Сборный / Говнокод #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 )

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

Сборный / Говнокод #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)